车载电子罗盘中的一种新型抗干扰设计
时间:11-30
来源:互联网
点击:
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所列。
从实验测试的标准差可以看出,经过软件滤波后σ小了很多,这种软件滤波算法对滤除尖峰脉冲干扰是非常有效的。
结 语
本文提出的软件滤波算法速度快,代码效率高,滤波效果理想,是一种实用的数字滤波设计方法,体现了将算法与具体硬件相结合的思想。另一方面,当脉冲干扰较宽时可将存储器变量适当扩展成多字节变量。这个算法还可以与FPGA结合,用于其他计数精度要求较高、易受尖峰脉冲干扰的应用结合。
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所列。
从实验测试的标准差可以看出,经过软件滤波后σ小了很多,这种软件滤波算法对滤除尖峰脉冲干扰是非常有效的。
结 语
本文提出的软件滤波算法速度快,代码效率高,滤波效果理想,是一种实用的数字滤波设计方法,体现了将算法与具体硬件相结合的思想。另一方面,当脉冲干扰较宽时可将存储器变量适当扩展成多字节变量。这个算法还可以与FPGA结合,用于其他计数精度要求较高、易受尖峰脉冲干扰的应用结合。
电子 传感器 单片机 电路 电压 电阻 电容 滤波器 加速度计 FPGA 相关文章:
- 电子技术的革新先锋(11-21)
- ispMACH4000Z CPLD在消费类电子产品中的应用(01-24)
- 现代汽车电子技术综述(06-24)
- 新技术、新应用让传感器深入汽车电子设备的各个角落(05-11)
- RFID技术在商用汽车生产及使用中的应用(05-11)
- 模糊控制在汽车离合器中的应用(05-11)