单片机滤波平滑累加处理简单用法 (使用定时器)

一阶滤波,又叫一阶惯性滤波,或一阶低通滤波。是使用软件编程实现普通硬件RC低通滤波器的功能。 

一阶低通滤波的算法公式为:

X(n) = get_ad(); 
Y(n) = αX(n) + (1-α)Y(n-1); 

  式中:α=滤波系数;X(n)=本次采样值;Y(n-1)=上次滤波输出值;Y(n)=本次滤波输出值。 
一阶低通滤波法采用本次采样值与上次滤波输出值进行加权,得到有效滤波值,使得输出对输入有反馈作用。

 

现在开一个10ms定时器

void timer_10ms{
    X(n) = get_ad(); 
    Y(n) = αX(n) + (1-α)Y(n-1); 

    if( fabs(Y(n)-X(n)) < 0.001 ){
        TIMER_DISABLE();
    }
}

通常a=0.9-0.999 

一开始Y会非常小,之后会逐渐靠近X,最后关闭定时器,平滑滤波完成。

实际应用过程中,我们不断读取Y的值就可以得到平滑的数据了。

 

你可能感兴趣的:(算法,嵌入式)