运放补偿网络波特图LTspice仿真:PI、II型、PID
偏置调节电路
补偿器的输出电压只有在一定的范围内时才能正常工作。开环工作时,补偿器的输出很容易饱和,导致仿真结果不正确。
所以,需要加一个偏置调节电路,使得补偿器的输出电压Vc在合适范围内,如下图,参考LDO的原理,搭建了一个偏置调节电路。
- 补偿器输出Vc直连理想运放
U3
的正输入,电压源V2
设置Vc的电压为3V - 理想运放
U3
的输出为vout - vout经过分压网络后,连接到补偿器的输入。
偏置调节的原理: Vc>3V——U3的输出Vout↑——补偿器输入↑——补偿器输出Vc↓。
然后在这个环路中加入一个交流激励V4,就可以通过ac仿真来获得补偿器的波特图。对于上图,控制器的传递函数为:
G
c
(
s
)
=
V
c
(
s
)
V
o
u
t
(
s
)
G_c(s)=\frac{V_c(s)}{V_{out}(s)}
Gc(s)=Vout(s)Vc(s)
绘制波特图时公式相同(但是,一般看补偿器的波特图时,不考虑引入的180°相位,所以最终公式为 -Vc/Vout)。
PI控制器
理想运放
PI控制器传递函数为:
−
G
c
(
s
)
=
Z
f
(
s
)
Z
i
n
(
s
)
=
R
2
R
1
+
1
R
1
C
s
-G_c(s)=\frac{Z_f(s)}{Z_{in}(s)}=\frac{R_2}{R_1}+\frac{1}{R_1 Cs}
−Gc(s)=Zin(s)Zf(s)=R1R2+R1Cs1
K
P
=
R
2
R
1
K_P=\frac{R_2}{R_1}
KP=R1R2
K
i
=
1
R
1
C
K_i=\frac{1}{R_1 C}
Ki=R1C1
因此,PI控制器有一个零点在
f
z
=
1
2
π
R
1
C
f_z=\frac{1}{2\pi R_1 C}
fz=2πR1C1
例如,设置Kp=1,fz=10kHz,仿真得到的波特图为:
- 高频增益0dB,即1
- 转折点大致在10kHz
LTspice的理想运放其实也是有带宽和增益的(而不是无穷大),右键点击元件可以修改:
非理想运放
对于实际运放,高频的增益和相位会有明显变化。例如,
- 对于带宽较低的LT1077(增益带宽积250kHz),在30kHz以上,增益和相位都明显偏离理想情况。
- 带宽较高的LT1124(增益带宽积12.5MHz),在1MHz以内的增益与理想情况差异不大,但是200kHz以上的相位有较大偏差。
II型控制器
对于II型控制器,
Z
f
(
s
)
=
(
R
2
+
1
C
1
s
)
/
/
1
C
2
s
Z
i
n
(
s
)
=
R
1
−
G
c
(
s
)
=
Z
f
(
s
)
Z
i
n
(
s
)
=
C
1
R
2
s
+
1
R
1
s
(
C
1
+
C
2
+
C
1
C
2
R
2
s
)
≈
C
1
R
2
s
+
1
R
1
C
1
s
(
1
+
C
2
R
2
s
)
Z_f(s) = (R_2+\frac{1}{C_1 s} )// \frac{1}{C_2 s} \\ Z_{in}(s) = R_1 \\ -G_c(s) = \frac{Z_f(s)}{Z_{in}(s)}=\frac{C_1 R_2 s + 1}{R_1s(C_1 + C_2 + C_1 C_2 R_2 s)} \approx \frac{C_1 R_2 s + 1}{R_1C_1 s(1 + C_2 R_2 s)}
Zf(s)=(R2+C1s1)//C2s1Zin(s)=R1−Gc(s)=Zin(s)Zf(s)=R1s(C1+C2+C1C2R2s)C1R2s+1≈R1C1s(1+C2R2s)C1R2s+1
推导:
II型控制器有2个极点,极点1为原点,极点2约为
f
p
2
≈
1
/
(
2
π
C
2
R
2
)
f_{p2}\approx 1/(2\pi C_2R_2)
fp2≈1/(2πC2R2),和1个零点
f
z
=
1
/
(
2
π
C
1
R
2
)
f_{z}=1/(2\pi C_1R_2)
fz=1/(2πC1R2),其中,零点的频率一般会小于极点2的频率,因此有
C
1
>
>
C
2
C_1>>C_2
C1>>C2。因此能做上面的近似。
此外,频率在
f
z
f_{z}
fz和
f
p
2
f_{p2}
fp2之间时,控制器的增益约为
R
2
/
R
1
R_2/R_1
R2/R1。
基于这些信息,设计一个中频增益10,零点100Hz,极点10kHz,参数如下图公式:
仿真得到的波特图如下: 零点约100Hz,极点约10kHz,中频增益20dB,同设计值。
(具体II型控制器的参数选择还要看相位抬升的度数和抬升处的频率,此处不涉及。)
PID控制器
PID(III型)控制器的传递函数为
− G c ( s ) = Z f ( s ) Z i n ( s ) = ( C 1 R 2 s + 1 ) [ C 3 ( R 1 + R 3 ) s + 1 ] R 1 s ( C 3 R 3 s + 1 ) ( C 1 + C 2 + C 1 C 2 R 2 s ) ≈ ( C 1 R 2 s + 1 ) [ C 3 ( R 1 + R 3 ) s + 1 ] R 1 s ( C 3 R 3 s + 1 ) ( C 2 R 2 s + 1 ) -G_c(s) = \frac{Z_f(s)}{Z_{in}(s)}=\frac{(C_1 R_2 s + 1)[C_3 (R_1 + R_3 )s+1]}{R_1s(C_3 R_3 s+1)(C_1 + C_2 + C_1 C_2 R_2 s)} \approx \frac{(C_1 R_2 s + 1)[C_3 (R_1 + R_3 )s+1]}{R_1s(C_3 R_3 s+1)( C_2 R_2 s + 1)} −Gc(s)=Zin(s)Zf(s)=R1s(C3R3s+1)(C1+C2+C1C2R2s)(C1R2s+1)[C3(R1+R3)s+1]≈R1s(C3R3s+1)(C2R2s+1)(C1R2s+1)[C3(R1+R3)s+1]
推导:
零极点为:
f p 1 = 0 f p 2 = 1 2 π R 3 C 3 f p 3 = 1 2 π R 2 C 2 f z 1 = 1 2 π R 2 C 1 f z 2 = 1 2 π ( R 1 + R 3 ) C 3 f_{p1} = 0 \\ f_{p2} = \frac{1}{2\pi R_3 C_3} \\ f_{p3} = \frac{1}{2\pi R_2 C_2} \\ f_{z1} = \frac{1}{2\pi R_2 C_1} \\ f_{z2} = \frac{1}{2\pi (R_1+R_3) C_3} fp1=0fp2=2πR3C31fp3=2πR2C21fz1=2πR2C11fz2=2π(R1+R3)C31
低频增益约为
R
2
/
R
1
R_2/R_1
R2/R1(C2和C3开路,C1短路),中频增益约为
R
2
/
(
R
1
/
/
R
3
)
R_2/(R_1//R_3)
R2/(R1//R3)(C2开路,C1和C3短路)。
例如,选择
f
z
1
=
100
,
f
z
2
=
1
k
,
f
p
2
=
10
k
,
f
p
3
=
100
k
f_{z1}=100,f_{z2}=1k,f_{p2}=10k,f_{p3}=100k
fz1=100,fz2=1k,fp2=10k,fp3=100k, 低频增益
g
a
i
n
l
o
w
=
10
gain_{low}=10
gainlow=10,选定R1=20k,参数计算如下图仿真模型:
其中,C3的计算较为复杂,因为同时与R1和R3有关:
C
3
=
1
f
z
2
−
1
f
p
2
2
π
R
1
C_3= \frac{\frac{1}{f_{z2}}-\frac{1}{f_{p2}}}{2\pi R_1}
C3=2πR1fz21−fp21
获得的波特图如下:
- 两个零点在100Hz和1kHz附近
- 低频增益约21dB
- 两个极点在1k和10k附近
- 相位抬升约140°
总结
- 用LTspice仿真一些控制器的波特图。使用了一个基于理想运放的偏置调节电路,使控制器的输出在一个设定值附近,防止输出饱和影响仿真。
- 简单介绍了PI、II型、III型(PID)控制器的传递函数和参数选择。
- 保留偏置调节电路并修改补偿器部分,也可以获得其他控制器电路的波特图,比如TL431+光耦: