《武汉工程大学学报》  2010年12期 102-104   出版日期:2010-12-31   ISSN:1674-2869   CN:42-1779/TQ

智能传感器平均滤波方法改进



0引言在实际的传感器测量中,测量得到的模拟信号往往由于外界环

境的影响,传感器采样得到的数据出现围绕中心值的上下波动.同时

,在工业测量与控制领域中,经常会遇到尖脉冲现象.这种数据的出

现,虽然只是个别数据,但由于该数据与其他采样点的数据差距比较

大,如果采用一般平均数字滤波算法,则不能够消除这种尖脉冲干扰

带来的采样值偏差.这样的信号源经过AD进入微控制器后会出现一

定的误差,笔者在相关的设施农业湿度传感器开发实验中也发现了

这个问题,因此再算术平均滤波算法和中值滤波算法的基础上设计

了本滤波算法[1].一个良好的滤波算法可以减小这种影响,对传

感器数据处理采用的神经网络、小波算法等方法,龙泳、孙慧卿、

陈向群等[24]对于传感器非线性校正方法的研究效果良好,但

都是基于PC机的强大运算处理能力的.当前MPU(微处理器)在各种领

域的成功应用也对传感器行业产生了重大的影响,基于MPU的传感器

产品不断出现[56].由于普通的这种带MPU传感器在MPU的ROM和

RAM空间上的限制,以上算法对普通传感器的MPU而言,无疑是很难实

现的.基于普通单片机的数字滤波方法通常有程序判断法,中位值滤

波法,算术平均滤波法,移动滤波法,加权平均法,一阶滞后滤波法,

曲线拟合法,去极值平均滤波等.本文设计的方法与其中比较常用的

算术平均滤波法和去极值平均滤波算法相比,具有更好的滤波效

果.1原理与方法分析本实验中,设计了一个基于MPU的传感器模

块,MPU选用Microchip公司的PIC16F873A单片机,湿度传感器采用

了Honeywell公司HIH4000湿度传感器,显示模块采用了1602字符型

液晶模块.本文提出的算法,在算术平均滤波法的基础上设计了一种

基于单片机的简单数字滤波算法.传统的去极值平均滤波算法只能

去除极大值、极小值各一个,而实际实验中产生的极限误差数据往

往不是1个.本文介绍的算法实现思想是在去极值平均滤波算法的基

础上,将采集到的数据按照数值从大到小排列后,根据数据量均匀分

布的原则,划分为极大值、中间值、极小值3个区间,把中间区间里

的数据取出来取平均值,从而实现更好地去除极限误差的目的.对于

区间的划分,本文采用均衡分布的方法,具体应用中,也可以根据数

据特点增加或减少某一区间的数据.本文相关实验中将采取到的10

个数据中放入数组NUM[10]后,将数组中的10个变量NUM[0]-NUM

[9]按照从小到大的顺序排列,求出NUM[3]-NUM[6]共四个数

据的平均值.采用这种先排序的再求平均值的方法,还可以避免出现

10个变量相同,无法去除极限值的情况.举例而言,本算法中如果有

10个数据如下63.5、63.5、63.6、63.3、63.6、63.4、63.5、

63.6、63.6、63.5,采用传统的去极值算法,则只能去掉63.3和

63.6这2个不合理数据,而采用本文中改进的算法后,则只计算63.5

、63.5、63.5、63.6四个数据的平均值,此时计算的平均值相对准

确.考虑到实际工程的数据采集中,出现偏差的最大、最小值往往不

具备应用价值,因此本算法更大程度地消除了极值数据给实际工程

中传感器数据检测带来的偏差.2效果分析作为一种改进的数字滤波

算法,它虽然在原理上要比其他的多数简单滤波算法合理,但其滤波

效果还需要实验的证明.在实验中把未作处理的数据作为对照(CK

),经过算术平均滤波法处理的数据作为处理1,经过去极值平均滤

波方法处理的数据作为处理2,本文提出的分段后取平均的方法作为

处理3,如图1~4所示.处理1~3中的所有数据都是对10个数据的处理,

数据采样之间的间隔时间为150 ms.考虑到在相关的湿度传感器实

验中发现湿度数据波动相对比较大,因此,本实验中的数据均是对湿

度数据的处理.每种方法采样的数据均连续不间断,全部处理的时间

很短(2 s以内).使用MATLAB软件分别求出各种算法数据的变异系数

和相对标准差[7],用他们来分别反映传感器检测的精密度和准确

度.由于平均值不同,直接求平均相对误差是没有意义的,因此先把

数据进行中心化处理再进行平均相对误差的计算.中心化处理再取

绝对值后的数据分别为处理CK0,01,02,03,如表1所示.中心化处理

方法为x*i=|xi-|
其中=∑ni=1xin.第12期陈杰:智能传感器平均滤波方法改进
武汉工程大学学报第32卷
图1方差分析对比图
Fig.1Analysis comparisondiagram based on variance图2变异

系数分析对比图
Fig.2Analysis comparisondiagram based on coefficient of

variation图3总相对误差分析对比图
Fig.3Analysis comparisondiagram based on total relative

error图4平均相对误差分析对比图
Fig.4Analysis comparisondiagram based on average

relative error表1不同滤波算法处理得到的湿度数据
Table 1Humidity data based on different digital

filtering methodCK处理1处理2处理3CK0处理01处理02处理

0363.262.863.463.50.000 00.160 00.026 70.006

763.063.063.463.50.200 00.040 00.026 70.006

763.363.363.363.60.100 00.340 00.073 30.106

762.862.863.463.30.400 00.160 00.026 70.193

363.263.463.363.60.000 00.440 00.073 330.106

763.063.063.463.40.200 00.040 00.026 70.093

363.263.163.163.50.000 00.140 00.273 30.006

763.063.163.463.60.200 00.140 00.026 70.106

763.562.863.363.61.700 00.160 00.073 30.106

763.862.763.863.50.600 00.260 00.426 70.006

763.062.963.363.40.800 00.060 00.073 30.093

363.563.763.263.50.300 00.740 00.173 30.006

763.662.863.563.40.400 00.160 00.126 70.093

363.362.863.563.40.100 00.160 00.126 70.093

363.662.263.363.60.400 00.760 00.073 30.106 7 对于经过处

理后的数据利用MATLAB软件进行方差、变异系数、相对标准差和相

对误差分析如表2所示.
表2利用MATLAB软件对原始数据分析后的结果
Table 2Analysis of the results based on MATLAB
处理平均值方差变异系数/
%总相对
误差平均相
对误差CK63.200 000.328 5710.865 90.123 220.008 21162.960

000.119 7140.549 60.094 850.006 32263.373 330.024

9520.249 30.040 500.002 70363.493 330.009 2380.136

30.022 810.001 52注:总相对误差,平均相对误差利用了处理CK0

和01~03的数据.表中变异系数v=s其中s=∑ni=1(xi-2)n-1,方差为

s2.从表2中可以看出,反映传感器检测精密度的参数变异系数从处

理1到处理3依次明显下降,而且均比对照CK有明显下降,这表明通过

几种不同的处理方法对数据处理后,传感器的精密度提高,其中以本

文提出的滤波算法效果为最好.从表2中还可以看出,处理1~3的总相

对误差和平均相对误差的数据也依次有明显降低,这表明从处理1到

处理3传感器检测的准确度逐渐提高,且本文提出的算法的检测准确

度较高.图4给出了几种不同处理分析的结果对照情况.3结语提出的

滤波算法,其软件实现需要的ROM和软件运行需要的RAM空间都不是

很大,可以满足在普通单片机上执行的要求.实验表明:该算法比目

前效果比较好的去极值平均滤波方法效果更好.但在本算法中,排序

需要一定的时间,而在温室测控系统等的数据采集中,由于系统对于

传感器执行的响应时间要求不是很高,本算法对于提高湿度采样的

精密度和准确度均不失为一种比较好的选择.需要注意的是,本文提

出的算法改进,和算术平均滤波、中值滤波算法一样,适用于消除随

机干扰的信号,这种信号的特点是有一个平均值,信号在某一个数值

附近上下波动的情况.