\chapter{硬件设计}

\section{信号放大电路}

在光电探测系统中，探测器输出的电信号非常微弱，一般为毫伏级。为记录每一次打靶的结果，信号放大与处理电路是打靶系统中不可或缺的。在探测器上直接进行信号处理十分困
难，一种常用的解决办法是在探测器后接前置放大器，用来放大探测器的输出信号，然后成
功地传输到信号处理系统的有关电路部分。前置放大器的设计要求是低噪声，高增益，低输
出阻抗，大的动态范围，和较好的抗噪声能力。

在激光打靶系统中，对光电池产生的脉冲信号的具体大小值要求不高，只需检测出有效的脉
冲信号，因此可选用集成运放来组成运算放大电路。

通过测试，得到光电探测器对的激光脉冲的响应幅度典型值约为$\qty5\mV$，若激光击中
在两块或多块探测器边界处，则任何一块光电探测器的响应幅度会减少，因此所检测的脉冲
幅度范围大约是$\num3\sim\qty5\mV$.为使每块光电探测器均能检测出信号，使之达到
TTL 电平要求，实现信号检测，必须对信号放大约 1000 倍。单级运放难以达到这么高的
放大倍数，因此采用二级运放进行放大，第一级为前置放大器。为减少前级放大器的偏移对
后级放大器的影响，设计其放大倍数$A_1=100$；从而次级放大器的放大倍数$A_2=10$。

\subsection{集成运算放大器（LM324）}

集成运算放大器是实现高增益放大功能的一种集成器件\cite{cn9}，早期主要用来实现对模拟量进行
数学运算的功能，目前随着器件性能的改进，它已成为通用的增益器件，应用范围非常广泛。

从电特性来看，集成运放接近理想的电压放大器件，它不仅有很大的输入电阻和很小的输出
电阻，而且还有很高的电压增益，此外，静态工作时，它的输入和输出电位均为零，这样，
在与其它集成运放连接时，就不需要考虑它们之间的电平配置问题。

LM324 是四通道的低功耗运算放大器，它的内部包含四组形式完全相同的运算放大器，除电
源共用外，四组运放相互独立，其性能参数有以下几个方面：

\begin{enumerate}
  \item 单电源工作方式，工作电平$\qty3\V\sim\qty{30}\V$
  \item 低消耗电流：约$\qty{0.8}\mA$
  \item 低输入偏移：输入电压偏移：$\qty3\mV$（Typ）；输入电流偏移：$\qty2\nA$（Typ）
  \item 开环增益：$\qty{100}\V/\unit\mV=\qty{100}\dB$（Typ）
  \item 宽响应频带
\end{enumerate}

\newpage
\begin{figure}[htbp]
  \centering
  \includegraphics[width = .595\linewidth]{image-0162}
  \caption{LM324内部结构}
  \label{4-1}
\end{figure}

\subsection{放大电路图}

\begin{figure}[htbp]
  \centering
  \includegraphics[width = .93\linewidth]{image-0163}
  \caption{运算放大器电路图}
  \label{4-2}
\end{figure}

放大器电路如\cref{4-2} 所示。它由两级结构相同的同相放大器组成，集成放大器选用
LM324（\cref{4-1}）。信号经隔直流电容C1从第一级放大器的正端
``\ensuremath+''输入，经过放大后输出，再经过级间耦合电容C2输入第二级放大器
的正端。前级的放大倍数$A_1=R_2/R_1=100$，后级的放大倍数$A_2=R_6/R_5=10$，
$R_3$和$R_7$为输入匹配电阻。

\subsection{电路原理}

\begin{enumerate}
  \item 同相放大器\cite{cn10}（\cref{4-3}）
  
  集成运放是一种十分理想的增益器件，性能好，使用方便。该电路采用 2 级放大器级
  联，每级的放大器均采用同相放大。

  由集成运放构成的同相放大器，其特点是输入信号加在同相输入端，而反馈信号加在反相端。根据理想化条件，由于$v_+=v_s$，因而$v_-\approx v_s$。更具$i\to0$（虚断），$v_-$又是$v_o$在$R_1$上的分压值，即：
  \begin{equation}
    v_-=v_o\frac{R_1}{R_1+R_f}
  \end{equation}
  因而，放大器的增益：
  
  \begin{equation}
    A_{Vf}=\frac{v_o}{v_s}=\frac{R_1+R_f}{R_1}=1+\frac{R_f}{R_1}
  \end{equation}
  $\because A_{Vf}>0$，所以$v_o$与$v_s$同相。
  
  \begin{figure}[htbp]
    \centering
    \includegraphics[width = .54\linewidth]{image-0236}
    \caption{同相放大器}
    \label{4-3}
  \end{figure}
  \item 外围电路
  
  光电传感器对外部光线也有响应，因此必须滤除这种干扰。由于背景光线是持续信号，其
  响应主要是直流量，在第一级放大器输入端的前面设计接入一个$\qty1\uF$电容C1起到
  隔离直流作用，能起到很好的效果。第二级的$\qty1\uF$电容C2用于两级放大器的耦合。

  第一级放大器输入端和地之间接 R3；第二级放大器输入端和地之间接 R7。使得：
  \begin{equation}
    \begin{cases}
      R_3\approx R_1//R_2\\
      R_7\approx R_5//R_6
    \end{cases}
  \end{equation}
  这样，运放的正、负输入端对地的等效电阻相等，从而降低运放的电压偏移。
\end{enumerate}

\subsection{电路参数}

\begin{enumerate}
  \item \makebox[9em][l]{输入脉冲幅度：} $U_i\approx\num3\sim\qty5\mV$
  \item \makebox[9em][l]{输入电阻：} $R_i\approx\qty{10}\kohm$
  \item \makebox[9em][l]{输出电阻：} $R_o\approx\qty1\kohm$
  \item \makebox[9em][l]{放大倍数：} $A=A_1\cdot A_2\approx10\times100=1000$
  \item \makebox[9em][l]{放大器级数：} 两级，前级$A_1\approx100$；后级$A_2\approx10$
  \item \makebox[9em][l]{耦合方法：} 电容耦合
\end{enumerate}

\clearpage
\vspace*{-1.5em}
\section{整形电路\cite{cn11}}

光电池的输出脉冲并不是规则的矩形脉冲信号，而是类似升余弦信号。再经放大后也会产生
失真，因此必须对信号进行整形。采用常用的 CD4093 施密特触发器便可实现整形功能，改
善脉冲波形，确保后续编码器的正常编码。

施密特触发器不仅可以进行波形整形，它的迟滞特性还可以有效地克服噪声和干扰的影响，只要噪声和干扰的大小处在迟滞宽度内，就不会有错误的输出。施密特触发器属于电平触
发，对于缓慢变化的信号仍然适用，当输入信号达到阈值电压时，电路状态发生转换，通过
电路内部的正反馈过程使得输出电压的波形的边沿变得很陡峭。利用施密特触发器可以实现
有效脉冲的识别见\cref{4-5}。

\begin{figure}[htbp]
  \centering
  \includegraphics[width = .65\linewidth]{image-0284}
  \caption{施密特触发器的电压传输特性 (a) 同相输出；(b) 反相输出}
  \label{4-4}
\end{figure}

\begin{figure}[htbp]
  \centering
  \includegraphics[width = .95\linewidth]{image-0285}
  \caption{利用施密特触发器实现有效脉冲的识别}
  \label{4-5}
\end{figure}

\section{编码电路\cite{cn11}}

对于 38 路信号通道，必须对其进行编码以便于信号识别和传输。38 路信号按照设计方案
编码为 1--38 号，脱靶无信号记为 0 号。对多个探测器同时接收到信号的情况，对应于
探测器的码号就是取码号大的探测器为有效，采用优先编码器便可实现编码的优先选择。

商用的单个优先编码器的编码输入最多只有 8 路，要构成更多路的优先编码
器，可以采用 6 片 8-3 优先编码器进行扩展为 40-6 优先编码器。

\subsection{编码电路图}

\begin{figure}[htbp]
  \centering
  \includegraphics[width = .96\linewidth]{image-0289}
  \caption{40-6 优先编码器电路图}
  \label{4-6}
\end{figure}

\subsection{电路原理}

\begin{enumerate}
  \item 优先编码器（74HC148）
  
  8-3 线优先编码器的功能表如\cref{4-7}。待编码的 8 条输入线 采用 8 中取 1 
  码，逻辑 0 有效，编码后的输出 用反码表示。可以看出，编码器是以输入为 0 的最高
  优先编码的，而低位若同时输入 0，则是无意义的。此外，电路还设有选通输入，即使能
  端 EI，它也是逻辑 0 有效；输出还设有允许输出端 Eo 及允许扩展端 Gs，利用它们
  可判断出 是否有效，以及是否允许扩展编码。根据真值表，写出编码器的逻辑表达式如下：
  \begin{equation}
    \begin{aligned}
      \overline{A_2}&=\overline{EI}\cdot I_7+\overline{EI}\cdot I_7\cdot I_6\cdot\overline{I_5}+\overline{EI}\cdot I_7\cdot I_6\cdot I_5\cdot\overline{I_4}\\
      &=\overline{EI}(\overline{I_7}+I_7\overline{I_6}+I_7I_6I_5\overline{I_4})=\overline{EI}(\overline{I_7}+\overline{I_6}+\overline{I_5}+\overline{I_4})
    \end{aligned}
  \end{equation}
  故：
  \begin{equation}
    A_2=\overline{\overline{EI}(\overline{I_7}+\overline{I_6}+\overline{I_5}+\overline{I_4})}
  \end{equation}
  同理：
  \begin{gather}
    A_1=\overline{\overline{EI}(\overline{I_7}+\overline{I_6}+I_5I_4\overline{I_3}+I_5I_4I_2)}\\
    A_0=\overline{\overline{EI}(\overline{I_7}+I_6\overline{I_5}+I_6I_4\overline{I_3}+I_6I_4I_2\overline{I_1})}
  \end{gather}
  而允许输出为：
  \begin{equation}
    E_OE_0=\overline{\overline{EI}\cdot I_7I_6I_5I_4I_3I_2I_1I_0}
  \end{equation}
  允许扩展端是：
  \begin{equation}
    Gs=EI+\overline{EI}\cdot I_7\;I_6\;I_5\;I_4\;I_3\;I_2\;I_1\;I_0=\overline{\overline{EI}\cdot E_O}
  \end{equation}

  \begin{table}[htbp]
    \centering\scriptsize
    \renewcommand\arraystretch{1.12}
    \begin{tabular}{|>{\centering\arraybackslash\sffamily}p{.04\linewidth}|*{8}{>{\centering\arraybackslash\sffamily}p{.04\linewidth}}|*{3}{>{\centering\arraybackslash\sffamily}p{.04\linewidth}}|*{2}{>{\centering\arraybackslash\sffamily}p{.04\linewidth}}|}
      \hline
      \multicolumn{9}{|>{\sffamily\bfseries}c|}{INPUTS} & \multicolumn{5}{>{\sffamily\bfseries}c|}{OUTPUTS}\\
      \hline
      EI & 0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & A2 & A1 & A0 & GS & EO\\
      \hline
      H & X & X & X & X & X & X & X & X & H & H & H & H & H\\
      L & H & H & H & H & H & H & H & H & H & H & H & H & L\\
      L & X & X & X & X & X & X & X & L & L & L & L & L & H\\
      L & X & X & X & X & X & X & L & H & L & L & H & L & H\\
      L & X & X & X & X & X & L & H & H & L & H & L & L & H\\
      L & X & X & X & X & L & H & H & H & L & H & H & L & H\\
      L & X & X & X & L & H & H & H & H & X & L & L & L & H\\
      L & X & X & L & H & H & H & H & H & X & L & H & L & H\\
      L & X & L & H & H & H & H & H & H & X & H & L & L & H\\
      L & L & H & H & H & H & H & H & H & X & H & H & L & H\\
      \hline
    \end{tabular}
    \caption{8-3 线优先编码器真值表（74HC148）}
    \label{4-7}
  \end{table}
  \item 8-3 线优先编码器扩展为 40-6 线优先编码器（\cref{4-6}）
  
  5 片 74HC148 并排用作输入，其输入从低位片到高位片排列为
  $I_0\sim I_{39}$ 。每一个高位片的输出允许端 Eo 接其相对低位片的使能端 EI。这样，当总使能$\text{EI}=0$时，允许电路进行编码工作，若高位片的诸输入中有一
  个为$0$时，该片的 $\text{Eo}=1$，$\text{Gs}=0$，这样就禁止了低位片的编
  码，以此类推，5 片 74HC148 的输入端编码便具有了优先性。

  5 片 74HC148 的允许扩展端 Gs 按低位片至高位片的顺序分别接到第六片74HC148
  的$I_0$、$I_1$、$I_2$、$I_3$、$I_4$输入端，而$I_5$、$I_6$、$I_7$端则接
  高电平（表示无输入）。这样第六片 74HC148 的三位输出便表示整个 40-6 线优先编
  码器的高三位$A_5$、$A_4$、$A_3$。而 40-6 线优先编码器的低三位输出$A_2$、$A_1$、$A_0$与前 5 片 74HC148 的输出端一致。

  由于 74HC148 的输出端不是三态门，不能直接连接在一起。而把 5 片 74HC148的同
  名输出端接到 74LS30（8 输入的与非门）取与非便可以解决这个问题。同时输出取反，
  输出为逻辑 1 有效。为使高三位输出与低三位输出一致，用 CD4049反相器对高三位取
  反。
  
  40-6 线优先编码器的六个输出均为逻辑 1 有效，可以接到后续的 2051 单片机进行串
  行传输。
\end{enumerate}

\section{串行传送}

为实现将编码器输出的 6 位并行信号串行传送，同时实现数据发送和打靶射击的同步性。采
用 89C2051 单片机便可实现要求。

\subsection{单片机及外围电路图}

\begin{figure}[htbp]
  \centering
  \includegraphics[width = .86\linewidth]{image-0419}
  \caption{2051 单片机及其外围电路图}\label{4-8}
\end{figure}

\subsection{电路原理}

\begin{enumerate}
  \item 编码器的输出通过 2051 P1 口的低 6 位（高 2 位接地为逻辑 0）输入。
  \item 选用 $\qty{11.0592}\MHz$ 的晶振构成单片机的时钟，这样在串口工作方式 1 下可得到准确的 $\qty{9600}{bps}$ 的串行波特率，方便计算机的接收。
  \item 单片机接有复位开关按钮。
  \item 实现打靶和信号采集传送的同步化。
\end{enumerate}

由于采用单片机的外部中断 0（$\overline{INTO}$）作为数据串行传送的使能端，且
$\overline{INTO}$设为下降的跳变沿有效。使能开关（激光枪的开关）一端接地，另一
端接$\overline{INTO}$，又经上拉电阻接到电源，这样当开关按下时，便有下降沿的跳变信号输入$\overline{INTO}$，产生中断。

同时，开关又要同步控制激光枪的发射。因此开关又接激光头的负端，从而控制激光头负端
的接地，只有当开关按下时，激光头两端才有工作电压。

这样，同一个开关既控制单片机的中断，又同时控制激光枪的发射，从而达到打靶和信号采
集传送这两个“动作”的同步化。

\subsection{AT89C2051 单片机\cite{cn12}}

AT89C2051 单片机是 AT89C51 的简化型号，其指令系统和内部 RAM 均与 AT89C51相
同。不同的是它的内部 ROM 为 2k，而 89C51 为 4k，而且 2051 比 89C51 少了 P0
和 P2 输入/输出口以及外部 ROM、RAM 的扩展端，因此在引脚上 2051 只有 20 个脚。
AT89C2051 单片机主要适用于较为简单的微控制系统。在本系统中，用到 AT89C2051的 
6 个外部 I/O 口，一个外部中断和串行输出口。

\newpage
\begin{figure}[htbp]
  \centering
  \includegraphics[width = .53\linewidth]{image-0439}
  \caption{2051 信号引脚图}
  \label{4-9}
\end{figure}

\section{电平转换}

在不同的数字系统中，其电平标准是不同的。该系统中就包括了 TTL 电平标准和 RS-232 
电平标准，要实现两个标准的正常通信，必须进行电平转换。该系统采用使用简单的 
MAX232CPE 芯片。

一片MAX232CPE芯片可完成2路TTL/CMOS～RS-23 的电平转换和2路RS-232～TTL/CMOS
的电平转换。实际电路中只有一路单片机的 TXD 串口输出，不进行RXD串口输入。因此，选
用引脚 11 接 2051 TXD 串口输出；而对应的 14 脚则接到计算机的串口输入端。

\begin{figure}[htbp]
  \centering
  \includegraphics[width = .52\linewidth]{image-0440}
  \caption{MAX232CPE 芯片内部结构}
  \label{4-10}
\end{figure}