數位電源_ST STM32G474_峰值電流控制與斜率補償功能實作

1. 前言

通常電源轉換架構的控制 ( 例如 Buck、Flyback… ) 常用的兩種閉迴路控制模式 : 電壓模式控制與電流模式控制。根據實際應用來選擇電壓模式或電流模式。當有負載變化較大的情況時,電流模式控制的響應速度會比電壓模式快,如果輸出電壓變動範圍規格較嚴苛時,就會選擇電流模式控制較容易設計符合規格。

此篇博文會讓讀者了解如何使用 ST 的主控晶片 STM32G474 來實現峰值電流控制並且包含斜率補償功能。


準備工具 :

a. STM32G474 評估板 : NUCLEO-G474RE

b. 軟體工具 : STM32CubeMX

c. 軟體工具 : STM32CubeIDE 1.12.0


功能說明 :

a. 使用一組 PWM輸出一個 channel, 搭配內部模組連動DAC 同步產生負斜率。

b. 設定另外一組 PWM,搭配內部模組連動DAC 同步產生正斜率來模擬電流訊號。

c. 設定比較器連接外部電流訊號,當外部電流訊號頂到內部產生的負斜率訊號,就會連動切斷PWM,直到下一個 PWM週期在繼續打開 PWM。

d. 在程式內修改DAC初始參數,就可以看到 PWM Duty會隨著 DAC 的變動來改變 PWM Duty 大小。


2. STM32G474 EVM硬體設置 :

使用 STM32G474 EVM ( NUCLEO-G474RE ) 腳位配置與訊號連接如下:

2.1. 示波器 Ch1 連接 PWM 輸出,觀察 PWM Dduty 變化。

       EVM PA8 ( HRTIM1_CHA1 ) -> 示波器 Ch1

2.2. 示波器 Ch2 連接DAC產生的負斜率訊號

       EVM PA4 ( DAC1_OUT1 ) -> 示波器 Ch2

2.3. 模擬的電流訊號連接到內部比較器

       EVM PA6 ( DAC_2_OUT1 ) -> EVM PA1 ( COMP1_INP )

2.4. 示波器 Ch3 連接模擬電流訊號

       EVM PA6 ( DAC_2_OUT1 ) -> 示波器 Ch3

NUCLEO-G474RE 訊號Pin腳如下圖




3. CubeMX 配置

新建一個 STM32G474 CubeMX專案,以下流程為峰值電流控制的關鍵周邊模組設定。

3.1 設定 Clock & 周邊模組

3.1.1設定 System clock 與周邊模組時脈 : 170MHz



3.1.2 設定周邊 Pin 腳功能

PA13 : SYS_JTMS-SWDIO ( 預設燒錄 Pin 腳 )

PA14 : SYS_JTCK-SWCLK ( 預設燒錄 Pin 腳 )

PA8 : HRTIM1_CHA1 ( 輸出PWM 驅動訊號 )

PA10 : HRTIM1_CHB1 ( 輸出PWM同步模擬電流 DAC )

PA1 : COMP1_INP ( 設定比較器,內部觸發關閉 PWM duty )

PA4 : DAC1_OUT1 ( 設定 DAC1輸出,電流控制命令準位包含負斜率 )

PA6 : DAC2_OUT1 ( 設定 DAC2輸出,當作模擬電感電流訊號 )


3.2 設定 DAC 模組

與 PWM 同步產生負斜率訊號。


3.2.1 設定 DAC1 : (與Timer A同步,產生負斜率)

OUT1 mode : Connected to external pin and to on chip-peripherals ( DAC訊號同時輸出到外部 Pin 腳與內部周邊 )

Trigger : HRTimer RST Out1 event ( 設定 HRTimer 的 Out1 reset trigger )

Trigger2 : HRTimer STEP Out1 event ( 設定 HRTimer 的 Out1 STEP trigger )

Wave generation mode : Sawtooth wave generation ( 產生鋸齒波 )

Polarity : Sawtooth polarity decrement ( 遞減的鋸齒波 )

Reset Data : 3000 ( DAC 參數起始點為3000 )

Step Data : 100 ( 每次遞減 100 )



3.2.2 設定 DAC2 : (與Timer B同步,產生正斜率訊號來模擬電流)

OUT1 mode : Connected to external pin and to on chip-peripherals ( DAC訊號同時輸出到外部 Pin 腳與內部周邊 )

Trigger : HRTimer RST Out1 event ( 設定 HRTimer 的 Out2 reset trigger )

Trigger2 : HRTimer STEP Out1 event ( 設定 HRTimer 的 Out2 STEP trigger )

Wave generation mode : Sawtooth wave generation ( 產生鋸齒波 )

Polarity : Sawtooth polarity increment ( 遞增的鋸齒波 )

Reset Data : 2000 ( DAC 參數起始點為2000 )

Step Data : 50 ( 每次遞減 50 )

3.3 設定比較器 :

外部電感電流訊號進入比較器。


3.3.1 設定 COMP1

點選 COMP1

勾選 Input [+]

Input[-] : DAC1 OUT1 ( 選擇 DAC 訊號來源為 DAC1 的 OUT1 )



3.4 設定 HRTIM ( Timer A )

設定 TimerA 的 Channel 1 為主要控制 PWM 輸出。


3.4.1 設定HRTIM External Event (外部觸發信號)

HRTIM1->External Event Configuration->External Event 4

Event Configuration: Enable External Event 4 (啟動外部訊號 Event 4)

Source : External Event Source 2 – COMP1 (選擇外部訊號來源為 COMP1)

Event Polarity : External event is active high (外部訊號為高電位時動作)

Event Sensitivity : External event is active on Rising edge (外部訊號為上升沿時動作)



3.4.2 設定 HRTIM1 的 Timer A Channel 1 輸出 PWM

-> 點選 HRTIM1

-> Timer A : TA1 out active (啟動TA1 PWM輸出)

-> PWM 輸出設定為 HRTIM1_CHA1 ( Pin:PA8 )



3.4.3 HRTIM1 Timer A 參數設定 (1)

點選 HRTIM -> 點選 Timer A

Period : 27200 ( 設定 PWM 頻率為 200Khz )

Dac Synchro : DAC synchronization event generated on DACTrigOut1 output upon timer update ( 設定與 DAC1 同步 )

Repetition Update : Update on repletion enabled ( 啟動 Timer Repetition Update 功能 )



3.4.4 HRTIM1 Timer A 參數設定 (2)

點選HRTIM1->點選Timer A

-> Compare Unit 1

   Compare Unit 1 Configuration: Enable 

   Compare Value : 27200 ( PWM Set時間點 )

-> Compare Unit 2

   Compare Unit 2 Configuration: Enable 

   Compare Value : 100 ( DAC斜率每次更新時間 )

-> Compare Unit 4

   Compare Unit 4 Configuration : Enable 

   Compare Value : 2720 ( PWM Reset 時間點 )




3.4.5 HRTIM1 Timer A 參數設定 (3)

點選HRTIM1->點選Timer A

Set Source Selection : 1  (設定1個PWM set)

   1st Set Source : Timer compare 4 ( 設定 PWM set為 compare 4 )  

Reset Source Selection : 2 ( 設定2個PWM reset )

   1st Reset Source : Timer compare 1 ( 設定 PWM reset 為 compare 1 )

   2nd Reset Source : External event 4 ( 設定 PWM reset 為 外部 event 4 )

Dual DAC Channel Configuration :

   Dual DAC Channel Trigger : Slope compensation Edge-aligned PWM ( 設定邊緣對齊斜率補償 )

        Dual Channel Dac Reset : the trigger is generated on count reset ( 設定 DAC reset )

        Dual Channel Dac Step : the trigger is generated on compare 2 event ( 設定 Dac step )



3.5 設定 HRTIM ( Timer B )

透過 Timer B 來產生正斜率的 DAC 訊號,輸出到外部 Pin 腳來當模擬電感電流訊號。

3.5.1 設定 HRTIM1 的 Timer B Channel 1 輸出 PWM

-> 點選 HRTIM1

-> Timer B : TA1 out active ( 啟動TB1 PWM輸出 )

-> PWM 輸出設定為 HRTIM1_CHB1 ( Pin:PA10 )



3.5.2 HRTIM1 Timer B 參數設定 (1)

點選 HRTIM -> 點選 Timer B

Period: 27200 ( 設定 PWM 頻率為 200Khz )

Dac Synchro: DAC synchronization event generated on DACTrigOut2 output upon timer update  

           ( 設定與 DAC2 同步 )

Repetition Update : Update on repletion enabled ( 啟動 Timer Repetition Update 功能 )



3.5.3 HRTIM1 Timer B 參數設定 ( 2 )

點選HRTIM1->點選Timer B

-> Compare Unit 1

   Compare Unit 1 Configuration: Enable 

   Compare Value : 27200 ( PWM Set時間點 )

-> Compare Unit 2

   Compare Unit 2 Configuration: Enable 

   Compare Value : 100 ( DAC斜率每次更新時間 )

-> Compare Unit 4

   Compare Unit 4 Configuration: Enable 

   Compare Value : 2720 ( PWM Reset 時間點 )



3.5.4 HRTIM1 Timer B 參數設定 ( 3 )

點選HRTIM1->點選Timer B

Set Source Selection : 1 ( 設定1個PWM set )

   1st Set Source : Timer compare 4 ( 設定 PWM set為 compare 4 )  

Reset Source Selection : 1 (設定1個PWM reset)

   1st Reset Source : Timer compare 1 ( 設定 PWM reset 為 compare 1)

Dual DAC Channel Configuration :

   Dual DAC Channel Trigger : Slope compensation Edge-aligned PWM ( 設定邊緣對齊斜率補償 )

        Dual Channel Dac Reset : the trigger is generated on count reset ( 設定 DAC reset )

        Dual Channel Dac Step : the trigger is generated on compare 2 event ( 設定 Dac step )



3.5.5 CubexMX 產生初始程式

點選 GENERATE CODE -> 就可產生每個周邊模組初始設定程式代碼,之後會自動連結 CubeIDE。



到這邊完成 CubeMX 周邊功能設定。


4. 進入 CubeIDE 修改專案程式

4.1 打開專案裡面的main.c -> 定義相關變數



4.2 main.c -> 啟動 DAC1、DAC2、COMP1



4.3 main.c -> 進入 MX_HRTIM1_Init 副程式

                  -> 啟動 HRTIM的 Timer A & Timer B count

                  -> 啟動 HRTIM的 Timer A & Timer B PWM 輸出



4.4 修改 DAC1 負斜率的初始電壓值:

       main.c -> 找到 while(1) 主程式 while 迴圈

                   -> 加入一個 Delay function

                   -> 設定 DAC1 的 Reset值,由 3000 遞減到 2300,再由 2300 遞增到3000

                   -> 再更新 DAC1 Reset Data (負斜率的初始電壓值)


到這邊完成程式設定。



5. 燒入程式觀察結果

5.1 燒錄程式後執行程式,觀察示波器變化 (1)

Ch1: PWM A 輸出

Ch2: DAC1_OUT1 DAC1輸出,電流控制命令準位包含負斜率

Ch3: DAC2_OUT1 輸出正斜率波形模擬電感電流 ( 固定DAC上升斜率,連接到比較器 )

如下圖範例,Ch2 ( DAC1_OUT1 ) 負斜率的起始點假設從 3000 遞減降到 2300,再從 2300 遞增到 3000,可以看到輸出的 PWM duty會隨著 Ch3 ( DAC2_OUT1 輸出正斜率模擬電感電流 ) 頂到 Ch2 ( DAC1_OUT1 負斜率 ) 而改變 PWM duty。
隨著 DAC1_OUT1 負斜率的起始點下降到 1.72V,可以看到 PWM duty 會變大到 22.04%。

Ch1: PWM duty ( 22.04% ) , Ch2 : DAC1_OUT ( 1.72V )



5.2 燒錄程式後執行程式,觀察示波器變化 ( 2 )  

如下圖隨著 DAC1_OUT1 負斜率的起始點上升到 2.6V,可以看到 PWM duty 會變大到 63.6%。

Ch1: PWM duty ( 63.6% ) , Ch2 : DAC1_OUT ( 2.6V )




在電源應用裡面,常常會使用峰值電流模式來做控制,以上就是使用 ST的 STM32G474 系列 MCU 來實作與實現單臂 PWM 峰值電流 ( 含斜率補償 ) 控制

相關影片

數位電源_ST STM32G474_峰值電流控制與斜率補償功能

通常電源轉換架構的控制 (例如 Buck、Flyback… ) 常用的兩種閉迴路控制模式 : 電壓模式控制與電流模式控制。根據實際應用來選擇電壓模式或電流模式。當有負載變化較大的情況時,電流模式控制的響應速度會比電壓模式快,如果輸出電壓變動範圍規格較嚴苛時,就會選擇電流模式控制較容易設計符合規格。

 

此視頻說明如何使用 ST 的主控晶片 STM32G474 來實現峰值電流控制並且包含斜率補償功能。

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論