【嵌入式底层知识修炼】高性能的ADC一阶滞后滤波算法


越有魅力的事物,往往存在一种“反差”,即其存在两个相互关联的特性,但是各自表现得十分不同

————小白


  一阶滞后滤波又称作RC低通滤波、一阶滤波、一阶惯性滤波、一阶低通滤波等,下文统一称为一阶滞后滤波。

01 - 一阶滞后滤波算法简介

  嵌入式中的ADC数字滤波算法有很多,搜索一下会有常用的10种算法,一阶滞后滤波是其中一种,也是大名鼎鼎的一种,在这10种算法中,虽然一直有人评论其各有优缺点,各有使用场合,但是如果在条件十分受限的实际嵌入式项目中让我选择一种,即使知道或不知道数据源的特性,我都会毫不犹豫地选择一阶滞后滤波算法,数学算法公式为:
Y n = α X n + ( 1 − α ) Y n − 1 (1) Y_{n} = α X_{n} + (1 - α) Y_{n-1} \tag{1} Yn=αXn+(1α)Yn1(1)
  式中: Y n Y_{n} Yn是本次滤波输出值, α α α是滤波系数, X n X_{n} Xn是本次采样, Y n − 1 Y_{n-1} Yn1是上一次滤波输出。
  公式十分简单,只有乘、加的操作并且只有一条计算公式,没有额外的数据计算。

02 - 硬件低通滤波器

  下图为一阶滞后滤波所对应的硬件低通滤波器等效电路,其中:

  • Input相当于于 X n X_{n} Xn:作为信号源的输入
  • Output相当于 Y n Y_{n} Yn:作为目标信号的输出
  • 电阻相当于 α α α:作为滤波系统,设计实验测试阶段可调
  • 电容相当于 Y n − 1 Y_{n-1} Yn1:用于储存上一次的输出值

在这里插入图片描述
  如果在原理图中看到类似的结构,可以认为添加了硬件低通滤波器,此等效电路算是比较简单的一种,还有比较复杂的需要有三极管等电子元件。

03 - 稳定滤波的原理

  滤波的目标是过滤掉数据的各种干扰,得到期望的稳定值,使得系统收敛。下面用坐标轴对公式作一个解释, x x x轴作为时间Time, y y y轴作为AD值Value,AD采集过程中我们能够得到一段采集的数据输入输出记录:
在这里插入图片描述
  就 x x x轴某一个时刻 T T T而言,我们只能得到当前时刻 T T T的输入值Input和前面时刻的 ( T − 1 , T − 2 , … … 1 ) (T-1,T-2,……1) (T1T21)输出值Output,我们把当前时刻得到的输入值记为 X n X_{n} Xn,紧挨着的上一个时刻的输出值记为 Y n − 1 Y_{n-1} Yn1。滤波的目标是得到一个稳定值,何为稳定?什么样的值是稳定的?在不同时刻是否不同?根据一阶滞后滤波算法,如果要回答这些问题,无论如何我们只能假设在上一个时刻的输出值 Y n − 1 Y_{n-1} Yn1是稳定值

因为除开第一个数据,所有数据都有前驱,当前值的滤波与前驱有关,那么随着时间的推移,所有的数据历史会形成一个链条,相邻的项是有联系的,因此只要某个时刻的值发生了变化,那么后面的值都会随之变化,如果我们限定了这些变化的敏感度(与α有关),比如降低敏感度,那么在一个有限的波形内由于变化不敏感,就会过滤掉波动的数据,得到一个认为是收敛的值

  根据假设,因为 Y n − 1 Y_{n-1} Yn1是稳定值,所以 X n X_{n} Xn与它存在一个误差 e e e,也就是:
X n = Y n − 1 + e (2) X_{n} = Y_{n-1} + e \tag{2} Xn=Yn1+e(2)
  其中 e e e可正可负,我们代入公式(1)得到:
Y n = α X n + ( 1 − α ) Y n − 1 = α ( Y n − 1 + e ) + ( 1 − α ) Y n − 1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值