C114通信网  |  通信人家园

物联网
2011/6/23 16:19

AVR单片机在无线自动报靶系统中的应用[图]

《微型机与应用》2011年05期  陈再旺 王宏 桂林空军学院

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

目前,在野外射击训练考核中,大部分还是通过人工报靶的方法,带有很多人为因素(如报靶人员的主观性、情绪等),影响报靶的结果,使得射手不能正确了解自己的成绩,不利于打靶水平的提高。虽然现在市面上出现了一些自动报靶产品,但这些产品的成本高、系统比较复杂,并且占用场地。因此,本文根据实际训练需要,研制出了集轻武器射击训练所需的所有功能于一体的、基于AVR单片机的一种无线自动报靶系统。该系统包括精确和非精确报靶,射击成绩的自动实时显示、统计和打印,可以满足多种武器和多种射击模式的训练需求,对目标的隐显时机、次数、间隔等均按训练大纲要求由电脑自动控制,既可同时监控多个(25个)靶位的射击情况,也可单独监控一个靶位的射击情况。

1 系统组成

无线自动报靶系统由传感器(特制头靶、胸靶、身靶等)、数据采集、无线传输、数据处理、显示和打印机等构成。报靶传感器为特制的靶子,其两面各有一层导电橡胶(或其他导电软材料),反面导电橡胶接地线,正面按胸环靶样式用绝缘材料分隔成不同环位和方位区域,不同区域分别引出信号线。当子弹穿越靶子,射击目标的报靶可以精确到5~10环(以胸环靶为例),弹着点的显示可以精确到圆周的1/8,即将每一环分为8个区域,报靶信息即为射击的环数和所处的区域。图1为纸上对环和区域的划分情况。

当子弹穿过目标时,在瞬间会连通其中的一个环和一个区域,完成数据采集,单片机由此确定报靶信息,编码后由收发模块调制发出,完成射击成绩的报靶。子弹击中目标的情况如图2所示。

AVR单片机在无线自动报靶系统中的应用

2 单片机控制电路设计

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

AVR单片机在无线自动报靶系统中的应用

图3中,PA0引脚的ADC用于将采样电机过载电流信号传送给MCU,PD4~PD7用于驱动全桥电路的4个臂端,以保证电机正常运转。K1、K2按键的功能是手动启动电机将靶拉起或放倒。PD0、PD1引脚是串行通信接口的RXD和TXD,这两个引脚与无线发射/接收模块的TXD和RXD相连接,当ATmega32单片机检测到子弹击中靶子时,将计算出来的环和区的信号通过RXD和TXD引脚发射出去,传送到计算机软件系统。

由于子弹的速度很快(达到1000m/s),靶的内部铝层厚度为5mm,使穿透铝层最小时间只需5μs。而在这5μs时间之内,Atmega32单片机必须通过PB和PC端口完成实时的采样,并同时计算出子弹是穿透哪个环和区。因此,必须为Atmega32配置高速的时钟源。由于Atmega32单片机频率最高可以达到25 MHz,但同时还要满足串行通信的波特率要求,因此,Atmega32采用18.432MHz的时钟源,为整个系统高速运算提供保证。

在实际测试中,Atmega32单片机从检测到子弹开始发射到子弹穿透铝层,并确定子弹穿透的是哪个环和区,不到2μs就可以完成采样。

3 单片机软件设计

单片机软件主要功能:(1)实时检测是否有子弹穿透训练靶,若检测到有子弹穿过,程序获取靶被击中的环和区,并将该靶的环和区信息通过串口发送出去。由于这部分程序对时间要求极为苛刻,因此将这部分内容由INT0外部中断服务程序来完成。(2)单片机串口实时监测是否有控制中心发来的数据帧,若有,则读取数据帧内容,并分析是否为合法数据帧,若是非法帧,则丢弃该帧;若是合法数据帧,则分析该帧的内容,并置接收帧成功标志。由于控制中心可能随时会发送数据帧过来,这部分内容交给串口的中断服务程序来完成。(3)主程序中,除了完成相关初始化内容之外,主要判断按键K1和K2是否按下,若有则执行电机驱动的拉起和放倒动作;同时,还检测接收到的数据帧标志是否成功,若成功,则根据数据帧的命令字来分析夜间指示灯的开或关闭、启动电机作拉起或放倒动作等。

主程序流程图如图4所示。

AVR单片机在无线自动报靶系统中的应用

信号采集检测直接利用AVR单片机芯片内置的10bitA/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所示。

AVR单片机在无线自动报靶系统中的应用

该报靶系统实现了射击环数和方位在靶区域的实时显示以及PC机监控终端的实时监控,射击中可统计个人及单位的单发成绩和总体成绩。经大量实验证明,其分析原理正确、设计指标先进、携带方便、报靶准确,适用于各式枪械的报靶;抗干扰强,适合野外使用。现已在现场使用,并取得了良好的效益。

参考文献

[1] 黄胜.自动报靶机的设计与实现[J].毅据采集与处理,1997,12(2):155-156.
     [2] Atmel Corporation. ATmega32(L)datasheet. 200l.

给作者点赞
0 VS 0
写得不太好

免责声明:本文仅代表作者个人观点,与C114通信网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。

热门文章
    最新视频
    为您推荐

      C114简介 | 联系我们 | 网站地图 | 手机版

      Copyright©1999-2024 c114 All Rights Reserved | 沪ICP备12002291号

      C114 通信网 版权所有 举报电话:021-54451141