通常電源轉換架構的控制 ( 例如 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 ) -> 示波器 Ch3NUCLEO-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 峰值電流 ( 含斜率補償 ) 控制
評論