基于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次,发文人进小黑屋喔~

参考来源

ST AE team-https://www.stmcu.com.cn/Designresource/list/STM32 MCU/LAT/LAT:

评论