死磕陷波器
陷波器传递函数
陷波器的传递函数是:
h
(
s
)
=
s
2
+
w
o
2
s
2
+
2
w
s
+
w
o
2
h(s)=\frac{s^{2}+w_{o}^{2}}{s^{2}+2 w_{} s+w_{o}^{2}}
h(s)=s2+2ws+wo2s2+wo2
其中,
w
o
w_{o}
wo是所谓“中心频率”,也就是你想要“陷掉”的频率。而
w
w
w则是“陷阱”的宽度。
陷波器的伯德图
设定“中心频率”为50Hz,宽度为3Hz。用matlab绘制伯德图,如下:
可见,在50Hz附近的幅值增益很小,说明其对50Hz的抑制作用很强。
离散化
Z变换
利用Z变换可以离散化。也可以利用matlab对S函数进行Z变换,选定离散时间Ts=0.0001,则其Z变换如下:
F
(
z
)
=
Z
2
−
1.999
z
+
1
Z
2
−
1.993
Z
+
0.9937
Z
F(z) = \frac{Z^{2}-1.999 z+1}{Z^{2}-1.993 Z+0.9937 Z}
F(z)=Z2−1.993Z+0.9937ZZ2−1.999z+1
差分方程
Y
X
=
1
−
1.999
Z
−
1
+
Z
−
2
1
−
1.993
Z
−
1
+
0.9937
Z
−
2
\frac{Y}{X}=\frac{1-1.999 Z^{-1}+ Z^{-2}}{1-1.993 Z^{-1}+0.9937 Z^{-2}}
XY=1−1.993Z−1+0.9937Z−21−1.999Z−1+Z−2
Y
=
X
−
1.999
X
k
−
1
+
X
k
−
2
+
1.993
Y
k
−
1
−
0.9937
Y
k
−
2
Y=X-1.999 X_{k-1}+X_{k-2}+1.993 Y_{k-1}-0.9937 Y_{k-2}
Y=X−1.999Xk−1+Xk−2+1.993Yk−1−0.9937Yk−2
有了差分方程,写程序就很简单了。
Simulink仿真结果
利用Sum模块将50Hz、5Hz正弦波,直线信号三个相加,得到一组带有谐波的信号注入到陷波器。如下图所示:
从仿真结果可以看到:滤波后,50Hz的波形被滤除干净。而且其相位基本没有延迟,可见,陷波器对于滤除指定次的谐波有很好的作用。
傅里叶分析
略。
参考文献
陷波器及其算法(基于C语言)https://blog.csdn.net/qq_34473360/article/details/103172281.
基于matlab用c语言实现传递函数https://blog.csdn.net/arris1992/article/details/81013519.