资料介绍
单片机软件滤波的几种方法 沈阳单片机开发网――帮您精确掌握电子器件的使用细节 www.symcukf.com
单片机软件滤波的几种方法
假定从 AD 中读取数据的子程序为:unsigned int get_ad();
1、限幅滤波法(又称程序判断滤波法)
A、方法:根据经验判断,确定两次采样允许的最大偏差值(设为 A)。每次检测到新值时
判断: 如果本次值与上次值之差<=A,则本次值有效;如果本次值与上次值之差>A,则本次值无
效,放弃本次值,用上次值代替本次值。
B、优点:能有效克服因偶然因素引起的脉冲干扰
C、缺点:无法抑制那种周期性的干扰,平滑度差
D、软件实现:
//=======================
//值 A 可根据实际情况调整,value 为有效值,new_value 为当前采样值
//滤波程序返回有效的实际值
#define A 10
char value;
char filter()
{char new_value;
new_value = get_ad();
if ( ( new_value - value > A ) || ( value - new_value > A ) return value;
return new_value;
}
//=======================
2、中位值滤波法
A、方法:连续采样 N 次(N 取奇数),把 N 次采样值按大小排列,取中间值为本次有效值
B、优点:能有效克服因偶然因素引起的波动干扰,对温度、液位的变化缓慢的被测参数
有良好的滤波效果
C、缺点:对流量、速度等快速变化的参数不宜
D、软件实现:
//==============