filter - 不应引入延迟的低通滤波器
问题描述
我试图在测量时过滤电机的速度,为此,我实现了以下低通滤波器: 在此处输入图像描述
考虑到 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) 不会出现延迟。
问候,何塞·安东尼奥。
解决方案
推荐阅读
- python - 如何在 macOS 上重新安装 Python?
- mongoose - MongooseModule.forRootAsync - 无法解决依赖关系
- html - HTML5 GamePad API 返回错误或卡住的轴
- sql - ORA-01785: ORDER BY 项目必须是 SELECT 列表表达式的编号
- reactjs - react.js 中 ReactDOM.render 方法和组件渲染方法的区别
- javascript - babel 转换适用于桌面,但不适用于移动设备
- java - Java 和 Maven 的 SDKMAN 安装问题。JAVA_HOME 环境变量未正确定义
- java - 我如何在spring boot jpa中编写内部查询
- vmware-clarity - VmWare-Clarity 右对齐面板/栏
- c - 为什么第一次调用 va_arg 函数得到一个奇怪的数字?