引 言
随着定位导航技术的飞速发展和日臻成熟,电子罗盘在相关领域得到了越来越广泛的应用。车载电子罗盘的功能是帮助用户确定车辆行驶方向,精确显示方位角度并提供正确的操作指示,因此导航的精确程度成为衡量系统性能优劣的重要指标。本文介绍的基于AMR磁阻传感器和加速度传感器ADXL202的电子罗盘,是捷联式惯性导航系统中的一种。在电子罗盘系统中,单片机VRS51L3074完成对加速度传感器输出信号脉宽和周期的计数,获得车辆瞬时加速度值,然后利用三角函数关系计算出当前位置相对于已知参考位置之间的横滚和俯仰角度,进行姿态解算,得到车辆的前进方向和方位角。但是汽车电磁环境复杂,特别是汽车的震动和瞬时功率变化会对ADXL202输出的占空比信号产生尖峰脉冲干扰,严重影响计数的精度。因此,抑制脉冲干扰在提高计数精度、增强系统性能方面显得尤为重要。
1ADXL202工作原理
ADXL202传感器是由震荡器,X、Y方向传感器,相位检波电路以及占空比调制器组成,具有数字输出接口和模拟电压信号输出接口。X、Y方向传感器是2个相互正交的加速度传感器。ADXL202相对于地平面方向变化时,X、Y方向对应不同的输出,从而可以测量动态变化的加速度和恒定的加速度。传感器的后级连相位检波器,主要是用来修正信号,并对信号的方向作出判断。检波器输出的信号通过1个32 kΩ的电阻来驱动占空比调制器,设计时可以通过在XFILT和YFILT引脚外接电容CX和CY来改变带宽。同时,外接电容对于滤除噪声和抑制零点漂移都有一定的效果。
信号通过低通滤波器之后,占空比调制器把信号转换为数字信号输出。通过T2脚的外接电阻可以改变T2的周期T2(1~10 ms),这就方便在精度要求不同的场合下使用。输出的占空比信号通过计数器可以计算出占空比。加速度的计算可以通过公式(1)得到。
当加速度为0g时,输出信号的占空比为50%;灵敏度每1g所引起的脉宽占空比变化12.5%。在应用中0g时的失调和系统误差影响实际输出值。则根据测得的加速度值即可求得X和Y轴的倾角:
当加速度计被定向,那么它的X和Y轴就和地球表面平行可用来作为具有翻滚和倾斜两个轴的双轴斜度传感器,被测物体的俯仰角记为γ和横滚角β。将磁阻传感器的3个敏感轴沿载体的3个坐标轴安装,分别测量地磁场磁感应强度H在载体坐标系3个坐标上的投影分量(HX,HY,HZ),然后利用俯仰角和横滚角进行姿态解算就可以得到电子罗盘的方位角。
2ADXL202的抗干扰设计思想
根据ADXL202使用手册知,传感器与微处理器共用电源时会引起干扰,因此在电路设计时采用了抑制干扰的解决方案。设计时采用1个0.1 μF的电容和1个小于或等于100 Ω的电阻来抑制干扰。实验测试显示,仍然存在电路其他部分电源和传感器电源互相影响的情况,干扰抑制效果并不理想。经过反复试验,传感器采用独立的电源供电,并且在布线时把器件和调理信号的电阻、电容放在1块单独的板上或用粗地线将其围在线路板的某一区域,在实验室条件下得到较好的干扰抑制效果。但实际应用中,汽车的震动和瞬时功率变化对ADXL 202E输出的占空比信号产生尖峰脉冲干扰(脉宽约1~2 ms)并不能消除,这就需要对其更多的处理。抑制和消除尖峰脉冲干扰影响的措施较多,常见的有硬件方法和软件方法,或两者相结合。考虑到电子罗盘整体体积和磁阻传感器信号对干扰较为敏感,如果采用高效的硬件滤波,系统电路将变得非常庞大;使用简易的硬件电路,滤波效果又不彻底。实际上,还可以借助于微处理器进行软件滤波消除尖峰脉冲干扰。软件滤波算法的采用,无疑会在简化电路结构的同时使系统的硬件资源得到更加充分的利用,并达到降低产品设计成本的要求。
ADXL202E输出的信号占空比调节(DCM)周期由外接电阻决定,一般低于1 kHz,因此计数输入端高低电平持续时间长达几ms甚至几十ms,可见传感器输出的正常计数信号高、低电平变化较慢;而控制器脉宽计数时间小于1μs,干扰尖峰脉冲是突变的,所以能把干扰从正常计数中辨别出来。因此,使用软件滤波来消除尖峰脉冲干扰是可行的。
VRS51L3074单片机是由美国Ramtron(瑞创)公司推出的8位单片机家族VRS51L3XXX系列的成员。VRSS1L3074提供了2个与定时器0和1关连的独立的脉宽计数器(PWC)模块,用户可通过对PWC模块和定时器的配置,灵活地控制定时器启动或停止计数,从而方便地实现对ADXL202E输出的脉宽和周期的计数。
从单片机计数输入端,观察信号波形。为便于分析,在高、低电平段设置了几个干扰尖峰脉冲,分别标示为Section A和Section C,占空比信号下降沿、上升沿分别标示为Section B和Section D。单片机按计数时钟周期性采样,采样值中“1”表示采到的是高电平,“0”表示低电平。I/O口采样占空比信号输出端口中状态,利用1个字节型变量R来动态存储采样值。控制器每采样1次,变量R中数据向左移1个二进制位,R原最高位电平状态被移除,而当前时刻新的采样状态保存到R的最低位,变量R被更新了,状态存储器R中保存着最近8个采样周期的采样值。
在图1中,从正常下降沿过程(Section B),可以看到变量R中的数据经历了从各位全为1,到1、0共存,再变化到全为0的过程;然而,在高电平段的干扰部分(SectionA),变量R经历了从全为1,到1、0混合,再回到全为1的过程。类似地,正常上升沿(Section D)变量R经历了各位全为0,到0、1共存,再变化到全为1的状态变化过程;在低电平段的干扰部分(Section C),变量R经历了采样状态从全为0,到0、1混合,再回到全为0的过程。通过判断此4种情况下变量R中数据的不同变化过程,可以达到从正常变化中辨别出干扰的目的。这就是本设计所采用的软件滤波抗干扰方法的基本思想。
3 软件滤波算法的实现
3.1 软件滤波分析
根据软件滤波设计思想,滤波子程序由主程序在信号状态发生变化,进入中断时调用,图2给出了滤波程序流程。对照图1中4种Section来分析流程图。当有边沿或干扰信号(信号周期大于计数时钟周期)到来时,VRS51L3074单片机的PWC计数停止条件满足,系统进入中断服务子程序。在中断子程序中,首先重置脉宽计数条件,然后对当前状态进行采样,采样1次,状态寄存器左移1位,采样到高电平记为“1”,采样到低电平记为“0”。如正常下降沿Section B,前面处于高电平段,初始状态变量Flag全为1,当出现低电平,控制器进人中断,紧接着进行16次采样。前已提及系统处理的尖峰干扰约1~2 ms,每个采样周期约为0.4 ms,其尖峰干扰脉宽达不到8个采样周期。系统设计时采样16次,只取最后8次的存储状态与原状态进行比较,如果最后采样的状态全为“0”则与原状态相反,就可判断出这是1个正常下降沿。如果是干扰信号引起计数中断,前面8个采样状态不全为“1”,后面8个状态全为“1”,最后采样的状态与原状态相同,就可判断出这是1个干扰信号,如Section A。在信号状态采样期间,计数条件满足PWC继续计数,直到真正的下降沿到来,计数停止并保存,计数寄存器还原为初始值,这样干扰信号即被滤除。类似地,正常上升沿Section D,存储器原状态为“0”,上升沿来临后存储器状态为“1”,与原状态相反,PWC计数停止并保存,计数寄存器还原为初始值,退出中断子程序。有干扰信号出现后采样状态与原状态相同,干扰尖峰脉冲可被滤除。如果要使脉宽计数更精确,可判断前8个采样周期中系统不正常计数的周期,然后与最终计数周期相加即可。此时,程序流程体现出软件滤波功能。
3.2 源程序代码分析
对应程序流程图,给出了单片机通过P4.2口对ADXL202某一输出通道采样滤波并完成脉宽计数的源程序。源程序如下:
源程序中定义了3个变量,其中变量Flag存储原状态值;FlagReg存储当前采样值;变量i记录采样次数;改变i的值可控制滤除尖峰脉冲的等待时间。程序通过对原状态与当前采样状态异或之后的值来判断当前信号是有效信号还是干扰信号,从而对上升沿、下降沿的中间过度或尖峰脉冲干扰进行相应处理,退出中断子程序。实现了对正常信号计数、滤掉尖峰脉冲干扰的目的。
4 测试结果
由于条件限制以及干扰的随机性,对基于ADXL202构成的车载屯子罗盘进行的测试,无法对所测量的角度以及方向角进行精确标定。实验时,通过相同条件下同一物理量多次测量值的标准差来对相应算法进行评估。测试结果如表1所列。
从实验测试的标准差可以看出,经过软件滤波后σ小了很多,这种软件滤波算法对滤除尖峰脉冲干扰是非常有效的。