前言
在電源設計中經常會使用逐波限流保護來保證電流不超過限定的最大值,若在短時內多次觸發逐波限流保護則強制封鎖 PWM 輸出,讓系統進入故障保護狀態,在這個過程中需要對逐波限流觸發次數進行計數,以此來判斷是否進入故障保護,本文針對該功能,基于 STM32G474 高精度定時器,介紹如何實現逐波限流保護以及保護次數計數。
逐波限流原理介紹
所謂逐波限流指在電源工作過程中,對電感電流或是功率管導通電流進行實時監測,一旦超出設定范圍,則在該 PWM 周期內立即關閉相關的 PWM 驅動,直到下個 PWM 周期再自動使能PWM 驅動,若電流信號一直超限,則一直封鎖 PWM,直到電流恢復正常的下一個新的 PWM 周期后,才能重新使能 PWM 輸出。工作過程示意圖如下圖所示,OCP 表示過流保護,高電平表示電流超限。
STM32G474 逐波限流保護的實現
STM32G474 的高精度定時器除了能產生高精度的 PWM 波外,還包含了外部事件管理器,能對多達 10 個外部事件進行處理。可以設置外部事件的觸發源、觸發方式(沿觸發或是電平觸發)、相應方式(同步或是異步)以及事件的濾波方式。外部事件的一個最重要的作用就是用來對輸出的PWM 進行控制,觸發 PWM 的 Set 與 Reset 動作。
在觸發源的選擇上,每個外部事件可以從 4 個源中進行選擇:
? 外部 pin 腳輸入
?內部比較器輸出
? 其他定時器觸發信號(如 TIM1/2/3_TRGO)
對應逐波限流功能,可以選擇外部 pin 腳輸入或是內部比較器輸出,推薦的方式為內部比較器輸出。外部電流采樣信號直接輸入到片上比較器(COMPx_INP),比較器的輸出結果作為外部事件觸發源。
基于以上的介紹,利用 CubeMx 工具進行相應的配置來說明整個功能的實現過程,以高精度定時器中的 Timer A 為例,主要介紹外部事件與逐波限流保護的配置,其他的配置不再贅述。外部事件的配置如下,觸發源為內部比較器 2 的輸出,高電平有效。
為了使用內部比較器,必須對內部對應的比較器進行配置,一般選擇 DAC 的輸出作為比較器的參考,所以還需要對 DAC 進行配置。比較器的配置如下,設置回差,減少比較器輸出抖動。
DAC 的配置如下(如果選擇 VREFINT 或是COMPx_INM 則無需配置 DAC):
PWM 輸出的配置如下,PWM 的 Reset 除了比較事件外,添加外部事件源。
基于以上的配置,在生成的工程代碼中添加必要的外設啟動函數即可,如下:
通過示波器查看波形,黃色表示輸出 PWM 驅動;綠色內部比較器輸出信號,輸出為高時表示限流保護,觸發封波,輸出為低則 PWM 可正常輸出。
逐波限流觸發次數計數的實現
很多應用中不但需要實現逐波限流,還需要對某段時間內觸發逐波限流的次數進行計數,以此來判斷系統是否出現短路或是過載,然后決定系統是否進入永久保護狀態,除非軟件再次使能輸出。
在高精度定時器中,外部事件不但可以用來觸發 PWM 動作,它還可以被定時器內部的捕獲單元捕獲,所以可以通過讀取捕獲標志位來判定外部事件是否發生并進行計數;另外如本文采用了內部比較器的輸出作為外部事件的觸發源,可以通過直接讀取比較器的比較中斷標識或是輸出狀態的方式來判定外部事件是否發生并進行計數。
下面以讀取捕獲標識為例說明如何實現該功能,該方法更加通用。在 CubeMx 中配置高精度定時器的 Capture 功能,如下:
在軟件中添加如下的代碼,假如判斷周期為 1 秒,本文給出偽代碼的形式,具體代碼需根據實際的應用進行修改。
小結
本文對逐波限流的原理進行了簡單介紹,給出了如何利用 STM32G474 系列 MCU 的高精度定時器中的相關功能實現逐波限流以及逐波限流計數的方案。
來源:STM32單片機
免責聲明:本文為轉載文章,轉載此文目的在于傳遞更多信息,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問題,請聯系小編進行處理
審核編輯 黃宇
-
PWM
+關注
關注
114文章
5201瀏覽量
214977 -
比較器
+關注
關注
14文章
1659瀏覽量
107467 -
限流保護
+關注
關注
0文章
17瀏覽量
10108
發布評論請先 登錄
相關推薦
評論