AVR单片机在无线自动报靶系统中的应用
主程序流程图如图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.
评论