基於STM32G4 系列MCU 實現數字電源逐波限流保護


STM32G474數字電源逐波限流保護實現方案


1. 前言

       在電源設計中經常會使用逐波限流保護來保證電流不超過限定的最大值,避免燒毀MOS等功率器件,若在短時內多次觸發逐波限流保護則強制封鎖 PWM 輸出,讓系統進入故障保護狀態,在這個過程中需要對逐波限流觸發次數進行計數,以此來判斷是否進入故障保護,本文針對該功能,基於 STM32G474 高精度定時器,介紹如何實現逐波限流保護以及保護次數計數。
STM32G4系列集成了運行於170 MHz的32位Arm® Cortex®-M4內核(支持FPU和DSP指令),以及3種不同的硬體加速器:ART Accelerator™、CCM-SRAM程序執行加速器,以及數學運算加速器。STM32G4系列還提供:
  • 豐富的高級模擬外設(比較器、運算放大器、DAC)
  • 支持硬體過採樣的ADC(16位解析度)
  • 具有糾錯碼(ECC)的雙存儲區Flash存儲器(支持現場固件升級)
  • 安全的存儲區
  • 高解析度定時器(版本 2)
  • 具有供電功能的USB Type-C接口以及物理層(PHY)
  • AES硬體加密

 


2.
逐波限流原理介紹

     所謂逐波限流指在電源工作過程中,對電感電流或是功率管導通電流進行實時監測,一旦超出設定範圍,則在該 PWM 周期內立即關閉相關的 PWM 驅動,直到下個 PWM 周期再自動使能PWM 驅動,若電流信號一直超限,則一直封鎖 PWM,直到電流恢復正常的下一個新的 PWM 周期後,才能重新使能 PWM 輸出。工作過程示意圖如下圖所示, OCP 表示過流保護,高電平表示電流超限。



3. STM32G474 逐波限流保護的實現

      STM32G474 的高精度定時器除了能產生高精度的 PWM 波外,還包含了外部事件管理器,能對多達 10 個外部事件進行處理。可以設置外部事件的觸發源、觸發方式(沿觸發或是電平觸發)、相應方式(同步或是異步)以及事件的濾波方式。 外部事件的一個最重要的作用就是用來對輸出的PWM 進行控制,觸發 PWM Set Reset 動作。



   如上圖,在觸發源的選擇上,每個外部事件可以從 4 個源中進行選擇:
外部 pin 腳輸入
內部比較器輸出
其他定時器觸發信號(TIM1/2/3_TRGO)
• ADC
看門狗事件(ADCx_ADC1/2/3)
對應逐波限流功能,可以選擇外部 pin 腳輸入或是內部比較器輸出,推薦的方式為內部比較器輸出。外部電流採樣信號直接輸入到片上比較器(COMPx_INP),比較器的輸出結果作為外部事件觸發源。



    基於以上的介紹,利用 CubeMx 工具進行相應的配置來說明整個功能的實現過程,以高精度定時器中的 Timer A 為例,主要介紹外部事件與逐波限流保護的配置,其他的配置不再贅述。外部事件的配置如下, 觸發源為內部比較器 2 的輸出,高電平有效




    為了使用內部比較器,必須對內部對應的比較器進行配置,一般選擇 DAC 的輸出作為比較器的參考,所以還需要對 DAC 進行配置。比較器的配置如下,設置回差,減少比較器輸出抖動。



    DAC 的配置如下(如果選擇 VREFINT 或是 COMPx_INM 則無需配置 DAC)



     PWM 輸出的配置如下, PWM Reset 除了比較事件外,添加外部事件源。



    基於以上的配置,在生成的工程代碼中添加必要的外設啟動函數即可,如下:



     通過示波器查看波形,黃色表示輸出 PWM 驅動;綠色內部比較器輸出信號,輸出為高時表示限流保護,觸發封波,輸出為低則 PWM 可正常輸出。


3.  逐波限流觸發次數計數的實現


     很多應用中不但需要實現逐波限流,還需要對某段時間內觸發逐波限流的次數進行計數,以此來判斷系統是否出現短路或是過載,然後決定系統是否進入永久保護狀態,除非軟體再次使能輸出。在高精度定時器中,外部事件不但可以用來觸發 PWM 動作,它還可以被定時器內部的捕獲單元捕獲,所以可以通過讀取捕獲標誌位來判定外部事件是否發生並進行計數;另外如本文採用了內部比較器的輸出作為外部事件的觸發源,可以通過直接讀取比較器的比較中斷標識或是輸出狀態的方式來判定外部事件是否發生並進行計數。
下面以讀取捕獲標識為例說明如何實現該功能,該方法更加通用。
CubeMx 中配置高精度定時器的 Capture 功能,如下:


   在軟體中添加如下的代碼,假如判斷周期為 1 秒,本文給出偽代碼的形式,具體代碼需根據實際的應用進行修改。

1 秒定時中斷服務函數
{
        清零外部事件次數計數器;
}

PWM
算法中斷服務函數
{
         讀取事件捕獲標識;
         If(捕獲標識置位)
         {

             捕獲標識清零;
             外部事件次數計數器++
             If(1s 內觸發外部事件的超過設置值)
             {
                   軟體封鎖 PWM 輸出;
                   清零外部事件次數計數器
             }
        }
}




5.  小結


    本文對逐波限流的原理進行了簡單介紹,給出了如何利用 STM32G474 系列 MCU 的高精度定時器中的相關功能實現逐波限流以及逐波限流計數的方案。


   註:本文中圖片和文字,來源於ST中文網,網址:www.stmcu.com.cn

★博文內容參考自 網站,與平台無關,如有違法或侵權,請與網站管理員聯繫。

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

參考來源

https://www.stmcu.com.cn/Designresource/list/STM32 MCU/LAT/LAT:

評論