潜在的固件错误可能是导致控制不稳定的幕后黑手!

潜在的固件错误可能是导致控制不稳定的幕后黑手!
2024年12月10日 15:06 电子产品世界

本期,我们将聚焦于发生在 PFC 级的电流振荡,通过分析数字控制环路,了解潜在错误出现的原因并展示如何检查控制固件中是否出现这种不稳定性。

本文引用地址:

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

电流振荡图 1. 

发生在PFC

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

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

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

基于 MCU 的数字控制

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

图 2. 数字控制系统围绕微控制器构建而成图 2. 数字控制系统围绕微控制器构建而成

控制环路包含一个模数转换器 (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 所示),具体取决于您选择的调制重新加载频率。

图 3. 最小延迟时间通过 PWM 调整而引入(a) 向上计数模式,(b) 上下计数模式
图 3. 最小延迟时间通过 PWM 调整而引入(a) 向上计数模式,(b) 上下计数模式

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

图 4. 波德图中显示了延时时间的影响图 4. 波德图中显示了延时时间的影响

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

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

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

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

图 5. 此处是一个会引入较大延迟时间的错误代码示例图 5. 此处是一个会引入较大延迟时间的错误代码示例

这是因为 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 更差,无法满足要求。

图 6. 错误代码实现下的波德图图 6. 错误代码实现下的波德图

设计解决方案

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

图 7. 通过改进代码可减少控制延迟图 7. 通过改进代码可减少控制延迟

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

图 8. 改进代码后的波德图图 8. 改进代码后的波德图
图 9. 改进代码后的波形图 9. 改进代码后的波形

组织有序的控制方案

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

新浪科技公众号
新浪科技公众号

“掌”握科技鲜闻 (微信搜索techsina或扫描左侧二维码关注)

创事记

科学探索

科学大家

苹果汇

众测

专题

官方微博

新浪科技 新浪数码 新浪手机 科学探索 苹果汇 新浪众测

公众号

新浪科技

新浪科技为你带来最新鲜的科技资讯

苹果汇

苹果汇为你带来最新鲜的苹果产品新闻

新浪众测

新酷产品第一时间免费试玩

新浪探索

提供最新的科学家新闻,精彩的震撼图片