《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > AVR单片机在无线自动报靶系统中的应用
AVR单片机在无线自动报靶系统中的应用
来源:微型机与应用2011年第5期
陈再旺,王 宏
(桂林空军学院,广西 桂林 541003)
摘要: 介绍了Atmel公司生产的AVR单片机Atmega32在野外无线自动报靶系统中的应用。该系统集轻武器射击训练所需的各种功能于一身,包括精确和非精确报靶、射击成绩的自动实时显示、统计和打印,可满足多种武器和多种射击模式的训练需求,解决了实弹射击的报靶问题。
Abstract:
Key words :

摘  要: 介绍了Atmel公司生产的AVR单片机Atmega32在野外无线自动报靶系统中的应用。该系统集轻武器射击训练所需的各种功能于一身,包括精确和非精确报靶、射击成绩的自动实时显示、统计和打印,可满足多种武器和多种射击模式的训练需求,解决了实弹射击的报靶问题。
关键词: 传感器;数据采集控制电路;射击模式

 目前,在野外射击训练考核中,大部分还是通过人工报靶的方法,带有很多人为因素(如报靶人员的主观性、情绪等),影响报靶的结果,使得射手不能正确了解自己的成绩,不利于打靶水平的提高。虽然现在市面上出现了一些自动报靶产品,但这些产品的成本高、系统比较复杂,并且占用场地。因此,本文根据实际训练需要,研制出了集轻武器射击训练所需的所有功能于一体的、基于AVR单片机的一种无线自动报靶系统。该系统包括精确和非精确报靶,射击成绩的自动实时显示、统计和打印,可以满足多种武器和多种射击模式的训练需求,对目标的隐显时机、次数、间隔等均按训练大纲要求由电脑自动控制,既可同时监控多个(25个)靶位的射击情况,也可单独监控一个靶位的射击情况。
1 系统组成
 无线自动报靶系统由传感器(特制头靶、胸靶、身靶等)、数据采集、无线传输、数据处理、显示和打印机等构成。报靶传感器为特制的靶子,其两面各有一层导电橡胶(或其他导电软材料),反面导电橡胶接地线,正面按胸环靶样式用绝缘材料分隔成不同环位和方位区域,不同区域分别引出信号线。当子弹穿越靶子,射击目标的报靶可以精确到5~10环(以胸环靶为例),弹着点的显示可以精确到圆周的1/8,即将每一环分为8个区域,报靶信息即为射击的环数和所处的区域。图1为纸上对环和区域的划分情况。
当子弹穿过目标时,在瞬间会连通其中的一个环和一个区域,完成数据采集,单片机由此确定报靶信息,编码后由收发模块调制发出,完成射击成绩的报靶。子弹击中目标的情况如图2所示。

2 单片机控制电路设计
 在本系统中,单片机采用Atmel公司的AVR单片机Atmega32。在如图3所示的单片机控制电路图中,PB端口和PC端口用于检测靶的环和区的信号,当有子弹穿过靶时,会将连接在PB和PC端口对应的环和区引脚导通,通过读取PB和PC端口的引脚电平状态,即可分析出子弹击中了靶中哪个环和区。

 图3中,PA0引脚的ADC用于将采样电机过载电流信号传送给MCU,PD4~PD7用于驱动全桥电路的4个臂端,以保证电机正常运转。K1、K2按键的功能是手动启动电机将靶拉起或放倒。PD0、PD1引脚是串行通信接口的RXD和TXD,这两个引脚与无线发射/接收模块的TXD和RXD相连接,当ATmega32单片机检测到子弹击中靶子时,将计算出来的环和区的信号通过RXD和TXD引脚发射出去,传送到计算机软件系统。
 由于子弹的速度很快(达到1 000 m/s),靶的内部铝层厚度为5 mm,使穿透铝层最小时间只需5 μs。而在这5 μs时间之内,Atmega32单片机必须通过PB和PC端口完成实时的采样,并同时计算出子弹是穿透哪个环和区。因此,必须为Atmega32配置高速的时钟源。由于Atmega32单片机频率最高可以达到25 MHz,但同时还要满足串行通信的波特率要求,因此,Atmega32采用18.432 MHz的时钟源,为整个系统高速运算提供保证。
在实际测试中,Atmega32单片机从检测到子弹开始发射到子弹穿透铝层,并确定子弹穿透的是哪个环和区,不到2 μs就可以完成采样。
3 单片机软件设计
 单片机软件主要功能:(1)实时检测是否有子弹穿透训练靶,若检测到有子弹穿过,程序获取靶被击中的环和区,并将该靶的环和区信息通过串口发送出去。由于这部分程序对时间要求极为苛刻,因此将这部分内容由INT0外部中断服务程序来完成。(2)单片机串口实时监测是否有控制中心发来的数据帧,若有,则读取数据帧内容,并分析是否为合法数据帧,若是非法帧,则丢弃该帧;若是合法数据帧,则分析该帧的内容,并置接收帧成功标志。由于控制中心可能随时会发送数据帧过来,这部分内容交给串口的中断服务程序来完成。(3)主程序中,除了完成相关初始化内容之外,主要判断按键K1和K2是否按下,若有则执行电机驱动的拉起和放倒动作;同时,还检测接收到的数据帧标志是否成功,若成功,则根据数据帧的命令字来分析夜间指示灯的开或关闭、启动电机作拉起或放倒动作等。
 主程序流程图如图4所示。

 信号采集检测直接利用AVR单片机芯片内置的10 bitA/D转换器,采样PA0端口的输入模拟电压。将该模拟电压转换成数字电压,首先要对A/D转换器进行初始化,具体程序如下:
 void AVR_ADC_Init(void)
 {
   ADMUX = 0x00; //选择参考电压源为+5 V,
 //左对齐方式,并选择模拟通道ADC0
   ADCSRA = 0xCF;//使能ADC模块,
 //并启动ADC转换开始,配置预分频比1:128
 }
 为了提高实时采样保护电机,过流检测分析程序段放在A/D转换的中断服务程序中完成。A/D转换中断服务程序如下:
 #pragma vector=ADC_INT
 __interrupt void ADC_vect_isr(void)
 {
   if(ADCH>200)MotorBreak();   //若检测到电流
 //超过20 A,则让电机停止
 }
 在进行电机驱动程序设计时,利用AVR单片机内置的PWM模块来实现。该模块具有如下特征:(1)支持快速PWM产生模式;(2)支持相位修正的PWM产生模式;(3)支持相位与频率修正的PWM产生模式。这些模式都能够很好地产生所需的PWM信号,利用PWM信号可很容易实现对电机速度的调节。利用PWM模块的特点,设计的电机驱动函数为MotorStartRun(unsigned char direction,unsigned int speed)。在该函数中,参数direction用于控制电机转换方向,参数speed用于调节电机运行速度。电机驱动程序流程图如图5所示。

 该报靶系统实现了射击环数和方位在靶区域的实时显示以及PC机监控终端的实时监控,射击中可统计个人及单位的单发成绩和总体成绩。经大量实验证明,其分析原理正确、设计指标先进、携带方便、报靶准确,适用于各式枪械的报靶;抗干扰强,适合野外使用。现已在现场使用,并取得了良好的效益。
参考文献
[1] 黄胜.自动报靶机的设计与实现[J].毅据采集与处理,1997,12(2):155-156.
[2] Atmel Corporation. ATmega32(L)datasheet. 200l.

此内容为AET网站原创,未经授权禁止转载。