一阶低通滤波器在stm32中的简单应用

article/2025/10/12 2:06:50

        首先来看一个最简单的一阶低通滤波器的电路模型:

        不难推出它的传递函数:

H(s)=\frac{Uo(s)}{Ui(s)}=\frac{1}{1+T_{f}s}

        Tf与滤波器截止频率有关,但是实际程序中会变成一个参数,此时我们可以忽略它。

        然而!我们的stm32接收到的信号是一串序列(离散信号),上面的公式是连续系统下的低通滤波器传递函数,还不能直接拿来编程ヽ(ー_ー)ノ,所以——让我们回忆一下《数字信号处理》课上连续系统离散化的内容,后向差分变换法:

s=\frac{1-z^{-1}}{T}

        T:采样周期,同上面的Tf,最后都会融入一个可调的参数,忽略之。

        离散化后:

U_{o}(z)=\frac{T}{T+T_{f}}U_{i}(z)+\frac{T_{f}}{T+T_{f}}z^{-1}U_{o}(z)

=\frac{T}{T+T_{f}}U_{i}(z)+(1-\frac{T}{T+T_{f}})z^{-1}U_{o}(z) 

=\alpha U_{i}(z)+(1-\alpha )z^{-1}U_{o}(z)

        很显然α范围是0~1,逆z变换,取得可用于编程的时域离散方程:

u_{o}(n)=\alpha u_{i}(n)+(1-\alpha )u_{o}(n-1)

         这是一个一阶IIR滤波器。

        C语言:(有用的功能往往只需要最简单的代码)

//一阶低通滤波,alpha范围0~1
y = alpha*x + (1-alpha)*last_y;
last_y = y;

         好了此贴结束——————————————————————————————

        

(还是稍微贴一个小应用吧,近期垃圾小毕设,各位大佬轻喷orz)

 (来回移动模拟图里那个盒子观察所测Echo脚高电平时间jscope波形 )

//下降沿时间T2
t2 = HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_1);
t2 += tim_overflow_counter * (htim->Init.Period); //定时器溢出中断
high_level_us = t2 - t1; //高电平持续时间 = 下降沿时间点 - 上升沿时间点//低通滤波
t = a*high_level_us + (1-a)*last_t;
last_t = t;

        超声测距模块,用stm32定时器捕获实现测距,滤波器的参数调了一个大概,α=0.2,获取到的高电平时间jscope波形图如下:

 蓝线----滤波前输入;黄线----滤波后输出;绿线----上次输出

        直接上图分析,黄线基本跟随绿线,黄线比蓝线平滑地多而且几处尖峰脉冲被抑制,很明显滤波器可以较好地抑制输入噪声和减小突变量对输出的影响;同时可以看到输出波形相较输入波形有一个明显的滞后(当α值调小时滞后现象会更明显,反之调大则会减缓滞后现象但同时噪声抑制能力下降,如下)

α=0.5

黄线基本跟蓝线重合

α=0.01

输出平滑是非常平滑了,这输出和响应是真离了大谱了 

         因此一阶低通滤波器会造成输出滞后,而且动态性能和稳定性二者不可得兼——凑合着调吧,一阶滤波器要啥自行车。

        菜鸡考研途中闲来之举,文中错误欢迎各位大佬批评指正。


http://chatgpt.dhexx.cn/article/ORRng59P.shtml

相关文章

数字一阶低通滤波器simulink仿真

数字一阶低通滤波器simulink仿真 原理程序所用公式滤波系数计算方法 仿真根据公式搭建使用simulink自带模型 原理 程序所用公式 y(n) q*x(n) (1-q)*y(n-1) 其中,y(n)表示当前的输出,x(n)表示当前的输入,y(n-1)表示上一次的输出&#xff0…

滞后一秒钟的一阶低通滤波器

用于应对输入跳变到5.5V,让电源工作1s钟然后停机。

matlab中的低通freqs,matlab数字低通滤波器 MATLAB一阶低通滤波器的设计

matlab数字低通滤波器 MATLAB一阶低通滤波器的设计 截止频率50Hz,设计MATLAB低通滤波器的程序及注释,谢谢 %滤波前数据t = 0:0.01:10;f=5*sin(2*pi*20*t)+5*sin(2*pi*60*t);%滤波器设计Fpass = 1; % Passband FrequencyFstop = 50; % Stopband FrequencyApass = 1;% Passban…

一阶低通滤波器与高通滤波器的使用

文章目录 1. 一阶低通滤波器2. 一阶高通滤波器3. 互补滤波器4. Simulink仿真 1. 一阶低通滤波器 其传递函数为: Y U 1 1 R C ⋅ S \frac{Y}{U}\frac{1}{1R C \cdot S} UY​1RC⋅S1​ 其中,滤波器截止频率为 ω c 1 R C \omega_c\frac{1}{R C} ωc​RC…

数字一阶低通滤波器立体解析

一阶惯性环节 一个独立储能元件和一个耗能元件的组合,就可以构成一个惯性环节。 下图就是一个常见的电路,一阶滤波电路,也可以叫一阶惯性环节,为什么叫一阶惯性环节呢? 是因为当输入信号发生突变的时候,输…

一阶低通滤波器方程_一阶有源低通滤波电路与最经典一阶低通滤波器电路图

信号通常会参杂很多干扰信号,滤波是信号处理中的一个重要前提步骤,滤波电路又称为滤波器,它的作用是尽可能减小脉动的直流电压中的交流成分,保留其直流成分,使输出电压纹波系数降低,波形变得比较平滑。换句…

一阶惯性低通滤波器

目录 1.引言 2.时域 3.频域 4.传递函数和波特图 5.数字化的实现 1.引言 一阶惯性滤波,常见的是RC电路,属于低通滤波器,加运算放大器就构成了有源低通滤波器。 可大于截止频率的信号衰减,低于截止频率的通过。主要是用来滤除…

一阶低通滤波器学习

导读:电压型磁链观测器由于物理概念清晰、简单易用而备受关注。然而电压型磁链观测器包含一纯积分项,被积项的初始相位与直流偏置都会影响积分结果。所以对传统电压型磁链观测器的改进措施有很多,本期文章主要介绍采用一阶低通滤波器来替换掉…

一阶数字低通滤波器-C语言/matlab实现

一阶低通滤波适用于较大惯性的系统,如水位,温度,低速电机等 这里先介绍一下一阶RC低通滤波器,因为一阶数字低通滤波器原理来自于这个 1.一阶硬件低通滤波器 原理:RC组成简单的一阶低通滤波电路 计算:电路…

几种常见的RC滤波器-RC低通滤波器

模型及详细使用地址:RC低通滤波器 低通滤波器 图中输入电压为Vi,输出电压为Vo,假设输出阻抗很大,不带负载,输入阻抗很小,理想情况,可以得到一下公式: 进行拉氏变换,假设…

一阶RC低通滤波器(转)

原 【滤波器学习笔记】一阶RC低通滤波 2016年08月11日 20:38:40 吖勉 阅读数&#xff1a;101584 <span class"tags-box artic-tag-box"><span class"label">标签&#xff1a;</span><a data-track-click"{&quot;mod&quo…

四阶RC低通滤波器推导及matlab仿真

四阶RC低通滤波器推导及matlab仿真 RC电路原理推导四阶RC低通滤波电路matlab仿真 RC电路原理推导 因为最近有做一些RC滤波电路的东西&#xff0c;算是将电路知识复习了下&#xff0c;也算是做一些整理&#xff0c;并且将推倒的结果在matlab上进行仿真实验&#xff0c;以验证其…

c语言rc,RC低通滤波器中R和C参数选择

描述 滤波器,顾名思义,是对波进行过滤的器件。“波”是一个非常广泛的物理概念,在电子技术领域,“波”被狭义地局限于特指描述各种物理量的取值随时间起伏变化的过程。该过程通过各类传感器的作用,被转换为电压或电流的时间函数,称之为各种物理量的时间波形,或者称之为信…

RC有源滤波器之低通滤波器(一)

记录一下&#xff0c;方便以后翻阅~ 其他类型滤波器&#xff1a; RC有源高通滤波器RC有源带阻滤波器RC有源带通滤波器 过去的滤波器都是由R、L、C等无源元件组成&#xff0c;称为无源滤波器。现在的滤波器大都是由R、C元件与有源器件&#xff08;如运算放大器&#xff09;组…

一阶电路误差分析_电子电路中的一阶RC低通滤波器

关于一阶滤波器的种种有很多资料可查,像截止频率啊,相移啊什么的,这些在这里就不再重复了。本文主要阐述一下阿呆在学习过程中曾被困扰的地方,及本人的简要分析。 本文从无源RC低通滤波器说起,以一个实例为讨论背景:有一个心电放大电路,最后一级输出阻抗50欧姆,但是该电…

无源低通滤波器

无源RC滤波器“滤除”不需要的信号&#xff0c;因为它们分离并允许仅通过其频率的正弦输入信号&#xff0c;最简单的是无源低通滤波器网络。 在低频应用&#xff08;高达100kHz&#xff09;中&#xff0c;无源滤波器通常使用简单的RC&#xff08;电阻-电容&#xff09;网络构建…

PLC信号处理系列之RC低通滤波器(梯形图)

一阶RC低通滤波器(有些文章称为一阶滞后滤波FirstOrderLagFilter)的详细算法讲解可以参看专栏的其它文章。这里主要考虑有些控制器(FX1S,工控板之类)只支持梯形图语言只能利用梯形图进行编程的。这里我们直接给出一阶RC低通滤波器的梯形图算法程序。希望对大家理解RC低通滤波…

一阶低通滤波器 matlab,(1条消息)RC一阶低通滤波器

由于工作原因一直在接触滤波器,但是对其详细概念和原理一知半解,所以一直想好好学习一下。最近终于抽出时间搜遍各种资料,但总觉得知识点太散,不太方便系统的理解,所以自己整理了一下,希望有所帮助。 第一次编辑发博客,实在不易,word编辑好了,想直接拷贝上来还不行,公…

一阶RC低通滤波器详解(仿真+matlab+C语言实现)

加入技术交流群 领取资料 文章目录 1 预备知识2 simulink 仿真3 simulink 运行结果4 matlab实现5 matlab运行结果6 C语言实现7 C语言运行结果如果本文帮到了你,帮忙点个赞; 如果本文帮到了你,帮忙点个赞; 如果本文帮到了你,帮忙点个赞; HPF 一阶RC高通滤波器详解(仿真…

一阶电路误差分析_一阶RC低通滤波器杂记

关于一阶滤波器的种种有很多资料可查,像截止频率啊,相移啊什么的,这些在这里就不再重复了。本文主要阐述一下阿呆在学习过程中曾被困扰的地方,及本人的简要分析。 本文从无源RC低通滤波器说起,以一个实例为讨论背景:有一个心电放大电路,最后一级输出阻抗50欧姆,但是该电…