EDN首页   博客首页

日志档案

发表于 2008-6-14 23:00:28

1

标签: A/D转换  软件  滤波  

A/D转换后的软件滤波实现(1)

理论上讲单片机从A/D芯片上采集的信号就是需要的量化信号,但是由于存在电路的相互干扰、电源噪声干扰和电磁干扰,在A/D芯片的模拟输入信号上会叠加周期或者非周期的干扰信号,并会被附加到量化值中,给信号带来一定的恶化。考虑到数据采集的实时性和安全性,有时需要对采集的数据进行软处理,一尽量减小干扰信号的影响,这一过程称为数据采集滤波。

以下介绍十种数据采集滤波的方法和编程实例。这10种方法针对不同的噪声和采样信号具有不同的性能,为不同场合的应用提供了较广的选择空间。选择这些方法时,必须了解电路种存在的主要噪声类型,主要包括一下方面:

* 噪声是突发随机噪声还是周期性噪声

* 噪声频率的高低

* 采样信号的类型是块变信号还是慢变信号

* 另外还要考虑系统可供使用的资源等

通过对噪声和采样性能分析,选用最合适的方法以及确定合理的参数,才能达到良好的效果。

    目前用于数据采集滤波的主要方法有以下10种,这10种方法都是在时域上进行处理的,相对于从频域角度设计的IIR或者FIR滤波器,其实现简单,运算量小,而性能可以满足绝大部分的场合的应用要求。

1.限幅滤波法(又称程序判断滤波法)

实现方法:

1)根据经验判断,确定两次采样允许的最大偏差值(设为A);

2)每次检测到新值时判断,如果本次值与上次值之差 ≤ A ,则本次值有效;如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值。

这种方法能有效克服因偶尔因素引起的脉冲干扰,但是无法抑制那种周期性的干扰,平滑度差。

2.中位置滤波法

实现方法:

1)连续采样N次(N取奇数);

2)把N次采样值按大小排列;

3)去中间值韦本次有效值;。

这种方法能有效克服因偶然因素引起的波动干扰,对温度、液位变化缓慢的被测参数有良好的滤波效果。缺点是对流量、速度等快速变化的参数不宜使用。

3.算术平均值滤波法

实现方法:

把连续N个采样值进行算术平均运算,作为本次滤波得到的有效值;N值的选取为:一般流量,N=12;压力:N=4

这种方法的特点是:N值较大时,信号平滑度较高,但灵敏度较低;N值较小时,信号平滑度较低,但灵敏度较高,适用于对一般具有随机干扰的信号进行滤波。这种信号的特点是有一个平均值,信号在某一数值范围附近上下波动。其缺点是:对于测量速度较慢或要求数据计算速度较快的实时控制不适用;比较浪费RAM空间。

 

4.递推平均滤波法(又称滑动平均滤波法)

实现方法:

1)把连续去N个采样值看成一个队列,队列的长度固定为N

2)每次采样到一个新数据放入队尾,并扔掉原来队首的一个数据(先进先出原则);

3)把队列中的N个数据进行算术平均运算,就可获得新的滤波结果。

N值的选取依据应用场合的不同,分别为:流量,N=12;压力,N=4;液面,N=4~12;温度,N=1~4

这种方法对周期性干扰有良好的抑制效果,平滑度高,适用于高频震荡的系统。其缺点是:灵敏度低,对偶然出现的脉冲性干扰的一直作用比较差,不易消除由于脉冲干扰所引起的采样值偏差,不适用于脉冲干扰比较严重的场合;比较浪费RAM空间。

 

5.中位值平均滤波法(有称脉冲干扰平均滤波法)

这种方法相当于“中位置滤波法”+“算术平均值滤波法”,实现方法为:

1)连续采样N个数据,去掉一个最大值和一个最小值;

2)然后计算N-2个数据的算术平均值。

N值的选取范围为3~14

这种方法融合和两种滤波法的优点,对于偶然出现的脉冲性干扰,可消除由于脉冲干扰锁引起的采样值偏差。其缺点是:测量速度较慢,和算术平均滤波法一样比较浪费RAM空间。

 

6.限幅平均滤波法

这种方法相当于“限幅滤波法”+.递推平均滤波法”,其实现方法是:

1)每次采样到的新数据先进行限幅处理;

2)再送入队列进行递推平均滤波处理。

这种方法融合和两种滤波法的优点,对于偶然出现的脉冲性干扰,可消除由于脉冲干扰锁引起的采样值偏差。其缺点是比较浪费RAM空间。

 

 

7.一阶滞后滤波法

 

实现方法:

(1)        a=0~1

(2)       本次滤波结果=1-a)×本次采样值+a×上次滤波结果。

这种方法对周期性干扰具有良好的抑制作用,适用于波动频率较高的场合。其缺点是:相位

滞后,灵敏度低,滞后程度取决于a值大小;不能消除滤波频率高于采样频率的1/2的干扰信号。

 

 

8.加权递推平均滤波法

 

这种方法是对递推平均滤波法的改进,对于不同时刻的数据加以不同的权值。通常是越接近

现时刻的数据,权取得越大。给予新采样值的权系数越大,则灵敏度越高,但信号平滑度低。

    这种方法适用于有较大纯滞后时间常数的对象和采样周期较短的系统。其缺点是:对于纯滞后时间常数较小,采样周期较长,变化缓慢的信号不能迅速反应系统当前所受干扰的严重程度,滤波效果差。

 

 

9.消抖滤波法

 

实现方法:

1)设置一个滤波计数器;

2)将每次采样值与当前有效值比较;

3)如果采样值=当前有效值,则计数器清零;

4)如果采样值大于或小于当前有效值,则计数器+1,并判断计数器是否大于等于上限N(溢出);

5)如果计数器溢出,则将本次值替换当前有效值,并清计数器。

这种方法对于变化缓慢的被测参数有较好的滤波效果,可避免在临界值附近控制器的反复开/关跳动或显示器上数值抖动。缺点是:对于快速变化的参数不宜;如果在计数器溢出的那一次采样到的值恰好是干扰值,则会将干扰值当作有效输入导入系统。

 

 

10.限幅消抖滤波法

这种方法相当于“限幅滤波法+“消抖滤波法”,即先限幅,后消抖。

这种方法继承了“限幅”和“消抖”的优点,改进了“消抖滤波法”中的某些缺陷,避免将干扰值导入系统。其缺点是对于快速变化的参数不宜使用。

 

以上为设计思路分析。

系统分类: 单片机   |   用户分类: 学习笔记   |   来源: 整理   |   【推荐给朋友】   |   【添加到收藏夹】

    阅读(167)    回复(0)  

投一票您将和博主都有获奖机会!