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

不难推出它的传递函数:

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中的简单应用相关推荐

  1. 深入浅出地理解STM32中的中断系统——从原理到简单工程示例——保姆级教程

    深入浅出地理解STM32中的中断系统 一.什么是中断?什么是异常? 二.如何管理中断? 三.NVIC 1 NVIC 特点 2 中断优先级 (1) 优先级分组 3 中断向量表 4 中断服务函数 (1)中 ...

  2. 最小二乘拟合二次曲线在STM32中的实现笔记

    传感器使用前要进行标定, 标定时必定需要进行曲线拟合.若用计算机处理很简单, 但实际中用微控制器中标定时, 只能进行一般的代数运算,无矩阵运算, 处理就显得非常不方便.最小二乘法推导了二次多项式曲线拟 ...

  3. 数字 一阶低通滤波器 详细分析 冰三点水

    数字 一阶低通滤波器 详细分析 作者:冰三点水 原创内容,转帖请注明出处: http://blog.csdn.net/u013608300/article/details/78814693 微信公众号 ...

  4. 数字 一阶低通滤波器 详细分析

    事件的起因是下图1,朋友偶然说到一阶低通滤波器,借此来详细介绍一阶低通滤波器的原理,并附上matlab仿真程序代码.图1中的一阶低通数字滤波器的公式为Eq(1): y(n) = q*x(n) + (1 ...

  5. STM32中GPIO的8种工作模式

    一.推挽输出:可以输出高.低电平,连接数字器件:推挽结构一般是指两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止.高低电平由IC的电源决定.形象点解释:推挽,就是有推有拉,任何 ...

  6. STM32中GPIO的8种工作模式!

    一.推挽输出:可以输出高.低电平,连接数字器件:推挽结构一般是指两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止.高低电平由IC的电源决定.         推挽电路是两个参数 ...

  7. STM32中IO口的8中工作模式

    该文摘自:http://blog.csdn.net/kevinhg/article/details/17490273 一.推挽输出:可以输出高.低电平,连接数字器件:推挽结构一般是指两个三极管分别受两 ...

  8. STM32中C语言知识点:初学者必看,老鸟复习(长文总结)

    说在前面的话 一位初学单片机的小伙伴让我推荐C语言书籍,因为C语言基础比较差,想把C语言重新学一遍,再去学单片机,我以前刚学单片机的时候也有这样子的想法. 其实C语言是可以边学单片机边学的,学单片机的 ...

  9. STM32中GPIO_Mode--GPIO配置

    本篇由转载而来,有侵权请联系作者,谢谢. 原博客地址:https://blog.csdn.net/snow416/article/details/6540646 一.GPIO配置 (1)GPIO_Mo ...

最新文章

  1. window和linux和android进程内存CPU等监控软件
  2. 细粒度图像分割 (FGIS)
  3. 今日 Paper | 多人姿势估计;对话框语义分析;无监督语义分析;自然语言处理工具包等
  4. 计算机外观类型,知道你的笔记本电脑是什么类型的吗?五大类型派对号入座
  5. Delphi 与 DirectX 之 DelphiX(72): TDIB.SephiaEffect();
  6. C/C++中调用api设置mysql连接的编码方式
  7. Unity手游之路lt;七gt;角色控制器
  8. DDMMSS.SS转为DD
  9. uipath循环datatable_UiPath之DataTable转换为List和Array
  10. 耳机不支持android,安卓手机为什么不能用EarPods耳机 原因分析【图解】
  11. java 获取视频信息_Java获取视频参数信息
  12. java是如何简化成一行代码的?-----Lambda表达式初识
  13. NVIDIA显卡驱动丢失 安装失败
  14. windows虚拟网卡驱动开发~开源(建议收藏)
  15. 小型超市管理系统.c
  16. php制作水印图片,PHP实例制作水印图片
  17. 加减法叫做什么运算_加减法的意义及运算定律、性质
  18. 树莓派入门:树莓派的初始设置
  19. pre-trained模型的使用
  20. 计算机大一新生的体验

热门文章

  1. 火车采集 PHP插件 post,火车头采集器外部PHP编程插件的使用
  2. 制作pDF 格式电子书
  3. 【转】BB10 SDK离线安装步骤
  4. tomcat7解压版的下载与配置
  5. Rhapsody使用简介
  6. 红橙Darren视频笔记 换肤框架4 换肤的功能完善 内存泄漏分析
  7. 数据库设计——医药销售管理系统
  8. Windows 7安装步骤
  9. 云知梦php资源下载,云知梦php全站工程师含有每节课源码及php手册
  10. 【附源码】计算机毕业设计java幼儿园管理系统设计与实现