单片机
EF
!"#$%#&’(;()!"#$)*&+(${!"#$,(-,(-%#&’(;
();#0
%#&’(;
%#&’(./(+
中国测试技术522G年11月
90()*,(=11()!"#$)*&+(${!"#$%#&’(
[=];>’)
!"#$!?’,+,*,@,+(AB;
)?$(!?’,+.2;!?’,+C=;!?’,+44)
{%#&’([!?’,+]>’)./(+
();#0
$(+’$,(1223#)!%#&’(4#!,(-}565
限副滤波法
由于单片机系统中可能存在随机脉冲干扰,或由于变送器不可靠而将脉冲干扰引入输入端,从而造成测量信号的严重失真。对于这种随机干扰,限副滤波是一种有效的方法。其基本方法是比较相邻!和!31时刻的两个采样值7,和7,31。然后根据经验确定两次采样允许的最大偏差。如果两次采样值7,和7,31的差值超过了所允许的最大偏差范围,则认为发生可随机干扰,并认为后一次采样值7,为非法值,
应予删除,删除7,后,可用7,31代替7,。若未超过所允许的最大偏差范围,
则认为本次采样值有效。
下面是实现限副滤波法的程序。8!"值可根据实际情况调整%#&’(为有效值,,(-%#&’(为当前采样值
滤波程序返回有效的实际值!890()*,(:12!"#$%#&’(;!"#$)*&+($(){!"#$,(-%#&’(;
,(-%#&’(./(+#0
();*)((,(-%#&’(3%#&’(;:)"(%#&’(3,(-%#&’(;:)
$(+’$,%#&’(;$(+’$,,(-%#&’(;
}56<
中位值滤波法
中位值滤波法是对某一被测参数连续采样,次!取奇数),然后再把采样值按大小排列,取中间值为本次采样值。中位值滤波法能有效克服偶然因素引起的波动或采样不稳定引起的误码等脉冲干扰。对温度、液位等缓慢变化的被测参数用此法能收到良好的滤波效果,但是对于流量压力等快速变化的参数一般不宜采用中位值滤波法。
下面是实现中位值滤波法的程序。8!#值可根据实际情况调整排序采用冒泡法万 方数据!8
0(
();}
)?$(@.2;@C=31;@44){
)?$(*.2;*C=3@;*44){*)(%#&’(>’)[*];%#&’(
>’)
[*41]){
+(AB.%#&’(>’)
[*];%#&’(>’)[*].%#&’(>’)[*41];%#&’(>’)[*41].+(AB;}}}$(+’$,%#&’(>’)[(=31)85];}56D
算术平均滤波法
算术平均滤波法适用于对一般的具有随机干扰
的信号进行滤波。这种信号的特点是信号本身在某一数值范围附近上下波动,如测量流量、液位时经常遇到这种情况。
算术平均滤波法是要按输入的=个采样数据,寻找这样一个$,使得$与各个采样值之间的偏差的平方和最小。
在编写算术平均滤波法程序时严格注意两点:一是对于定时测量,为了减小数据的存储容量,可对测得的值直接进行计算,但由于某些应用场合,为了加快数据测量的速度,可采用先测量数据,并存放在存储器中,测完=点后,再对=个数据进行平均值计算。二是选取适当的数据格式,也就是说采用定点数还是采用浮点数。采用浮点数计算比较方便,但计算时间较长,采用定点数可加快计算速度,但必须考虑累加时是否产生溢出。例如数据为1D位二进制定点数时,采用双字节运算,当=;D时,就可能产生溢出。
下面是实现算术平均滤波法的程序。90()*,(=15
((一般