ZHCT473 February   2024 TMS320F280025C , TMS320F280039C , TMS320F280049C

 

  1.   1
  2.   2
    1.     3
    2.     基于 MCU 的数字控制
    3.     数字控制实现中的潜在代码错误
    4.     设计解决方案
    5.     组织有序的控制方案
    6.     相关内容

Desheng Guo 和 Aki Li

在设计诸如升压功率因数校正 (PFC) 之类的数字电源时,您是否见过类似图 1 中的电流振荡?

GUID-4EFF48E8-62A4-4980-BF0C-28516CC716D5-low.png图 1 电流振荡发生在 PFC 级。来源:德州仪器 (TI)

您可能认为这种不稳定振荡由过快的控制带引起,因此您减小比例积分 (PI) 控制器的比例增益 (Kp) 和积分增益 (Ki),并显著降低交叉频率。振荡就会消失。

但这是最佳解决方案吗?较低的电流环路带宽会降低控制速度,但您可能会发现总谐波失真 (THD) 测试将会失败。有时,当源阻抗大一些时,振荡会再次出现。

这种不稳定性是否可能有其他原因?如何以足够的相位裕度实现最佳控制带宽?下面我们来详细分析一下数字控制环路,从而了解这一潜在的错误是如何引入的。我们还将向您展示如何检查控制固件中是否出现这种不稳定性。

基于 MCU 的数字控制

图 2 展示了基于 MCU 的数字控制系统。

GUID-8EE0BD8D-ED4E-40B1-835E-AB343EEC03EB-low.png图 2 数字控制系统围绕微控制器构建而成。来源:德州仪器 (TI)

控制环路包含一个模数转换器 (ADC) 用于进行对象电流/电压采样,一个数字控制器用于生成调整值,以及一个脉宽调制器 (PWM) 用于执行调整,可通过更改占空比或频率来改变目标电流/电压。

开关模式电源 (SMPS) 中的 ADC 采样通常位于两个开关周期的中间点,这样不仅可以避免开关产生的噪声干扰,还可以获取连续导通模式 (CCM) 下功率电感器的平均电流值。

数字控制器在中断服务例程 (ISR) 中进行计算,可以与 PWM 输出同步触发。触发事件可以是以下事件之一:PWM 的“COUNTER”等于“ZERO”、“PERIOD”或特定的值“CMP”。

控制器完成所有计算时无法立即更新 PWM,但 PWM 寄存器必须在一个专门时刻由影子寄存器加载,如 PWM 计数器等于“ZERO”或“PERIOD”时。如果 PWM 值在计数器上升或下降过程中发生变化,则很可能产生错误的 PWM 动作,导致脉冲丢失或脉冲重复。

与模拟控制系统不同,数字控制按照采样频率来执行,并且从采样到 PWM 重新载入新值必须有一个延迟时间 (Td)。PWM 修改通过调整翻转时刻来实现,翻转时刻在单边沿调制时(递增/递减模式)发生一次,在双边沿调制时(先递增后递减模式)发生两次。因此,最小 Td 将会是一个开关周期 Ts(如图 3a 所示),或半个开关周期 Ts/2(如图 3b 所示),具体取决于您选择的调制重新加载频率。

GUID-E59FB8B6-A571-473E-911E-A4BC8ADAFF03-low.png图 3 最小延迟时间通过 PWM 调整而引入:(a) 向上计数模式,(b) 上下计数模式。来源:德州仪器 (TI)

图 4 所示,Td 在其传递函数中表示为 e-sxT d,这将减少相位裕度。当然,当相位裕度小于 45 度时,系统将变得不稳定,并会发生振荡。

GUID-B83F3819-1A09-4D10-9C83-928DBD8E97D1-low.png图 4 波德图中显示了‌延时时间的影响。来源:德州仪器 (TI)

数字控制实现中的潜在代码错误

在正确执行的情况下,最小 Td 为一个开关周期 Ts 或半个开关周期 Ts/2。但是,如果未考虑 ADC、ISR 和 PWM 重新加载的后果,则将控制延迟扩展到高于一个开关周期可能会减小相位裕度,导致不稳定。

例如,在图 5 中,当 PWM 计数器等于零,ADC 的 ISR 触发和 PWM 重新加载会同时启动。

尽管所有块都同时执行,但在这种情况下,您是否可以预期 Td 为零?当然不能!

GUID-6F7A7CB1-5693-4C98-B8A1-5DC10C68E0FB-low.png图 5 此处是一个会引入较大延迟时间的错误代码示例。来源:德州仪器 (TI)

这是因为 ADC 转换和 ISR 计算所需的时间远超一个 MCU 时钟周期,当 ISR 读取 ADC 结果时,ADC 转换仍未完成。因此,ISR 将获取“旧”采样值进行计算,而最新值的计算将延迟到下一个开关周期。ISR 计算完成后,新 PWM 值仅写入影子寄存器中,随后将在下一个开关周期中重新加载。‌实际上,Td 的总控制延迟将为两个开关周期,即 2 x Ts

除了此处所示的示例之外,其他实现方案也可能会引入类似的扩展控制延迟,例如,在 ISR 代码中将 ADC 值读取放在控制器计算之后,或者在计算控制器之前添加 N 周期算法平均值。

图 6 所示,在图 5 的错误实现中,如果将 GAIN 交叉频率设置在 3kHz 左右,则相位裕度为 41.68 度。此值小于 45 度,并且扼流电流有明显的振荡,比如图 1 的波形,因此您被迫将交叉频率降至低于 2kHz;然后 iTHD 更差,无法满足要求。

GUID-1655D499-1D15-401C-86F0-DFC4AE4622DE-low.png图 6 错误代码实现下的波德图。来源:德州仪器 (TI)

设计解决方案

此问题可以轻松解决,只需将 ADC 转换移动到 COUNTER = PERIOD 的时刻,并且使 PWM 重新加载在下一个 COUNTER = PERIOD 时刻发生,如图 7 所示。

GUID-42F081EF-6763-4749-ADDD-1C2DCAF380F1-low.png图 7 通过改进代码可减少‌控制延迟。来源:德州仪器 (TI)

控制延迟将减少为一个开关周期。相位裕度显著增加,电流振荡消失,如图 8图 9 所示。

GUID-3A49537A-500D-4422-8236-D06AFE5C8007-low.png图 8 改进代码后的波德图。来源:德州仪器 (TI)
GUID-3EDBB4FE-A81D-4781-BB1E-751D216B8435-low.png图 9 改进代码后的波形。来源:德州仪器 (TI)

组织有序的控制方案

在数字实现中,从 ADC 采样到 PWM 调整的控制延迟将减小相位裕度并导致振荡。解决该问题时,应考虑 ADC 采样、控制器计算和 PWM 重新加载的后果。组织有序的控制方案可以将延迟尽可能减少到半个或一个开关周期,从而增加相位裕度和环路带宽。