之前一直有一些疑问:
于是重新学习了《Fundamentals of Power Electronics》,理解环路增益测量的原理,并且搭建了一个仿真模型进行验证。同时也回顾了控制器的设计。
电源的闭环电压控制框图:
其中,Vg
和iload
是来自输入和负载的扰动,此处不考虑。
简化后的框图如下,有以下几个模块:
Gvd(s)
,输入为占空比d(s)
,输出为输出电压Vo(s)
H(s)
Gc(s)
Gm(s)=Km
再进一步简化成下图(G(s)=Gc(s)Gm(s)Gvd(s)
),根据框图,有如下关系。
E ( s ) = R ( s ) − B ( s ) C ( s ) = E ( s ) G ( s ) B ( s ) = C ( s ) H ( S ) → C ( s ) R ( s ) = G ( s ) 1 + G ( s ) H ( s ) = 1 H ( s ) G ( s ) H ( s ) 1 + G ( s ) H ( s ) = 1 H ( s ) T ( s ) 1 + T ( s ) E(s)=R(s)-B(s) \\ C(s)=E(s)G(s) \\ B(s)=C(s)H(S) \\ \rightarrow \frac{C(s)}{R(s)}=\frac{G(s)}{1+G(s)H(s)}=\frac{1}{H(s)}\frac{G(s)H(s)}{1+G(s)H(s)}=\frac{1}{H(s)}\frac{T(s)}{1+T(s)} E(s)=R(s)−B(s)C(s)=E(s)G(s)B(s)=C(s)H(S)→R(s)C(s)=1+G(s)H(s)G(s)=H(s)11+G(s)H(s)G(s)H(s)=H(s)11+T(s)T(s)
环路增益定义为T(s)=G(s)H(s)
,是环路中所有环节的乘积。
当环路增益的幅值|T(S)|>>1
时,有1+T(S)≈T(S)
,因此C(s)/R(s)=1/H(s)
,即输出仅与反馈系数H(s)
有关。例如,集成DC-DC芯片,Rs对应芯片内部的电压基准,R(s)=0.6V
,电阻分压决定反馈系数H(s)
,如H(s)=10k/(10k+20k)=1/3
,那么DC-DC的输出电压就是Vo=R(s)/H(s)=1.8 V
T(s)
的特性(增益、相位)影响负反馈系统的稳定性(具体原因需要参考奈奎斯特稳定性判据相关资料),具体如下图:
|T(s)|=1
时(0dB),T(s)
的相位arg(T(s))
需要大于-180°。相位裕量定义为180°-arg(T(sg))
。arg(T(sp))=-180°
时,T(s)
的增益需要小于1(0dB)。增益裕量定义为0-20log(|T(sp)|)
有时候环路增益也被定义为
-GH
,因为环路中有一个参考量R与反馈量B相减
的环节,把这个环节也考虑在内,就会引入-180°的相位。因此有些资料中的相位裕量是arg(T(s))
与-360°
的差,实际上两者是等效的。
为了测量环路增益T(S)
,需要在某个地方断开环路并接入测量设备。例如,在反馈环节G(s)
中的某个点A
和GND
之间,如下图,把G(S)
分为了两部分:
Ve(s)
调节占空比等,从而控制输出电压,通过戴维南等效为一个受控源和内阻Z1(s)
Z2(s)
基于上图,环路增益为:
T ( S ) = G 1 ( s ) Z 2 ( s ) Z 1 ( S ) + Z 2 ( S ) G 2 ( s ) H ( s ) T(S)=G_1(s)\frac{Z_2(s)}{Z_1(S)+Z_2(S)}G_2(s)H(s) T(S)=G1(s)Z1(S)+Z2(S)Z2(s)G2(s)H(s)
‘为了更直观地理解,以电压控制的buck电路为例,在反馈电阻处作为与GND之间作为A点,大致分为三部分,与上图对应:
参考电压-反馈
)注意:后续测量的电压的都是交流小信号,即去除直流偏置后的分量。
系统变为开环运行,给反馈网络加一个合适的偏置,使其达到与闭环运行时相同的工作点。
根据框图,测量结果为:
T o = V y ( s ) V x ( s ) = G 1 ( s ) G 2 ( s ) H ( s ) T_o=\frac{V_y(s)}{V_x(s)}=G_1(s)G_2(s)H(s) To=Vx(s)Vy(s)=G1(s)G2(s)H(s)
测量值To(s)
与实际值T(s)
相比,少了Z2/(Z1+Z2)
一项,因此,适用开环测量的条件是:|Z2|>>|Z1|
。
对应到之前的buck电路,这种测量方式相当于:
Vx
作为控制器的输入Vx
的直流分量,使输出电压达到设定值Vx
的交流分量的频率,在各个频率下测量Vy
和Vx
,获得Vy/Vx
的幅频和相频曲线可以看到上图这种设置满足|Z2|>>|Z1|
,因为Z1
是电源的输出阻抗,显然远小于反馈网络的阻抗Z2
。
开环测试的主要问题是,难以通过调节Vx
使系统工作点与闭环情况相同。比如,在上图buck电路中,Vx
电压分压后与参考电压的微小差异都可能使得后级PI控制器饱和,从而导致电路失控。并且工作点的偏移可能导致环路增益表现不同,测量结果不能反映实际情况。
因此,最好在闭环运行情况下测量环路增益。
较为常用的方法是电压注入法,如下图,在原A
点位置串联一个交流源Vz
,测量Vy/Vx
。
i ( s ) = v x ( s ) Z 2 ( s ) − v y ( s ) = − G 1 ( s ) v e ( s ) − i ( s ) Z 1 ( s ) = − G 1 ( s ) G 2 ( s ) H ( s ) v x ( s ) − i ( s ) Z 1 ( s ) → T v ( s ) = v y ( s ) v x ( s ) = G 1 ( s ) G 2 ( s ) H ( s ) + Z 1 ( s ) Z 2 ( s ) i(s)=\frac{v_x(s)}{Z_2(s)} \\ -v_y(s)=-G_1(s)v_e(s)-i(s)Z_1(s)=-G_1(s)G_2(s)H(s)v_x(s)-i(s)Z_1(s) \\ \rightarrow T_v(s)=\frac{v_y(s)}{v_x(s)}=G_1(s)G_2(s)H(s)+\frac{Z_1(s)}{Z_2(s)} i(s)=Z2(s)vx(s)−vy(s)=−G1(s)ve(s)−i(s)Z1(s)=−G1(s)G2(s)H(s)vx(s)−i(s)Z1(s)→Tv(s)=vx(s)vy(s)=G1(s)G2(s)H(s)+Z2(s)Z1(s)
用理论Ts(s)
表示:
T v ( s ) = v y ( s ) v x ( s ) = T ( s ) ( 1 + Z 1 ( s ) Z 2 ( s ) ) + Z 1 ( s ) Z 2 ( s ) T_v(s)=\frac{v_y(s)}{v_x(s)}=T(s)\left(1+\frac{Z_1(s)}{Z_2(s)}\right)+\frac{Z_1(s)}{Z_2(s)} Tv(s)=vx(s)vy(s)=T(s)(1+Z2(s)Z1(s))+Z2(s)Z1(s)
使用电压注入法,为了使测量值Tv(s)
接近实际值T(s)
,前提条件是:
|Z2|>>|Z1|
T(s)>>|Z1|/|Z2|
其中,若满足|Z2|>>|Z1|
,则第二个条件T(s)>>|Z1|/|Z2|
这个条件很容易满足。因此我们使用电压注入法时常说,
要求注入点的输出阻抗(Z1,从注入点往回看)远小于输入阻抗(Z2,从注入点往前看)
是主要因为:在输出与反馈电阻之间串联一个交流源Vz,测量Vy(s)=-Vo(s)和Vx(s)。
用电压注入法测量前文buck电路的环路增益,测量方式如下:在输出与反馈电阻之间串联一个交流源Vz
,测量Vy(s)=-Vo(s)
和Vx(s)
。
电压注入法实现了在电源闭环运行的情况下测量环路增益。只要保证注入的交流电压幅值足够小,对系统的工作点基本无影响。
理论上,注入位置可以是环路的任何一个点。但是,实际选择注入位置时需要关注输出阻抗<<输出阻抗
的测试条件。环路测试仪Venable3120的说明书中给出了一些典型的注入位置。
对于基于TL431和光耦的反馈(常用于反激变换器等隔离型拓扑),需要特别注意,注入的位置需要包括所有反馈路径(下图的Fast和Slow两条路径),而不是只注入其中某一条路径中。
接在输出和反馈电阻之间(同上文buck电路的测量方式)
电流注入法与电压注入法原理类似,但是适用条件与电压注入法相反:
|Z2|<<|Z1|
T(s)>>|Z2|/|Z1|
通过仿真帮助理解环路增益的测量方式。与理想模型对比,验证仿真结果的正确性。
仿真软件使用LTspice。
仿真模型为12V输入、5V2A输出的buck电路,开关频率固定在500kHz,LC等参数与常用的TPS562208等相同。V1用于电压注入,幅值根据需要调整,频率设置为freq
。
根据最理想的模型和上图参数,buck电路的Gvd(s)
的波特图如下,穿越频率在181/6.28=29kHz
,可以适当提高一些,相位裕量8°,需要抬升。
G v d ( s ) = V i L C s 2 + L R s + 1 G_{vd}(s)=\frac{V_i}{LCs^2+\frac{L}{R}s+1} Gvd(s)=LCs2+RLs+1Vi
Vout=0.768*(1+56/10)=5.07V
Vgs
是运放输出电压的2倍,也就是高电平10V。顺便一提,按照下图设置,输出采样电阻的上拉电阻Ru是补偿网络的一部分,但是下拉电阻Rl却不是。因为在小信号等效电路中,参考电压为0,根据运放虚短的特点,下拉电阻Rl和下图R12都接地,所以不影响环路,因此小信号下的反馈系数H=1
。并联在上拉电阻两端的前馈电容会影响环路增益。
理解LTspice中的环路增益测量方式,有助于理解实际环路测试仪的工作原理。主要原理:
测量相关的指令需要直接放置在仿真模型中,如下图。
每次瞬态仿真对应注入交流信号的某一个频率。
具体指令如下:
t0+25/freq
,即稳定t0
后再执行25个周期,只存储t0
之后的稳态数据。.param t0=1.2m
.tran 0 {t0+25/freq} {t0}
a点对应-Vy
(根据之前的电压参考方向,实际上是-Vy
),b点电压对应Vx
。
在LTspice中,通过.measure
来对波形数据进行一些运算。
计算某个频率下的Va/Vb
的频率和相位:
首先,获得直流分量Aavg/Bavg
,后续运算中减去直流分量,只使用交流小信号
通过离散傅里叶变换(DFT),分别获得实部和虚部,反映电压信号VA
和Vb
的幅值和相位。
GainMag
为增益20log(|Va|/|Vb|)
GainPhi
为相位裕量,举例如下:
测量的相位是arg(Va(s)/Vb(s))=-300°
,则实际T(s)
相位是-120°,相位裕量为60°
Va/Vb=-Vy/Vx
,所以此处先加上180度,还原为-Vy/Vx
:-120°.measure Aavg avg V(a)
.measure Bavg avg V(b)
.measure Are avg (V(a)-Aavg)*cos(360*time*Freq)
.measure Aim avg -(V(a)-Aavg)*sin(360*time*Freq)
.measure Bre avg (V(b)-Bavg)*cos(360*time*Freq)
.measure Bim avg -(V(b)-Bavg)*sin(360*time*Freq)
.measure GainMag param 20*log10(hypot(Are,Aim) / hypot(Bre,Bim))
.measure GainPhi param mod(atan2(Aim, Are) - atan2(Bim, Bre)+180,360)-180
DFT参考下式:实际只计算了所需的基频X[1]
,忽略了其他分量。因为需要的是幅值的比值|Va|/|Vb|
,仅需要相对大小,在此处具体幅值不重要。
X [ k ] = ∑ n = 0 N − 1 x n ⋅ e − i 2 π k n / N = ∑ n = 0 N − 1 x n [ c o s ( 2 π k n / N ) − i ⋅ s i n ( 2 π k n / N ) ] X[k] = \sum_{n=0}^{N-1}{x_n\cdot e^{-i2\pi{kn/N}}} = \sum_{n=0}^{N-1}{x_n[cos(2\pi{kn/N}) -i\cdot sin(2\pi{kn/N})]} X[k]=n=0∑N−1xn⋅e−i2πkn/N=n=0∑N−1xn[cos(2πkn/N)−i⋅sin(2πkn/N)]
.step
指令执行扫频,对freq
范围内的多个取值,都分别执行一次瞬态仿真并存储数据,比如下面是5kHz~50kHz
.save
指令存储关键的波形,比如V(a)
和V(b)
.step oct param freq 5K 50K 5
.save V(a) V(b) V(out)
.option plotwinsize=0 numdgt=15
仿真模型搭建完成后,需要简单设置一下各项参数。
需要确认Va
和Vb
的波形,要求没有明显畸变。因为是基于DFT处理获得幅度和相位,并且仅分析了Va
和Vb
基频分量,因此要求没有明显畸变,至少看起来像正弦波。
例如,.step oct param freq 5K 50K 5
会执行18次瞬态仿真,波形如下,符合要求。
调整t0
,.tran 0 {t0+25/freq} {t0}
,确认Va
和Vb
已达到稳态,例如下图。
合理设置交流信号的幅值,使得从Va
和Vb
波形中能教准确地提取出基频分量。例如下图,从波形上看,交流信号的幅值大于开关频率的纹波。
所有仿真运行完成后,幅值和相位数据存储在仿真文件所在目录下的xx.log
文本文件中。可以复制Freq
、GainMag
和GainPhi
数据,用其他软件绘制波特图,也可以通过以下步骤在LTspice中绘制波特图:
View-SPICE Error log
在log中右键,Plot .step'ed .meas data
画图
选择是
,作为复数绘制
弹出窗口中,右键,view-visible traces
,选择gain
,获得环路增益Tv(s)
的波特图,如下。其中相位的读数已经是相位裕量,比如下图中,穿越频率约38kHz
,相位裕量7.9°
。
使用的PI控制器和使用的参数如下(此处的参数根据仿真结果调试得到,参数过大会导致输出振荡),可以看到电压采样电阻R1也影响控制器参数:
G P I ( s ) = R 2 R 1 + 1 R 1 C 1 s = 2 + 1786 s G_{PI}(s)=\frac{R_2}{R_1}+\frac{1}{R_1C_1s}=2+\frac{1786}{s} GPI(s)=R1R2+R1C1s1=2+s1786
使用PI控制器,理论和仿真测量的环路增益Tv(s)
波特图如下,
37kHz
。差异的主要原因是仿真模型考虑了寄生参数,而理论波特图假设所有元件都是理想的。测试半载到满载切换的暂态波形,可以看到负载电流跳变后,输出电压有振荡,且需要较长时间(500 us)才能稳定。
PID控制器和参数如下。此处参数是按照目标穿越频率50kHz
(1/10开关频率)设计。为了便于选择参数,采样处加了一级电压跟随器E1
,彻底消除了采样电阻的影响。
G P I D ( s ) = ( 1 + C 2 R 2 s ) ( 1 + C 1 R 1 s ) C 2 R 1 s ( 1 + C 1 R 3 s ) G_{PID}(s)=\frac{(1+C_2R_2s)(1+C_1R_1s)}{C_2R_1s(1+C_1R_3s)} GPID(s)=C2R1s(1+C1R3s)(1+C2R2s)(1+C1R1s)
使用PID控制器,理论和仿真测量的环路增益Tv(s)
波特图如下,
同样测试半载到满载切换的暂态波形,可以看到负载电流跳变后,输出电压的过冲幅值小于使用PI控制器的情况,并且仅需要70us左右就可以达到稳态。
输出阻抗<<输入阻抗
,需要合理选择测量位置