上期通过K因子法介绍了LLC仿真如何实现快速闭环,以及相位提升计算与传递函数的详细推导过程及分析,详见《LLC环路计算与仿真分析——K因子法》。
但是使用该方法是有很多局限性的,如果需要自己放置零极点,该如何像K因子一样根据功率级波特图计算出想要的穿越频率和相位裕度呢?
下面通过运放 光耦的反馈补偿一一介绍:
1、获取功率级波特图
快速闭环后在最大增益满载时设计获取功率级波特图,期望闭环时穿越频率4k,读取此时的增益及相位。
2、补偿器增益与相位提升计算
功率级在4k时增益和相位分别为3.54和16.94度。
所以补偿器在4k时增益应为-3.54。
相位要先减去功率级的16.94度,然后加上期望相位裕度45度,即补偿器在4k时相位应为28.06度。
又因为补偿器为正反馈,初始相位为-90度,所以实际此时提升相位要多加90度,即补偿器提升的相位裕度为:
-16.94° 90° 45°=118.06°
这个与上期介绍的一样,只是这里只通过补偿器来理解。
PM(期望相位裕度)、PS(穿越频率处功率级相位)。boost(需提升相位)。即
boost=PM-PS 90°
3、选择补偿器并搭建正确逻辑
提升相位>90°需要两个零点(最大提升180度),这里使用运放 光耦的三型补偿。
首先选择运放是推光耦还是拉光耦,因为可以兼容电压环电流环双环竞争,这里使用动放拉光耦。
本文VCO逻辑:VFB越大,输出频率越高。
根据压控振荡器逻辑选择光耦连接方式:当Vout ↑,Vop ↓,IF ↑,Ic ↑,VFB ↑ ,fsw ↑,负反馈逻辑正确,所以VFB接在光耦射极。如下:
4、补偿器传递函数推导
根据补偿器推导传递函数:
运放部分:
光耦部分:
光耦原边和副边均有两种连接方式,运放推或拉,反馈脚接集电极或射极,但因为交流小信号分析中电流源开路,电压源短路,所以两种接法的传递函数只有符号不一样,感兴趣的可以仿真验证一下。
5、求解RLEDmax
运放输出最低电压时光耦的二极管侧必须有足够的电流使光耦工作三极管工作在饱和区。
光耦的上拉或下拉电阻与C8形成极点。
6、求解光耦的射极外置电容
先用k因子计算出零极点位置
假设(凑的)上拉电阻10k时光耦极点为12kHz,则可求出光耦内部等效电容
根据上面K因子求得的极点,光耦与下拉电阻形成的极点若与其相同,则光耦电容应该为:
而光耦内部等效电容已经大于配置极点所需的电容:
所以此时K因子已无法通过配置零极点来适应K因子计算极点,需要手动放置并重新计算。
7、手动零极点放置计算
先放置两个极点和一个零点,第1个极点为光耦引入:
第1个零点放1k,第2个极点放50k,这里只是介绍原理,参数是凑的。
相位提升计算方法参考上期《LLC环路计算与仿真分析——K因子法》:
根据上式和第2点所计算出来的增益和相位计算出第二个零点:
按照这几个零极点极可满足期望穿越频率和相位裕度。
8、电阻电容参数计算
计算方法请参考上期《LLC环路计算与仿真分析——K因子法》
补偿器波特图(蓝色为手动放置零极点,橙色为K因子放置):
从波特图可见,手动放置计算的值与K因子计算的值在穿越频率fc处的增益和相位是一样的,但是k因子计算的相位最大值刚好在fc处。
9、仿真验证
按前文计算值设置光耦参数
补偿后的波特图与期望值符合,计算正确。
补偿器波特图,与计算波特图相符。
计算与仿真一致。
10、F11窗口公式
*VCO参数设置
.GLOBALVAR Fswmin=2*55k * the LLC network will see half this value *
.GLOBALVAR Fswmax=2*160k * the LLC network will see half this value *
.GLOBALVAR DT=420n * this is clock pulse width for DT generation *
.GLOBALVAR VFBmax=3.3 * this is the maximum feedback voltage to get Fswmax *
*
.GLOBALVAR Ct=10p
.GLOBALVAR Vswing=2.7 * Timing capacitor final swing *
.GLOBALVAR IFMIN=Ct*Vswing/((1/Fswmin)-DT) * charging current when VFB = 0 V *
.GLOBALVAR IDT=-(IFMIN-Ct*Vswing/DT)/5
.GLOBALVAR G2=-(IFMIN Ct*Vswing/(DT-(1/Fswmax)))/VFBmax
*输入输出设置
.simulator DEFAULT
.VAR Vin = 380
.VAR Pout = 500
.VAR Vout = 26
.VAR RL = Vout^2/Pout
.VAR VREF = 2.5
.VAR R1 = 21.5K
.VAR Rlower = VREF*R1/(Vout-VREF)
*电压环求解
.VAR fc = 4k
.VAR Gfc = 3.59
.VAR PS = 16.94
.VAR PM = 45
.VAR boost = PM-PS 90
.VAR G = 10^(-Gfc/20)
.VAR CTR = 0.48
.VAR Rpulldown = 10k
.VAR RLED = 2K
.VAR fp_opto = 11.1587k
.VAR fp1 = 50k
.VAR fz1 = 1k
.VAR fp2 = fp_opto
.VAR fz2 = fc/(tan(boost*(pi/180)-atan(fc/fz1) atan(fc/fp1) atan(fc/fp2)))
.VAR G1 = CTR*Rpulldown/RLED
.VAR R2 = (G/G1)*R1*(sqrt(1 (fc/fp1)^2))*(sqrt(1 (fc/fp2)^2))/((sqrt(1 (fz1/fc)^2))*(sqrt(1 (fc/fz2)^2)))
.VAR C1 = 1/(2*pi*fz1*R2)
.VAR C3 = (fp1-fz2)/(2*pi*R1*fp1*fz2)
.VAR R3 = R1*fz2/(fp1-fz2)
*参数计算结果查询
*** Print out values to use in step 2
*** Run simulation. From menu, select
*** Simulator >> Edit Netlist (after preprocess)
{'*'} k = {k}
{'*'} G = {G}
{'*'} Rlower = {Rlower}
{'*'} R2 = {R2}
{'*'} R3 = {R3}
{'*'} C1 = {C1}
{'*'} C3 = {C3}
{'*'} G1 = {G1}
{'*'} wp1 = {wp1}
{'*'} wp2 = {wp2}
{'*'} wz1 = {wz1}
{'*'} wz2 = {wz2}
{'*'} fz2 = {fz2}
11、F11窗口计算结果
与MATHCAD计算结果一致。
12、总结
环路计算的资料太多了,但万变不离其宗,主要弄清传递函数推导与相位提升计算,其他的基本就能举一反三了,而且学习环路计算最简单的方法还是得计算加仿真一起,simplis对环路仿真学习非常友好。