随着信息科技的发展,信号处理得到了大幅推动,已被广泛应用于雷达、通信、自动化、航空航天等领域。在信号处理系统中,输入信号通常含有各种噪声和干扰。为对信号进行准确的测量和控制,必须削弱或滤除被测信号中的噪声和干扰。一般在系统中可选用硬件滤波和 软件滤波 。
硬件滤波又分为无源滤波和有源滤波,无源滤波是通过 RC 滤波器或 LC 滤波器等模拟滤波器进行滤波。硬件滤波的优势是不需要进行复杂的程序处理,反应灵敏。
软件滤波有时候也称数字滤波是通过一定的算法削弱噪声的影响软件滤波的优势是不需要硬件的投入,仅仅靠代码就可以完成,而且可靠稳定。
限幅滤波基本思路是根据被测对象确定相邻两次采样所允许的最大差值△Y, 然后在每次采样后和上次有效采样值进行比较, 如果变化幅度不超过△Y,则本次采样有效;否则,则这次采样值被视为干扰而放弃,而以上次采样值为准。
其原理可用如下公式表示:
|yn-yn-1|≤△Y :yn 有效 如果本次值与上次值之差<=DEVIATION_MAX,则本次值有效;
|yn-yn-1|>△Y :yn-1 有效 如果本次值与上次值之差>DEVIATION_MAX,则本次值无效,放弃本次值,用上次值代替本次值。
yn 为第 n 次采样值, yn-1 为第(n-1)次采样值
△Y一般根据经验来设定,确定两次采样允许的最大偏差值(设为DEVIATION_MAX);
/* DEVIATION_MAX,根据实际情况调整。value为有效值,new_value为当前采样值;
滤波程序返回有效的实际值 */
注:本文假定从16位AD中读取数据(若采用更高位的AD可定义数据类型为int);子程序为get_ad(),用于获取AD采样数值;
#define DEVIATION_MAX 10
int16_t value;
int16_t filter(void)
{
int16_t new_value;
new_value = get_ad();
if ((new_value - value > DEVIATION_MAX) || (value - new_value > DEVIATION_MAX))
{
return value;
}
else
{
return new_value;
}
}
优点:能有效克服因偶然因素引起的脉冲干扰;缺点:无法抑制那种周期性的干扰、平滑度差;
全部0条评论
快来发表一下你的评论吧 !