一阶低通滤波器在stm32中的简单应用
首先来看一个最简单的一阶低通滤波器的电路模型:
不难推出它的传递函数:
Tf与滤波器截止频率有关,但是实际程序中会变成一个参数,此时我们可以忽略它。
然而!我们的stm32接收到的信号是一串序列(离散信号),上面的公式是连续系统下的低通滤波器传递函数,还不能直接拿来编程ヽ(ー_ー)ノ,所以——让我们回忆一下《数字信号处理》课上连续系统离散化的内容,后向差分变换法:
T:采样周期,同上面的Tf,最后都会融入一个可调的参数,忽略之。
离散化后:
很显然α范围是0~1,逆z变换,取得可用于编程的时域离散方程:
这是一个一阶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
输出平滑是非常平滑了,这输出和响应是真离了大谱了
因此一阶低通滤波器会造成输出滞后,而且动态性能和稳定性二者不可得兼——凑合着调吧,一阶滤波器要啥自行车。
菜鸡考研途中闲来之举,文中错误欢迎各位大佬批评指正。
一阶低通滤波器在stm32中的简单应用相关推荐
- 深入浅出地理解STM32中的中断系统——从原理到简单工程示例——保姆级教程
深入浅出地理解STM32中的中断系统 一.什么是中断?什么是异常? 二.如何管理中断? 三.NVIC 1 NVIC 特点 2 中断优先级 (1) 优先级分组 3 中断向量表 4 中断服务函数 (1)中 ...
- 最小二乘拟合二次曲线在STM32中的实现笔记
传感器使用前要进行标定, 标定时必定需要进行曲线拟合.若用计算机处理很简单, 但实际中用微控制器中标定时, 只能进行一般的代数运算,无矩阵运算, 处理就显得非常不方便.最小二乘法推导了二次多项式曲线拟 ...
- 数字 一阶低通滤波器 详细分析 冰三点水
数字 一阶低通滤波器 详细分析 作者:冰三点水 原创内容,转帖请注明出处: http://blog.csdn.net/u013608300/article/details/78814693 微信公众号 ...
- 数字 一阶低通滤波器 详细分析
事件的起因是下图1,朋友偶然说到一阶低通滤波器,借此来详细介绍一阶低通滤波器的原理,并附上matlab仿真程序代码.图1中的一阶低通数字滤波器的公式为Eq(1): y(n) = q*x(n) + (1 ...
- STM32中GPIO的8种工作模式
一.推挽输出:可以输出高.低电平,连接数字器件:推挽结构一般是指两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止.高低电平由IC的电源决定.形象点解释:推挽,就是有推有拉,任何 ...
- STM32中GPIO的8种工作模式!
一.推挽输出:可以输出高.低电平,连接数字器件:推挽结构一般是指两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止.高低电平由IC的电源决定. 推挽电路是两个参数 ...
- STM32中IO口的8中工作模式
该文摘自:http://blog.csdn.net/kevinhg/article/details/17490273 一.推挽输出:可以输出高.低电平,连接数字器件:推挽结构一般是指两个三极管分别受两 ...
- STM32中C语言知识点:初学者必看,老鸟复习(长文总结)
说在前面的话 一位初学单片机的小伙伴让我推荐C语言书籍,因为C语言基础比较差,想把C语言重新学一遍,再去学单片机,我以前刚学单片机的时候也有这样子的想法. 其实C语言是可以边学单片机边学的,学单片机的 ...
- STM32中GPIO_Mode--GPIO配置
本篇由转载而来,有侵权请联系作者,谢谢. 原博客地址:https://blog.csdn.net/snow416/article/details/6540646 一.GPIO配置 (1)GPIO_Mo ...
最新文章
- window和linux和android进程内存CPU等监控软件
- 细粒度图像分割 (FGIS)
- 今日 Paper | 多人姿势估计;对话框语义分析;无监督语义分析;自然语言处理工具包等
- 计算机外观类型,知道你的笔记本电脑是什么类型的吗?五大类型派对号入座
- Delphi 与 DirectX 之 DelphiX(72): TDIB.SephiaEffect();
- C/C++中调用api设置mysql连接的编码方式
- Unity手游之路lt;七gt;角色控制器
- DDMMSS.SS转为DD
- uipath循环datatable_UiPath之DataTable转换为List和Array
- 耳机不支持android,安卓手机为什么不能用EarPods耳机 原因分析【图解】
- java 获取视频信息_Java获取视频参数信息
- java是如何简化成一行代码的?-----Lambda表达式初识
- NVIDIA显卡驱动丢失 安装失败
- windows虚拟网卡驱动开发~开源(建议收藏)
- 小型超市管理系统.c
- php制作水印图片,PHP实例制作水印图片
- 加减法叫做什么运算_加减法的意义及运算定律、性质
- 树莓派入门:树莓派的初始设置
- pre-trained模型的使用
- 计算机大一新生的体验