单片机
第E>卷第C期牛余朋等:单片机数字滤波算法研究
GG
!"#$%&’()$(){
&*(+,-./;
%0$(!0,*(./;!0,*(12;!0,*(33){
+,-3.4)(#5
();5)’#6();}
$)(,$*(!"#$()+,-72);}89:
递推平均滤波法(又称滑动平均值滤波法)上面介绍的算术平均值滤波,每计算一次数据,需要测量2次。对于测量速度较慢或要求计算速度较高的实时系统,该方法是无法使用的。例如某;<=芯片的转换速率为每秒钟>/次,
而要求每秒输入?次数据时,则不能大于8。下面介绍一种只需要进行一次测量,就能得到一个新的算术平均值的方法,即滑动平均值滤波法。
滑动平均值滤波法采用队列作为测量数据存储器,设队列的长度为2,每进行一次测量,把测量结果放于队尾,而扔掉原来队首的一个数据,这样在队列中始终就有2个“最新”的数据。当计算平均值时,只要把队列中的2个数据进行算数平均,就可得到新的算数平均值。这样每进行一次测量,就可得到一个新的算术平均值。
滑动平均值滤波法中的队列一般采用循环队列来实现。
下面是实现递推平均滤波法的程序。@5)%&*)2>8!"#$A#’,)B,%[2];!"#$&./;!"#$%&’()$(){
!"#$!0,*(;&*(+,-./;A#’,)
B,%[&33].4)(#5
();&%
(&.2)&./;%0$(!0,*(./;!0,*(12,!0,*(33)+,-.A#’,)
B,%[!0,*(];万
方数据$)(,$*(!"#$()+,-72);}
89C
加权滑动平均滤波法
在算术平均滤波和滑动平均滤波法中,2次采样值在输出结果中的比重是均等的,即>72,用这样的滤波算法,对于时变信号会引入滞后,2越大,滞后越严重。为了增加新的采样数据在滑动平均滤波法中的比重,以提高系统对当前采样值中多受干扰的灵敏度,可以采用加权滑动平均滤波法。实质上它是前面介绍的滑动平均滤波算法一种改进,即对不同时刻的数据加以不同的权,通常越接近现时刻的数据,权取得越大。加权滑动平均滤波算法适用于由较大纯滞后时间常数的对象和采样周期较短的系统,而对于纯滞后时间常数较小,采样周期较长,变化缓慢的信号,则不能迅速反映系统当前所受干扰的严重程度,滤波效果较差。89D
复合滤波法
单片机系统在实际应用中,所受到的随机干扰往往不是单一的,又是既要消除脉冲干扰的影响,又要做数据平滑处理。因此,在实际应用中常常把前面介绍的两种以上的方法结合起来使用,形成所谓的的复合滤波。例如,防脉冲扰动平均值滤波算法就是一种实例。这种算法的特点是先用中位值滤波算法滤掉采样值中的脉冲干扰,然后把剩下的各个采样值再进行滑动平均滤波。由于这种滤波算法兼容了中位值平均滤波算法和滑动平均滤波算法的优点,所以无论是对缓慢变化的过程变量还是对快速变化的过程变量都能起到较好的滤波效果。
E结束语
本文介绍了几种使用较为普遍的克服随机干扰
的软件算法,但是在一个具体的单片机系统中究竟应该选用哪种算法,还取决于系统的使用场合以及在过程中所含有的随机干扰情况。
参考文献
>]余永权9单片机在工业控制中的应用[F]9北京:
电子工业出版社,8//E9
8]胡
伟,季晓衡9单片机=程序设计及应用实例[F]9北京:人民邮电出版社,8//E9
E]刘经燕9测试技术及应用[F]9广州:
华南理工大学出版社出版,8//89
[[[