基于串行高速数据传输接口技术和CPLD器件实现炮弹测速系统的设计
扫描二维码
随时随地手机看文章
引 言
目前弹丸初速测量的主要方法有激光测量法、红外线测量法、线圈靶法。由于火药气体对光的污染,对激光测量法和红外线测量法都有一定的影响,火炮的强大机械冲击也会影响测量的性能;野外作业还需要测试系统便于携带。本文阐述从分立逻辑器件测量炮口初速改装为应用CPLD测量炮速,提高了测量系统的集成度,且传输接口采用的是目前流行的串行高速数据传输接口USB 2.O接口技术。该接口具有操作方便、速度快的特点,其理论最大传输速度为480 Mbps,故炮弹测速的可靠性和方便性大大提高,具有非常重要的现实意义和广阔的应用前景。
1、 测量原理
首先要求在炮口的末端安装两个间距为s(20 cm)的感应线圈靶;线靶传感器输出端以差分方式接至测量仪器上。打炮时,带有磁性的弹丸出炮口,先后穿过感应线圈靶,在感应线圈靶中产生感应电动势。在测量仪器输入端会得到具有一定时间间隔(△t)的两次突变信号,如图1中A路信号和B路信号。两次突变的信号经调理整形后变成了脉冲信号,速度为ds/dt,弹丸的初速为V=s/△t。
时间间隔△t是通过计数的方式测量的,采用40 MHz的有源晶振作为计数脉冲源,计数的最小分辨率可达到O.25μs。测量原理如图2所示。
2 、系统方案及硬件实现
在图1中,当炮弹经过线圈A和B时将产生一定脉冲幅度的感应信号,并且这两个信号之间有一定的时间间隔。调理部分即是将感应信号整形为规则的方波,然后再输入到测速模块中去。测速模块在完成速度测量后将结果由USB接口传输到主控制台。由主控制台软件来进行显示和处理,如图3所示。
2.1 调理模块
弹丸穿过感应线圈输出的信号为ys(t),信号幅度在150 mv左右。因为外界的干扰(如温度和电源的变化),即使没有弹丸穿过感应线圈,感应线圈上也有20 mV左右的随机信号输出.yn(t),即背景噪声。
感应线圈输出y(t)的表达式:
y(t)=ys(t)+yn(t)
实际上,输出信号为感应信号ys(t)和背景噪声yn(t)的叠加。把弹丸穿过感应线圈的有用信号和随机背景噪声分离的通常办法有:阀值比较法、滤波处理和智能法。本系统选用了阀值比较法。它简单明了,易于实现。
因为最前端感应线圈输出的模拟信号微弱,所以调理模块最前端选用了仪表运放IN129,差模输入。它输入阻抗高,内部包括三级运放。后端采用高精密双运放AD712,它有输入失调电压小,输入失调电压漂移小的优点,可以减小信号在传输放大过程中的失真。最后一级通过电压比校器LM311来实现阀值比较。其中阀值是通过理论计算和实验得出的经验值。整个工作过程是炮弹通过线圈的感应信号(150 mV左右)经过高输入阻抗的仪表运放IN129后,再用高精密运放AD712进行一定倍数放大,最后和基准电压比较后整形输出方波。输出的方波信号直接作为计数的门控制。
2.2 测速模块
要在启停脉冲的控制下实现计数主要三种方法:MCU(单片机)实现、数字集成电路搭接、CPLD/FPGA硬件描述语言实现。用单片机定时器或中断方式实现时,单片机计数快慢受MCU的主频限制,弹丸速度测量精度会受到影响。用数字集成块搭接的方式过于繁琐,且印制板体积会加大,影响稳定性和集成度。本系统采用硬件描述语言在CPLD中实现的方式,集成度高,稳定性好,且可以在不改动印制板的情况下实现硬件的升级。测速模块是在Altera公司MAX3000A系列的EPM3128ATC144-10芯片中实现,如图4所示。其中主要的功能子模块有:计数控制模块、24位计数模块、I2C收/发模块。计数控制模块收到开始计数信号(上升沿)后通知24位计数模块开始清零、计数。当停止信号到来时,计数停止并发出中断请求,通知芯片CY7C68013的固件程序,固件程序通过I2C总线接收计数值,并等待下一次计数。
2.3 USB2.0接口芯片CY7C68013
CY7C68013芯片是Cypress Semiconductor公司推出的EZ-FX2系列高速USB2.0设备控制器,最高可支持480 Mbps(高速)操作。它集成了USB2.0收发器、SIE(串行接口引擎)、增强的8051微控制器和可编程的外围接口(GPIF、FIFO、I2C)。在上电时,CY7C68013芯片可通过I2C接口从外挂E2PROM中读入固件程序,完成协议的自举过程。如图5所示,测量开始后,CY7C68013芯片在固件的控制下工作,当收到中断INT6,表示测量完成且转换为24位计数值,固件程序通过I2C接口读出24位计数值,即弹丸先后通过感应线圈靶的时间间隔(△t),然后通过USB接口上传给上位机。连发测量时重复上述过程,只是CY7C68013每读回一次数据都会把计数值清零,且允许下次计数。
3 、软件设计
软件设计分为芯片CY7C68013固件程序设计和上位机应用软件设计,其中主要为固件程序设计,程序流程如图6所示。固件程序的开发应用Keil C51来完成,并且利用Hex2bix.exe在Keil C51的强大编译环境下将HEX文件转换成I2C文件,然后用EZ-USB Control Panel将I2C文件下载到E2PROM(24LC64)。在程序编写中,先将端点2和4设为块输出,端点6和8设为块输入。
当一发炮弹射出后,炮弹经过前后线圈后产生一个计数值,利用I2C总线读出24位计数模块的数据,分高、中、低8位分别送回CY7C68013,然后通过USB 2.0传给上位机。
应用程序使用Visual C++6.0开发工具。测试炮弹速度时,先单击按钮“准备测试”,然后打炮N发(N≤20),再单击“测试完成”,炮弹速度就显示在左边文本框,从而实现单发或连发炮弹速度测量。新建MFC工程,在BOOL CUsbTestDlg::OnInitDialog()中打开USB设备,得到端点信息。
送控制信息给端点2,固件程序根据所送之数进行“准备测试”或“测试完成”操作。
4、结语
随着通用串行总线USB接口技术的发展,USB接口已被广泛应用于测试领域。本文介绍了一种应用USB接口技术,并结合大规模集成电路和电子设计自动化技术的炮速测量系统。该系统在炮速测量中具有很高的实用价值,在实际使用中表现出较高的灵活性和稳定性;加之优良的性价比,这种实现方法在测试领域有着较好的应用前景。