上期通過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對環路仿真學習非常友好。