在附件中有WDS環路計算工具和筆者的源程序代碼。
下面開始環路控制的代碼編寫。
在本例中,其實是用到了兩個環路補償的計算函數,電壓環路和電流環路。都是用的3P3Z的補償算法。不同的是電壓環路在FMAC硬件中進行計算,不占用CPU的時間,而電流環路只能用CPU進行軟件計算,比較耗費CPU時間。下圖是FMAC工作在IIR濾波器模式下的結構圖:
從上圖中,可以看到環路的差分方程的計算過程。
在程序的初始化時,要初始化這兩個環路參數。
/* Init 2p2z using the FMAC */
if (__3p3zInitFmacInt16( &USER_APPL_FMAC, &cntrlFmac,
A1, A2, 0.0,
B0, B1, B2, 0.0,
post_shift, DUTY_TICKS_MIN, DUTY_TICKS_MAX ) != HAL_OK)
{
/* Configuration Error */
Init_Error_Handler();
}
/* Init 2p2z using the CPU */
CNTRL_3p3zInit(&myDcdc.iLoop, iREF,
iA1, iA2, 0.0,
iB0, iB1, iB2, 0.0,
iK, (float_t)iDUTY_TICKS_MIN, (float_t)iDUTY_TICKS_MAX );
還有一點要注意:FMAC硬件計算電壓環路參數用的是定點數,而CPU計算的電流環路用的是浮點數。
在這里,給讀者推薦一款環路參數軟件(STM32 Biricha WDS,簡稱WDS),專門為STM32平臺開發的環路計算軟件,支持STM32G474VE,而且是免費的。
可以去這個網站https://www.biricha.com/下載,要翻墻!!!
對應STM32的平臺,這個軟件是全功能免費的。當然該軟件也有對應TI平臺的、Microchip平臺的版本,不過后面的這兩個平臺就是收費的了。
下載完后,網站會免費提供給下載者一個注冊密碼,可以自行獲取,在輸入注冊碼后,在ST平臺就可以使用全功能的版本了。這里筆者會在附件中提供該軟件,但不提供注冊碼,避免麻煩。
因為本例中用的是兩相交錯并聯BUCK電路,不是純BUCK電路,而WDS又沒有交錯并聯BUCK的拓普,所以只能用BUCK電路拓普算出一組環路參數后,再其基礎上進行調節。
在此頁面中設定電路的拓普和預想要達到的穿越頻率和相位裕度。
輸出電感和輸出電容的相關參數。
這樣根據前面預想要達到的環路性能指標,該軟件可以自動計算出補償器的零極點的位置,如果對自動計算的結果不太滿意,也可以手動放置補償器零極點的位置。
同時根據補償器的參數,會實時將該補償器傳遞函數的波特圖、功率電路及整體開環傳遞函數的波特圖繪制出來,如上圖所示。
然后是PWM周期和ADC采樣參數的設置,這些工作進行完畢后,會自動計算出FMAC所需要的參數。
然后在其基礎上調試環路參數,使環路穩定。
當要用到CPU計算3P3Z補償器時,就應該選擇浮點數據。如下圖所示:
上述過程將環路參數整定完成,再計算恒壓環路,等待FMAC計算出結果后,然后用該結果更新DAC1和DAC3的參考值。
因為DC電源工作在恒壓恒流的模式下,所以要判斷恒壓環路的結果與恒流環路的結果,哪個比較小,然后用那個較小的值去更新DAC的參考值,以達到自動切換恒壓、恒流這兩種輸出方式的目地。在FMAC的中斷中完成了電壓環路的閉環。
電流環路在ADC1的中斷中進行。
在本例中,還有更多的細節,筆者并沒有進行更深一步的展開。比如DMA的工作方式,ADC發出DMA請求的響應,FMAC的工作方式、FMAC緩存的運行機制、COMP如何快速保護等技術細節都需要讀者詳細閱讀芯片的技術手冊。
在輸入電壓48V,輸出電壓26V,輸出電流60A條件下,用網絡分析儀測試電源開環bode圖:
在WDS理論計算結果的基礎上,進行微調后的bode圖如上圖所示。穿越頻率為2.4KHz,相位裕度為106°,基本上達到了設計目標。
下圖是交錯并聯的兩個主MOS管源極波形
本程序中,還沒用實現同步MOS管的驅動。如果想實現同步整流的功能也比較簡單,如下圖所示,當檢測到輸出電流超過一個限值后,驅動PC7(DCM_CTL)引腳為低電平,即可。
電源工作