【C】陷波滤波器


1. 什么是陷波滤波器?

陷波滤波器(Notch Filter,带阻滤波器)
是一种能够“只衰减掉某一特定频率”(或很窄一段频率)的滤波器,
其它频率基本不影响,像“挖了个坑/陷阱”让某个频率信号通过时掉下去消失。

数学上,理想陷波滤波器对该频率的增益是0,对其他频率接近1。


2. 伺服驱动器里为啥要用陷波滤波器?

在实际伺服电机和机械结构系统中,

  • 很容易遇到“机械共振点”(比如某个机械部件有弹性、连接有松动、机构结构有自振频率)

  • 当电机运动时,碰巧控制指令/扰动含有该频率成分,就会引起共振,表现为:

    • 电机高速异响
    • 位置/速度波形出现强烈抖动、放大
    • 严重时过流报警,甚至机械损伤

陷波滤波器的作用:

  • 就是在驱动器里,把“易共振的频率点”信号滤掉,比如机械共振在42Hz,你就在42Hz做个陷波;
  • 这样控制指令里哪怕有42Hz的内容,也被滤波器“吃掉”,大幅抑制机械共振,提升伺服稳定性

3. 能用来干什么?实际应用例子

(1)共振抑制

  • 这是最常见的用法。
  • 用自整定/手动测试查出你设备共振点(如42Hz、135Hz),
  • 在伺服驱动器参数里设置陷波滤波器频率(Notch1=42Hz,Notch2=135Hz等),
  • 调整带宽(带宽越宽,影响范围大但副作用大;带宽越窄,对准频率效果好,影响小)。

(2)消除电机振动/高频噪音

  • 机械结构老化或有弹性部件,经常在某一频率抖动,滤掉这频点后噪音/振动马上变小。

(3)提高伺服系统带宽,防止高增益导致共振

  • 做高响应的调试时,带宽调高常常遇到共振,合理加陷波可以让你提升带宽参数,响应更快而又不自激。

(4)有些设备带有多段机械谐振(多频点),可以多级陷波滤波器并联


4. 陷波滤波器的调试注意点

  • 不能乱设:一定要测出具体共振点频率(自整定或扫频),精确设置,否则会误伤正常控制频率
  • 带宽不要太宽:太宽会把正常频率段一起滤掉,影响系统响应、拖慢控制
  • 一般一个系统可以设1~3个陷波,大部分场合一两个够了

5. 一句话总结(实用)

伺服驱动器的陷波滤波器,是专门用来抑制和消除机械系统特定共振频率的,有效防止共振带来的抖动、异响和过流,是高性能伺服系统调试的常用工具。


### 陷波滤波器原理 陷波滤波器能够在特定频率处显著衰减输入信号,从而阻止这一频率的信号通过。这种特性使得它成为一种特殊的带阻滤波器,其阻带宽度极窄[^1]。 对于实现方式而言,由于陷波滤波器具有较窄的阻带,因此其实现通常依赖于至少二阶以上的滤波结构来获得足够的选择性和陡峭度。这意味着,在实际应用中,为了有效抑制目标频率而不影响相邻频段内的有用信号,设计者往往会选择更高阶数的滤波器模型[^2]。 ### 应用场景 #### 图像处理领域中的应用 在图像处理方面,当面对由固定模式噪声引起的周期性干扰时,可以通过构建针对这些特定频率成分的陷波滤波器来进行有效的去除工作。具体操作流程包括先对原始图片执行傅里叶变换转换至频域空间;接着定义一个能够覆盖住待消除频率位置的小范围掩模作为我们的陷波函数;之后利用这个自定义好的模板乘积运算作用在整个频谱之上完成过滤过程;最终再经反向傅立叶变化返回到空间域展示净化过的视觉成果[^4]。 #### 控制系统优化 另外,在控制系统内也常见到此类工具的身影——比如用来对抗机械装置内部存在的自然振动现象或者是电力电子设备里的谐波污染等问题。借助MATLAB/Simulink平台上的建模仿真功能,工程师们可以方便快捷地测试不同配置下的性能表现,并据此调整参数直至找到最理想的解决方案[^5]。 ```matlab % MATLAB代码示例:简单的一维数据去噪 fs = 1e3; % Sampling frequency (Hz) t = linspace(0, 1, fs); f_notch = 60; % Notch frequency to remove (Hz) [b,a] = iirnotch(f_notch/(fs/2), 3); % Design notch filter coefficients input_signal = sin(2*pi*50*t)+sin(2*pi*f_notch*t)+randn(size(t))*0.2; filtered_signal = filtfilt(b, a, input_signal); figure; subplot(2,1,1); plot(t,input_signal,'b'); title('Original Signal with Noise at 60 Hz'); xlabel('Time(s)'); ylabel('Amplitude'); subplot(2,1,2); plot(t, filtered_signal,'r'); title(['Filtered Signal - ', num2str(f_notch),' Hz Removed']); xlabel('Time(s)'); ylabel('Amplitude'); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值