轻松掌握一阶低通滤波(理论推导/实际工程应用)

一阶低通滤波

0 前言

嵌入式开发中,我们可能会使用到许多传感器,比如陀螺仪,测距仪等等。但是在使用的时候,数字量往往带有高频干扰,我们要注意如何将其转化接近真实值并为我们所用,这就不得不提到滤波器的使用了。

但是滤波器种类有很多,诸如卡尔曼滤波器,大伙往往会被其高深的数学公式的推导吓退,在这里推荐一款:一阶低通滤波。它的使用易于上手,可以很快地复用到我们的嵌入式软件开发之中。

1 省流版

我们先看一下一阶低通滤波的直观公式表达:

c(n)=\alpha r(n)+(1-\alpha)c(n-1)

其中c(n)是当前输出,c(n-1)是上一次输出,r(n)是当前输入,α是滤波系数,取值在0与1之间。

  • α越小,滤波输出越平稳,但是响应慢

  • α越大,滤波输出越不稳定,但是响应快

OK,知道这些其实就已经可以用了,我当初也是只知道这个公式然后就去写代码了,效果还不错,后续才逐步探究的原理,具体代码就不放送了。

但是我也认为理解了原理是很有必要的,因为我们可以在一个范围里自主选择滤波系数,寻找符合当前场景的曲线;同时它的原理结合了模电、自动控制原理、信号与系统、数字信号处理等知识。

2 公式原理

曾几何时,我们在电路理论/模电课程上曾经听过(其实是学过)什么低通滤波高通滤波带通滤波等等,这里的“通”指的是允许某种频率的信号通过,而低通滤波器也就是指允许某些低频率的信号通过,阻止高频率的信号通过,这样也就可以消除高频干扰了。

虽然大家可能看到这个老掉牙的电路图就想睡觉,但是因为他是很经典的一阶低通滤波,所以我们还是有必要讲一讲:

RC低通滤波 的图像结果

输入输出关系一目了然,系统的传递函数是:


H(s)=\frac{V_{​{out}}}{V_{in}}=\frac{\frac{1}{sC}}{R+\frac{1}{sC}}=\frac{1}{1+sRC}
 

(这里涉及了自控原理的最基本的知识——传递函数,如果不理解建议查阅一下,自控原理掌握一些对于机器人控制的工作还是比较有帮助的)

这里的RC是时间常数,它是截止频率\omega_{c}的倒数

我们由此可以写出它的幅值和相角:

我们利用Matlab画出它的对数幅频特性曲线:

从幅度曲线上不难发现:当频率大于截止频率时,输出幅度会迅速衰减

从相度曲线上可以发现:当频率大于截止频率时,相位滞后会超过45°(但是输入频率等于截止频率时,相位也会滞后45°,这一点我们要注意)

我们实际上接触的往往是离散的数据,所以我们可以利用z变换进行分析:

做后向差分变换 s=\frac{1-z^{-1}}{T_{c}},在这里Tc是采样时间

代入前面传递函数,并进行z反变换,整理有:


C(n)=C(n-1)+\alpha(R(n)-C(n-1))

其中 \alpha=\frac{T_{c}}{T_{c}+RC}

即 c(n)=\alpha r(n)+(1-\alpha)c(n-1)

OK到这里公式就推到完毕了,但是α怎么选取呢?实际上,我们观察公式发现它只与采样时间与截止频率有关,所以确定了这两个值我们就确定了α

3 滤波系数确定

采样时间Tc是与采样频率的倒数,学过信号与系统的同学都知道奈奎斯特采样定律,我们采样的频率一定要大于等于2倍的原信号频率f,但是实际上我们最好不要选择2倍的f作为采样频率(至于为什么,我相信你随便画一个正弦曲线,以2f的频率取样,他看起来绝对不像一个正弦曲线,尽管通过一些方法可以复原,但是不在我们讨论范围内),可以选择10-20倍信号频率作为采样频率等等

截止频率Wc是保证某种频率以下的信号可以通过的阈值,为了尽可能大的保证基频无损通过,可以令截止频率稍微大于信号基频(当然最好是选择幅值下降了3dB时的频率,可以让Matlab帮你算)

e.g. 比如我们选择10倍信号频率作为采样频率,3倍信号频率作为截止频率,这样算出α就是0.65,实际工程中还需要进一步调试确定最佳滤波系数

顺便说一嘴,别忘了一阶低通滤波之后我们信号的相位是会发生偏移的,如果在意波形相位变化,请进行精确计算后补偿相角。当然,如果你只是想获取信号幅值那就没必要处理。

4 总结

对于实际开发的信号处理时,进行滤波是有必要的,当然还有好多款滤波器,学无止境。虽然某种意义上,能用就行。不过我认为最好还是掌握其中原理,这样二次设计自己的滤波器时才会得心应手。

  • 11
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值