假设有一个LC滤波电路,电感值为l,电容值为c,那么其电压S域传递函数为:
H
(
s
)
=
1
s
c
1
s
c
+
s
l
H(s) = \frac{\frac{1}{sc}}{\frac{1}{sc} + sl}
H(s)=sc1+slsc1
其中
1
s
c
为电容阻抗
\frac{1}{sc} 为电容阻抗
sc1为电容阻抗
s
l
为电感阻抗
sl 为电感阻抗
sl为电感阻抗
化简得到Z域传递函数:
H
(
s
)
=
1
l
c
s
2
+
1
H(s) = \frac{1}{lcs^2+1}
H(s)=lcs2+11
S域到Z域变换,采用双线性变换,双线性变换公式为:
双线性变换公式:
s
=
2
T
s
⋅
1
−
1
z
1
+
1
z
s = \frac{2}{T_s} \cdot \frac{1 - \frac{1}{z}}{1 + \frac{1}{z}}
s=Ts2⋅1+z11−z1
双线性反变换:
z
=
1
+
T
s
2
1
−
T
s
2
z = \frac{1 + \frac{Ts}{2}}{1 - \frac{T s}{2}}
z=1−2Ts1+2Ts
其中Ts为离散抽样时间。
按照上述公式,进行Z变换得:
H
(
z
)
=
1
(
l
c
(
2
(
z
−
1
)
T
s
(
z
+
1
)
)
2
+
1
)
H(z) = \frac{1}{\left( lc\left(\frac{2(z-1)}{Ts(z+1)}\right)^2 + 1 \right)}
H(z)=(lc(Ts(z+1)2(z−1))2+1)1
化简得到:
(
T
s
(
z
+
1
)
)
2
4
l
c
(
z
−
1
)
2
+
(
T
s
(
z
+
1
)
)
2
\frac{(Ts(z+1))^2}{4lc(z-1)^2 + (Ts(z+1))^2}
4lc(z−1)2+(Ts(z+1))2(Ts(z+1))2
进一步化简得到最终形式:
T
s
2
(
z
2
+
2
z
+
1
)
(
4
l
c
+
T
s
2
)
z
2
+
(
−
8
l
c
+
2
T
s
2
)
z
+
(
4
l
c
+
T
s
2
)
\frac{T_s^2(z^2 + 2z + 1)}{(4lc + T_s^2)z^2 + (-8lc + 2T_s^2)z + (4lc + T_s^2)}
(4lc+Ts2)z2+(−8lc+2Ts2)z+(4lc+Ts2)Ts2(z2+2z+1)
依据最终公式,变换成差分方程即可编写C语言LC滤波程序
前面推导出S域传递函数以后,也可直接使用matlab来进行Z变换,命令为:
tf1=tf(1,[l*c,0,1]);
Ts = 1/1600000.0;
tf2=c2d(tf1,Ts,‘tustin’);
其中Ts 为离散采样间隔