单片机数据采集系统中数字滤波算法研究
单片机数据采集系统中数字滤波算法研究摘 要: 针对单片机数据采集系统中经常出现的随机干扰,通过手动输入来模拟数据采集过程,验证了几种使用较为普遍的克服随机干扰的单片机数字滤波算法,并给出了相应的C程序
单片机数据采集系统中数字滤波算法研究 针对单片机数据采集系统中经常出现的随机干扰,通过手动输入来模拟数据采集过程,验证了几种使用较为普遍的克服随机干扰的单片 摘要: 机数字滤波算法,并给出了相应的C程序,尤其对中位值滤波和中位值平均滤波算法程序进行了改进。同时也对这几种滤波算法进行了比较,并 指出了每一种算法的具体适用范围和注意事项。 单片机;数据采集系统;随机干扰;数字滤波;算法 关键词: StudyofDigitalFilteringAlgorithminMicrocontrollerDataAcquisiti onSystem Abstract : AimingattherandominterruptionsthatusuallyappearsinMicrocontrollerDataAcquisitionSystem,thisarticl everifiedseveralalgorithmsofdigitalfilterandCprogramtoinhibittherandominterruptionsbymanualinputtosimulate datacollectionprocess,especiallyimprovedthealgorithmprogramoftheaveragecenter-positionvaluesandmiddlevaluefil ter.Comparisonamongtheseveralalgorithmsandapplicationfieldwerealsomentioned. Keywords: mcu;DataAcquisitionSystem;randominterruption;digitalfilter;Algorithm 0引言 在单片机的数据采集系统中,测量通道串入随机干扰是难免的,从而使A/D转换送入单片机的数据存在误差,这种因随机干扰产生的误差称 为随机误差。随机误差虽然无法预测,但多次测量结果是符合统计规律的。为克服随机干扰产生的误差,可以采用硬件抗干扰的方法,也可以采 用按统计规律用软件方法实现,即采用数字滤波的方法来抑制有效信号中的干扰成分,从而消除随机误差。 1常用的数字滤波算法及实现 在单片机的数据采集系统中,常用的数字滤波算法有限幅滤波、中位值滤波、算术平均滤波、移动平均滤波、加权平均滤波、低通滤波、中 位值平均滤波等。以下就分别介绍其原理及滤波程序。 1.1限幅滤波 限幅滤波的基本原理是把两次相邻时刻(n和n-1)的采样值Yn和Yn-1相减,求出其差值,以绝对值表示,然后将这个差值与两次采样允 许的最大偏差值ΔY比较,如果两次采样值的差值超过了允许的最大偏差值ΔY,则认为发生了随机干扰,并认为最后一次采样值Yn非法,应予 剔除。剔除Yn后,可用Yn-1代替Yn;若未超过允许的最大偏差值范围,则认为本次采样值有效。可用如下公式表示: |Yn-Yn-1|≤ΔY;则Yn有效 |Yn-Yn-1|>ΔY;则Yn-1有效 此算法的样例子程序如下: #defineA10//A值可根据实际情况调整 chardata;//上一次的数据 charfilter_1() { chardatanew;//新数据变量 datanew=get_data();//获得新数据 //滤波算法 if((datanew-data>A)||(data-datanew>A) returndata; returndatanew; } 该算法主要用于处理变化比较缓慢的数据,如温度、物体的位置等。使用时关键在于最大偏差值的Δy的选择,通常可根据经验获得, [1] 也可按照输出参数可能的最大变化速度Vmax及采样周期T来决定ΔY的值,即ΔY=VmaxT。 1.2中位值滤波 中位值滤波是先对某一参数连续采样N次(一般N取奇数),然后把N次采样值按从小到大排列,取中间值为本次采样值。 该滤波方法实际上是一种排序方法,文献[2,7,9]采用的是冒泡法排序。由于在冒泡法排序中,每出现一次前者数据大于后者数据,就要 进行二者数据的交换,效率很低,故在验证时改用选择排序法。 该算法的样例子程序如下: #defineN11//N值可根据实际情况调整 charfilter_2()

