首页 > 解决方案 > 不应引入延迟的低通滤波器

问题描述

我试图在测量时过滤电机的速度,为此,我实现了以下低通滤波器: 在此处输入图像描述

考虑到 Ts = 10 us(采样时间),我选择 fc = 500Hz 和“zoh”近似来获得离散传递函数,这就足够了。从离散传递函数我们可以得到差分方程:

y(k) = a*y(k-1)+(1-a)x(k)

其中,a = exp(-wc*Ts)

在 C 代码中:

 w_real[0] = exp(-2*pi*fc*Ts*1e-6)*w_real[1] + (1-exp(-2*pi*fc*Ts*1e6))*60/(MOTOR.NPolePairs*delay*CLCK_SPD_PERIOD*1e-9);   
 w_real[1] = w_real[0];    

w_real 是一个包含电机角速度值的向量,w_real 1用于存储最后一个值(y(k-1))。运算“60/(MOTOR.NPolePairs delay CLCK_SPD_PERIOD1e-9”对应于实际速度的计算,x(k)。这个低通滤波器不应该包括系统的任何延迟,因为它在 s = -2 pi fc = -3141,距离系统的两个复数极点(s = 1000 +- 878i)足够远,但是,当我应用过滤器时,w_real 的值会出现延迟。

下图显示了系统的阶跃响应 (0.5*u(t)),红色图为带低通滤波器,蓝色图为无低通滤波器: 在此处输入图像描述

增益的差异与蓝色图表有关的是电机的数学模型。如果我退出过滤器,我会获得快速响应,更类似于模型: 在此处输入图像描述

我很困惑,为什么这个过滤器会引入那么长的延迟?

最后,当我模拟模型和滤波器的阶跃响应时:G(s)*LPF(s) 不会出现延迟。

问候,何塞·安东尼奥。

标签: filterdigital

解决方案


推荐阅读