控制器开发---低通滤波器设计

低通滤波器是控制器开发常用的滤波算法,整车常用的信号一般都为低频,而一些噪声信号频率都较高,所以当控制器硬件采集到模拟信号或数字信号可以先进行低通滤波处理,这样可以有效的防止无效频段数据对控制器的干扰。
下面将结合matlab的滤波器设计工具fdatool,先对滤波器进行仿真,将滤波仿真效果好的参数生成传递函数,然后编译成C代码写入控制器软件。
在matlab命令行输入fdatool,弹出fdatool设置界面:
在这里插入图片描述
如果是手写代码,建议滤波器的阶数设计成2,因为2阶的传递函数换算要简单些,虽然阶数越高过滤效果更好,但是不适合手动换算。可以多增加几个2阶的滤波器看最后调试的效果。但如果是matlab模型编写的代码的化,则一步到位,阶数增加按仿真的效果来评估。本滤波器设置的采样频率Fs=1000Hz,截止频率Fc=300Hz,可以看到该滤波器的幅频特性曲线的限值效果。
仿真完成之后,将传递函数的系数保存下来,如下图所示:
在这里插入图片描述
如此,就将低通滤波器离散的传递函数系数保存了下来,接下来需要将其传递函数换算出来,需要用到如下指令:
load(‘lowpass.mat’) %加载系数
sysd=tf(Num,[1,zeros(1,length(Num)-1)],1e-3);%生成传递函数
所以sysd=(0.03735 z^2 + 0.9253 z + 0.03735)/ z^2,其伯德图如下:
在这里插入图片描述
总结一下,滤波器的目的是在设计的频段给信号限幅,同时也会带来相位的滞后,可能会引发其他的问题,所以单个滤波器的效果理想不代表集成的效果理想,还需要根据系统集成的效果来做修正。
本文只是提供下入门的分析思路,关于升阶还需要诸位自己努力啊,谢谢支持!

发布了6 篇原创文章 · 获赞 23 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/luoguo99942/article/details/104654645