[应用相关] 基于STM32单片机IIR滤波器设计

[复制链接]
9955|98
 楼主| stm32jy 发表于 2019-6-27 15:01 | 显示全部楼层
将串口数据在matlab上进行图像绘制,如下图所示,与与示波器的波形相比,绘制的波形波动很大,在增加采样频率以后采集的波形稍微有所改善。
492165d1469c8dbd23.png
 楼主| stm32jy 发表于 2019-6-27 15:02 | 显示全部楼层
增加采样频率之前的混合信号
466535d1469fe3fd2a.png
 楼主| stm32jy 发表于 2019-6-27 15:03 | 显示全部楼层
将IIR滤波后的数据通过串口的形式打印出来,下图是串口打印的一些列的数据。
568075d146a2d4e1bb.png
 楼主| stm32jy 发表于 2019-6-27 15:03 | 显示全部楼层
将串口数据在matlab上进行图像绘制,如下图所示,与原始混合信号相比,可以看出滤除掉了2.8KHZ的正弦信号部分,由于本IIR滤波器的缺陷,每一周期内都存在着消峰问题。
单片机IIR低通滤波后图像
934135d146a419f4e2.png
 楼主| stm32jy 发表于 2019-6-27 15:04 | 显示全部楼层
修改matlab工具fdatool参数,将其设置为高通滤波器,重新生成b a参数。设计界面如下:
452195d146a6c4849b.png
 楼主| stm32jy 发表于 2019-6-27 15:04 | 显示全部楼层
将STM32单片机工程中的b a参数重新修改,编译完成后重新烧写到开发板中。具体参数如下:
得到相关B  A系数:
B:   1,-2,1   A:   1,  -0.0000000000000,  0.333333   Gain : 0.333333
 楼主| stm32jy 发表于 2019-6-27 15:05 | 显示全部楼层
将IIR滤波高通滤波后的数据通过串口的形式打印出来,下图是串口打印的一些列的数据。
单片机IIR高通滤波后串口输出的数据
837985d146a985f11d.png
 楼主| stm32jy 发表于 2019-6-27 15:05 | 显示全部楼层
将串口数据在matlab上进行图像绘制,如下图所示,与原始混合信号相比,可以看出滤除掉了1.2KHZ的正弦信号部分,由于本IIR滤波器的缺陷,每一周期内都存在着毛刺,有较大部分的尖峰。
 楼主| stm32jy 发表于 2019-6-27 15:05 | 显示全部楼层
单片机IIR高通滤波后图像
514605d146ac2b73de.png
51xlf 发表于 2019-6-27 17:36 | 显示全部楼层
怎么不使用DSP呢?         
i1mcu 发表于 2019-6-27 17:36 | 显示全部楼层
代码呢?           
pmp 发表于 2019-6-27 17:36 | 显示全部楼层
谢谢楼主分享资料了。        
mmbs 发表于 2019-6-27 17:36 | 显示全部楼层
IIR滤波器常用的            
1988020566 发表于 2019-6-27 17:37 | 显示全部楼层
将matlab语言转为C语言?         
lzbf 发表于 2019-6-27 17:37 | 显示全部楼层
计算的效率怎么样呢  
houjiakai 发表于 2019-6-27 17:37 | 显示全部楼层
这个有很多的代码可以参考。      
youtome 发表于 2019-6-27 17:37 | 显示全部楼层
楼主设计好了吗?      
cemaj 发表于 2019-6-27 17:37 | 显示全部楼层
应用非常广泛的。              
sanfuzi 发表于 2019-6-27 17:38 | 显示全部楼层
STM32单片机IIR滤波器,这个应该速度很快。      
youtome 发表于 2019-6-27 17:38 | 显示全部楼层
谢谢分享的。              
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部