基于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,阻值计算公式,式中Vref=1.1834V,R24=30.1kΩ,R23=8kΩ。TPS76733也是单路固定输出LDO,输出电压为3.3V,典型压差350mV,每个LM318D仅需消耗1mA左右的电流,EP1C3T144、C8051F310、有源晶振也都是低功耗器件,TPS76733输出电流最大值可达1000mA,能满足系统需求。通过在低压差稳压器的输入端连接0.1mF陶瓷去耦电容改善噪声特性,在输出电压引脚与GND之间连接10mF钽电容稳定芯片内部控制回路,此外在PG或者引脚连接上拉电阻防止芯片自动复位。
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
文章版权归西部工控xbgk所有,未经许可不得转载。