1. 前言
数字电源产品在使用桥式电路拓扑或是多路交错控制中,有时会需要滞后臂的 PWM 脉宽严格跟随超前臂的 PWM 脉宽,或从路的 PWM 脉宽严格跟随主路的 PWM 脉宽,本文将介绍如何利用高精度定时器实现 PWM 输出脉宽跟随,一种使用 Push-pull + Balance Idle + Auto Enable 方式,一种是使用 Auto Delay 方式。
2. Push-pull + Balance Idle + Auto Enable 脉宽跟随方案
高精度定时器的 push-pull 模式本身就是用于推挽拓扑的控制,保证同一定时器的两路输出脉宽一致,以 timer A 的两路输出 TA1 和 TA2 为例,该模式实现时通过将 TA1 与 TA2 的set/reset 触发源配置为相同的事件,一般定时器本身的周期事件或是比较事件。
但是如果在 PWM 的 set/reset 触发源中添加 EEVx 事件,比如将过流事件映射到 EEVx,利用 EEVx 触发 CBC 保护,由于 EEVx 发生点具有随机性,那么将无法保证 TA1 和 TA2 的脉冲宽度完成一致,如下的实测波形所示。
为了解决以上的问题,可以 Push-pull 模式的基础上使能 Balance Idle + Auto Enable 功能。
如下图所示的 Balance Idle 模式,外部 EEV 事件导致 PWM 关闭的情况下,脉宽被复制输出,保证了输出脉宽一致。叠加 Auto Enable 后,PWM 输出不会一直保持在 Idle 模式,而是在下一个计数周期立即恢复输出。
以上方案的实现配置和实测波形如下:
通过以上的方案,无论异步事件发生在 TA1 还是 TA2 输出期间,接下来的脉冲都能跟随之前的脉冲宽度输出。
3. Auto Delay 脉宽跟随方案
Auto Delay 是利用高精度定时器的捕获功能,指定的事件发生的时间点叠加 CMP2/4 中设定的延时值作为最终的 CMP2/4 比较值,如下图所示。
在滞后臂与超前臂或是从路与主路的相位差固定的情况下,将该相位差写入 CMP2/4 中,作为比较延时时间,只需要捕获超前臂或是主路 PWM 的关断点,即可让滞后臂或是从路的 PWM实现脉宽跟随。
基于以上的描述,以 TA1 和 TB1 为例,TB1 中设置捕获功能,对 TA1 的关断时刻进行捕获,假设二者的相差为 180°,实现 TB1 跟随 TA1 的配置和实测波形如下:
TA1 的 PWM 输出配置:
TB1 的 PWM 输出配置:
以上的方案虽然可以实现脉冲宽度的跟随,但是存在一定的限制,即 TB1 相对于 TA1 的移相值加上 TA1 脉宽值不能超过定时器所设定的周期值,因为该情况下 Auto Delay 的比较事件CMP2/4 无法产生,也就无法控制 TB1 的关断,比如以上的例程中,移相值为 15000,则 TA1 的脉宽值不能超过 15000,二者之和不能超过定时器的周期值 30000。
4. 小结
本文基于 STM32 的高精度定时器介绍了两种实现 PWM 脉宽跟随的方案,可以被用于桥式电路或是交错拓扑中需要滞后驱动脉宽严格跟随超前驱动脉宽的方案设计中。
本文档参考ST官方的《【用户手册】LAT1346_PWM脉宽跟随方案介绍_v1.0》文档。
参考下载地址:https://download.csdn.net/download/u014319604/88905681