当前位置: 首页 > news >正文

(一)一阶数字低通滤波器---原理及其推导

        在我的学习中,遇到了许多需要用到滤波的场合,比如ADC采样,必然会伴随这随机干扰引起的毛刺噪声,从而需要滤波处理。所以在这里,我对我最常用的一阶低通滤波进行一个推导和总结。      


目录

1.滤波器介绍

2.RC滤波电路分析

3.一阶数字低通滤波器推导(EMA滤波器)

4.滤波系数a的设计


1.滤波器介绍

        电子领域的滤波器,简单理解就是可以“过滤掉”我们不需要的某个频率的波形

       💡 按内部是否有电源和有源器件,可以分为:

        (1)有源滤波器:一般由集成运放和RC网络组成,由电源向集成运放提供能量。除了滤除波形以外,还能够放大特定频率的波形。
        (2)无源滤波器:一般由电容、电感、电阻等无源元件构成,不具备波形放大能力,只能维持或减小输入信号的幅度。

        💡也可以按幅频特性,可以分为:

        (1)低通滤波器(Low Pass Filter) :通低频阻高频
        (1)高通滤波器(High Pass Filter) :通高频阻低频
        (1)带通滤波器(Band Pass Filter) :通中频阻高、低频
        (1)带阻滤波器(Band Elimination Filter) :通高、低频阻中频

        这里我们主要说一下无源RC高低通滤波器


2.RC滤波电路分析

使用电阻和电容可以组成无源RC滤波器,如下图:

图中的R也就是电阻,这个好理解,大家从小也学习过,直流和交流电都能通过,并起阻碍作用,我们称其为阻抗R;

图中的C就是电容,仅能通过交流,并对交流起阻碍作用,我们称其为容抗,用Xc表示;

容抗的公式为:

我们可以看出,电容的阻抗Xc和电容C和输入的频率f的大小有关。

💡当以电容端电压为输出Uout时,其值为下图:

从而可知,低频的信号能够很好的通过,高频的信号反而会受到抑制,从而达到低通滤波的效果。

💡当以电阻端电压为输出Uout时,其值为下图:

 可知,高频的信号能够很好的通过,低频的信号反而会受到抑制,从而达到高通滤波的效果。

🔍在这里我们对RC低通滤波进一步分析:

在控制理论中,我们可以得到RC低通滤波电路的传递函数:G(s) = \frac{1}{​{1 + \tau s}}   ,也被称为一阶惯性环节。其中τ为时间常数,τ = RC;而我们的截止频率则为 ωc = 1/τ = 1/RC


3.一阶数字低通滤波器推导(EMA滤波器)

我们的的低通滤波是一个连续的模型,如果我们想把他用到单片机控制等数字系统中,则需要对其进行离散化,得到公式:y(k) = (1 − a) ⋅ y(k − 1) + a ⋅ x (k)而离散化后的一阶数字低通滤波器也就是我们常说的EMA滤波器;下面我来对其公式进行推导:

在我们的一阶RC低通滤波电路中,我们的输出为Y(s),输入为F(s)

写出开环传递函数:Y(s) = F(s)G(s),得到:

👉Y(s) = (1/1+τs )F(s)

将其化为时域的微分方程,得到:

👉τ⋅y′+y=x

用一阶后向差分法,对其进行离散化,得到:

👉

其中,T为我们数字系统的采样周期,对上式化简整理,得到:

👉

我们令a = T/T+τ,可以的到我们一阶数字低通滤波器的表达式:

👉y(k) = (1−a) ⋅ y(k−1) + a ⋅ x (k)  -----a称为滤波系数

从而可以将公式用到代码中,由数字系统迭代计算即可达到我们的滤波效果。


4.滤波系数a的设计

在很多时候,我们的滤波系数就是通过凑配和实验的方法得出,但是如果我们已经定好了系统采样时间,并有一个预期的截至频率要求,那我们该如何设计数字滤波器中的滤波系数a呢?

已知我们的ωc = 1/τ = 1/RC

而 

一般情况下,f >> fc,所以:

所以已知采样频率和截至频率,就可以算出我们的滤波系数a了。

以电机控制来举例,一个永磁同步电机的额定转速为2000RPM,极对数为7,对相电流进行采样;

在额定条件下,相电流频率为f = 2000*7/60 = 233Hz,但一般会考虑更大一些的频率,我们选取截至频率fc = 400Hz。而我们的控制代码中设置的采样频率为f = 20kHz;

由此可以计算得滤波系数a = 2pi * 400/20000 = 0.1256637。

从而后续可以在这个基准上,进行调整即可。

http://www.dtcms.com/a/276767.html

相关文章:

  • 程序改错---字符串
  • 十三、K8s自定义资源Operator
  • 客户资源被挖?营销方案泄露?企业经营信息保护避坑指南
  • Python Day11
  • Agent任务规划
  • 【PMP备考】敏捷思维:驾驭不确定性的项目管理之道
  • QT中设计qss字体样式但是没有用【已解决】
  • 文件系统(精讲)
  • JVM与系统性能监控工具实战指南:从JVM到系统的全链路分析
  • 【每日刷题】阶乘后的零
  • SOEM build on ubuntu
  • Golang实战:使用 Goroutine 实现数字与字母的交叉打印
  • 使用bp爆破模块破解pikachu登录密码
  • 使用frp内网穿透:将本地服务暴露到公网
  • 张量类型转换
  • 深入探讨Java的ZGC垃圾收集器:原理、实战与优缺点
  • 格密码--数学基础--08最近向量问题(CVP)与格陪集
  • Mentor软件模块复杂,如何分角色授权最合理?
  • 【PTA数据结构 | C语言版】阶乘的递归实现
  • 串口屏的小记哦
  • 鸿蒙进程通信的坑之ServiceExtensionAbility
  • Datomic数据库简介(TBC)
  • Ntfs!LfsFlushLfcb函数分析之Ntfs!_LFCB->LbcbWorkque的背景分析3个restart页面一个普通页面的一个例子
  • 如何在IEEETrans格式的latex标题页插入图像
  • CCS-MSPM0G3507-4-基础篇-串口通讯-实现收和发
  • Java SE--抽象类和接口
  • 面试150 对称二叉树
  • Waiting for server response 和 Content Download
  • 嵌入式程序调试工具
  • 《人件》阅读笔记