在前面幾篇文章中,著重講述了從初學者角度,如何上手搭建一個數字電源開發板,對于程序內部PI差分方程參數是如何計算的,筆者一帶而過,并沒有太深入地介紹。
最近在用simplis做數字電源的仿真,覺得有必要向讀者介紹一種計算PID參數的思路,與對此感興趣的讀者共同討論。仿真模型就是前面文中用到的數字電源開發板上其中的同步buck電路。下面,筆者先拋磚引玉,介紹一下具體的方法。仿真模型可以在附件中下載。
1)主功率電路的傳遞函數的獲得。
從圖中可以看到,數字電源中的PI軟件算法其實已經用數字電路的方式搭建起來,我們仿真的主要目標就是要得到PI電路中的GAIN_2和GAIN_3的參數。
先將“1”和“2”打到如圖所示的位置。進行AC開環仿真。得到開環環路bode圖:
將開環傳遞函數的曲線導入到matlab中,至于如何導入,筆者以前的文章中也有介紹,這里不再重復。最終在MATLAB中得到與上圖一致的曲線
通過系統識別,可以得到主功率電路的s域傳遞函數。
設主功率電路傳遞函數為Gp:
對于數字電源來說,與模擬電源相比,開環環路中多兩個環節:零階保持器和PWM更新延時環節。所以Gp還要與這兩個環節的傳遞函數相乘,然后再離散化,這樣才能得到數字電源主功率電路的Z域傳遞函數。下面就是求取離散傳遞函數的的過程:
設T為采樣時間,因為ADC觸發設定為每2個PWM周期采樣一次,所以T=20us
Td為PWM更新延時,因為從ADC被觸發開始到PWM更新完成,要經歷了一個PWM周期,所以Td=10us。
matlab代碼如下:
Gz就是數字電源離散化的主功率Z傳遞函數。我們要把這個函數導入到sisotool中,計算PID的參數,命令是:
得到:
即使當PID補償器是1時,開環環路也是穩定的。只是穿越頻率太低,186Hz。
在計算PID參數之前,需要將輸出電壓的采樣分壓比寫入到H中。按下面次序:
點擊“OK”后,再進行PID計算
穿越頻率設為2KHz,相位裕度設為75°。
算出的補償器C的Z傳遞函數為
如果想將C導入到matlab主界面下,如下:
將C的Z域傳遞函數改寫為PID的形式,
將得到的參數代入到simplis模型中,注意圖中紅圈中兩個開關的位置。
GAIN_2的增益為101171,GAIN_3的增益為5324,進行AC仿真
與matlab得到的曲線圖對比
從圖中可以看出,simplis仿真出來的bode圖的穿越頻率為2KHz,相位裕度為75°,與matlab計算值一致。
下圖為simplis仿真出來的一些關鍵節點的波形
將上面的參數寫入到dsp硬件中,用網絡分析儀測試實際環路波形。
輸入電壓:15V
輸出電壓:4.21V 輸出電流:1A
如下圖:
可以得到實際數字電源的穿越頻率為3.3KHz,相位裕度為60°。與計算值有較大的誤差,估計與實際電路中輸出電解電容的ESR和simplis模型中電解電容的ESR有較大出入有關,另外,實際電路中的MOS管驅動芯片的延時較大,也是影響相位裕度的主要的因素,simplis仿真中驅動延時較小,所以與實際誤差較大。但是曲線的整體形狀與simplis仿真生成的曲線比較相似,仿真出的結果還是有一定價值的。有助于我們在計算結果的基礎上調試實際電源。
總結:
介紹了一種計算數字電源環路的方法,結合matlab強大的計算能力,能較快速的得到PID參數。受制于simplis模型的準確程度,計算值與實際值有較大誤差,但在計算值的基礎上再進行硬件的調試工作,就會比較容易得到更準確的結果。