基于FPGA/MCU的光电式滚转角测量仪
引言 对于智能化弹药而言,弹丸滚转角是执行弹道修正功能、实现精确制导的重要初始参数,可通过安装于弹体的陀螺仪或者磁探测模块进行测量,但在实验室环境下需要有一个外部基准来验证测量结果的准确性。本文设计基于FPGA/MCU的光电式滚转角测量仪,安装于实验转台上,实时输出滚转角度值,为弹体的滚转角测量提供对照基准,并可与上位机进行通信,将数据传送到主机中进行后续处理。
系统整体方案 滚转角测量仪物理架构如图1、2所示。a为滚转体,可沿轴向做360度旋转,在滚转体上某固定位置安装红外发光二极管k,光束方向沿截面径向朝外;b为侧支架,为了减少环境光线的干扰,采用封闭式设计,沿支架周向均匀安装n个光敏接收电路gl-gn,n值视所需测量精度而定;当滚转体旋转到某角度时,延径向发射红外光,侧支架上的光敏三极管对其进行接收,把光信号转换为电压信号,经过处理之后送给主控板,主控板通过判断是哪个光敏三极管接收到了信号来确定滚转角度,滚转体也可能会刚好旋转到两个光敏三极管之间,导致二者同时接收到光信号,此时可对信号进行AD转换,然后通过相应算法对转换值进行处理,从而解算出滚转角。
系统硬件设计 滚转角测量仪的硬件框图如图3所示,包括红外光发射模块、光敏接收模块、FPGA/MCU信息处理模块、电源模块、LED显示模块等,以下分别进行具体介绍。
红外光发射模块选用方向性较强的窄角度红外发光二极管PH303,波长0.94mm,通过510Ω限流电阻与弹上的陀螺仪或者磁探测模块相连接,当滚转体转到某角度时由单片机控制其持续发光。由于发光二极管与光敏接收模块之间的距离较短,仅有3~4cm,因此采用小功率直射方式便可满足要求。 光敏接收模块采用UNI公司的NPN光敏三极管MID-32A22,接收光波长也为0.94mm。接收模块电路如图4所示,实物如图5所示,Q1为光敏三极管,LM358D为双通道集成运算放大器。在Q1上施加9V的偏置电压,保证集电结处于反向偏置,发射结处于正向偏置。室温条件下,当受到红外光照射时,发射集的输出电流与入射光强度呈线性关系,范围在1.5~2mA之间,R4取值为330Ω,则LM358D的引脚5输入电压在0.5~0.66V之间。前级运放搭建成同相比例放大器,取R1=1kW,R2=5kW,放大倍数为(1+5/1)=6倍,则引脚7的输出电压在以上。后级运放搭建成一阶低通有源滤波器,取R3=15.8kW,C1=0.1mF,截止频率为100Hz。Ax(x=1-n)为经过光电转换及信号调理之后的输出信号,本系统中n取值为37,即在侧支架上沿周向均匀安装37个光敏接收模块。当Q1接收到足够强度的入射红外光时Ax输出为高电平,没有受到入射光照射时保持为低电平,信号直接送至FPGA/MCU信息处理模块的相应引脚。
FPGA/MCU信息处理模块:FPGA作为主处理器,两片MCU作为协处理器,FPGA与MCU及上位机之间均使用串口通信方式。 FPGA采用Altera公司的EP1C3T144,具有2910个逻辑单元,可用IO引脚达104个,集成1个PLL模块,使用与1.5V联合供电,上电次序可任意配置,可灵活选择使用主动串行方式或者JTAG方式进行调试,外接50MHz有源晶振为芯片提供基准频率。 MCU选用Cygnal公司的C8051F310,工作电压2.7V~3.6V,最高工作频率可达25MHz,提供1280字节RAM和16Kb FLASH,29个耐5V电压的可配置IO引脚,片内集成21路10位200KSPS ADC及硬件增强型UART,可使用Silicon lab2线调试方式。 FPGA与MCU的硬件连接如图6所示,光敏接收模块的输出信号A1-A37依次送至FPGA各引脚及MCU的ADC输入引脚,由于每片C8051F310最多只允许21路ADC输入,因此使用两片MCU,MCU A采集A1-A20,MCU B采集A18-A37,其中A18、A19、A20被重叠采集。如果两片MCU采集的信号互不重叠,比如MCU A采集A1-A18,MCU B采集A19-A37,当滚转体转至g18与g19之间时,二者都受到一定强度的红外光照射,输出信号A18、A19同时为高电平,则需要将A18的值从MCU A送至MCU B进行集中处理,增加编程工作量,而且由于不是同一芯片的ADC采集到的数据,不排除存在系统误差的可能性,从而影响滚转角判断结果,但采集信号重叠之后,则仅使用MCU A或者MCU B就可单独进行处理,重叠信号越多处理范围越广。FPGA的TXi、RXi(i=0,1)引脚分别与两片MCU的自带的硬件增强型UART相连接,实现串口通信。
此外FPGA的UARTTX、UARTRX引脚与MAX3232CSE相连,将TTL电平转换成232电平,使用异步串口与上位机进行通信,电路连接如图7所示。
LED显示模块:由于滚转角度值范围在0度-360度之间,因此使用三位八段数码管可满足使用要求,选用力达公司的LDS-2381共阳数码管,其封装如图8所示。FPGA的八个引脚通过限流电阻与LED的A-G、DP引脚相连,由于LED消耗电流较大,而FPGA的引脚驱动能力不足,因此另外三个片选引脚分别先连接到NPN管的基集,NPN管的发射集再与LED的8、9、12引脚相连,从而提高电流驱动能力。FPGA采用动态扫描方式,通过控制片选引脚使数码管轮流显示个位、十位、百位的数字,每一位的持续时间为8ms,但在人眼看来可产生同时显示的效果。 电源模块:光敏三极管偏置电压为9V,FPGA需要3.3V与1.5V联合供电,MCU、FPGA外接有源晶振、LM318D等均为3.3V供电。系统输入电源采用9V直流供电,因此还需使用电源转换模块降至3.3V与1.5V,如图9所示,选取TI公司的TPS76801与TPS76733两种低压差稳压器。TPS76801是单路可调LDO,最大压降仅为230mV,容限为2%,纹波小,适合为FPGA内核供电,通过在OUT引脚、FB引脚与GND之间连接不同阻值的电阻,可灵活设置TPS76801的输出电压为1.5V,阻值计算公式
引脚连接上拉电阻防止芯片自动复位。 FPGA/MCU信息处理模块、电源模块、LED显示模块都集中布置在主控板上,其实物如图10所示,主控板与各个光敏接收模块之间通过导线连接,传输采集到的模拟信号并进行供电。
系统软件设计 基于FPGA/MCU的光电式滚转角测量仪软件流程如图11所示。光敏接收模块g1-g37接收到红外光信号,经过光电转换及信号调理之后将高电平送至FPGA上各相关引脚,FPGA以固定频率对A1-A37各引脚进行扫描,扫描频率通过对有源晶振的输入频率进行分频得到,如果扫描到仅有一个引脚是高电平,则说明只有该引脚对应的光敏接收模块收到光信号,滚转体此时刚好旋转到某已知角度,通过FPGA控制LED显示模块输出该角度,并通过串口将滚转角度值传送给上位机。但如果有两路引脚都为高电平,那么FPGA首先判断该由哪片MCU对这些信号进行处理,随后通知该MCU进行AD转换并确定滚转角度,比如A5、A6均为高电平,则FPGA以串口通讯方式通知MCU A对A5、A6进行AD转换,转换结果A5的信号幅值为2.50V,A6的信号幅值为3V,已知A5对应的滚转角为40度,A6对应的滚转角为50度,则此时的滚转角度为40+[2.5/(2.5+3.0)](50-40)=44.55度,MCU再通过串口把信息反馈给FPGA。还有可能出现3路或者3路以上的引脚为高电平的情况,此时应调节光敏接收模块的初级运放信号放大倍数,尽量减少MCU处理的模拟信号数量,然后通过比较将幅值较小的信号忽略,仅保留最大的两路信号,随后处理方式同上。
FPGA采用VHDL语言进行编程,其串口程序包括串口发送、串口接收与时钟分频三个模块,分别与上位机及两片MCU进行通信,通信波特率为标准的9600b/s,数据位为8位,不带校验位。MCU采用汇编语言编程,C8051F310可通过修改相关寄存器值非常灵活的对片内ADC模块、串口模块进行操作,ADC采用单端输入方式,以MCU供电电压为参考电压,通过向AD0BUSY位写1启动AD转换。
结语 本文设计的基于FPGA/MCU的光电式滚转角测量仪实际运行情况良好,在实验室环境中能较为准确的测量出弹体滚转角度,达到预定要求,此外还可通过增加光敏接收模块或采用红外激光器来进一步提高测量精度。
|