2. 控制环路基础:反馈控制系统、PID控制原理、数字控制器的离散化
各位工程师朋友,咱们今天聊聊控制环路。说实话,很多做电源的兄弟一听到「控制理论」就头大,觉得那是搞自动化的人的事。我以前也这么想,直到有一次调一个48V转1.8V的Buck模块,输出纹波怎么都压不下去,环路一测,相位裕度才15度……嗯,从那以后我老老实实把控制基础补了一遍。
这一章,我就带你把这些基础捋清楚。不扯虚的,全是实战用得上的东西。
2.1 反馈控制系统——电源的「自动驾驶」
反馈控制,说白了就是让电源自己知道自己干得怎么样。你想想看,如果输出电压高了,它得自己降回来;低了,它得自己补上去。这不就是自动驾驶吗?
一个典型的反馈控制系统,由四个核心部件组成:
- 被控对象:就是你的功率级,比如Buck、Boost电路
- 传感器:采样输出电压、电流的电路
- 控制器:计算误差并产生控制信号的家伙
- 执行器:通常是PWM调制器,把控制信号变成开关动作
我在项目中遇到过一种情况:传感器采样电阻的温漂太大,导致反馈信号不准,环路怎么调都稳不住。后来换了低温漂电阻,问题就解决了。所以啊,反馈路径上的每一个元件都不能马虎。
关键概念:反馈系统的三个核心指标——稳定性、精度、动态响应。这三者往往互相矛盾,你得学会做取舍。
下面这张图,是我画的一个数字电源反馈控制系统的结构。你看,从输出采样到ADC,再到数字控制器和DPWM,最后回到功率级,这就是一个完整的闭环。
2.2 PID控制原理——三个「调节器」的配合
PID,就是比例、积分、微分三个环节的缩写。我习惯把它理解成三个各有分工的「调节器」:
- P(比例):看现在——误差有多大,我就调多少。反应快,但会有静差。
- I(积分):看过去——误差一直存在,我就一直累积。能消除静差,但容易超调。
- D(微分):看未来——误差变化趋势如何,我提前预判。能抑制超调,但对噪声敏感。
你想想看,这三个家伙配合好了,电源就能又快又稳。配合不好呢?振荡、超调、甚至炸机都有可能。
实战经验:我调PID有个习惯——先把I和D设成0,只调P让系统稳定但不振荡;然后加I消除静差;最后加D改善动态响应。这个顺序,十有八九不会翻车。
连续域的PID公式长这样:
u(t) = Kp * e(t) + Ki * ∫e(τ)dτ + Kd * de(t)/dt
其中:
- u(t) 是控制输出
- e(t) 是误差信号
- Kp、Ki、Kd 分别是比例、积分、微分系数
2.3 数字控制器的离散化——从连续到离散的「翻译」
模拟控制器是连续的,但数字控制器只能在离散的时间点干活。所以,我们需要把连续域的PID「翻译」成离散域能执行的形式。这个翻译过程,就叫离散化。
常用的离散化方法有三种:
| 方法 | 原理 | 适用场景 | 精度 |
|---|---|---|---|
| 前向欧拉 | 用当前时刻的导数近似 | 采样频率远高于系统带宽 | 较低 |
| 后向欧拉 | 用下一时刻的导数近似 | 一般数字电源应用 | 中等 |
| 双线性变换(Tustin) | 用梯形面积近似积分 | 需要高精度、宽频带 | 最高 |
我个人习惯用后向欧拉法,简单、稳定,对大多数数字电源场景已经够用了。如果你做的是高频LLC或者GaN驱动,那建议用双线性变换。
用后向欧拉法离散化后的位置式PID:
u[k] = Kp * e[k] + Ki * Ts * Σe[i] + Kd * (e[k] - e[k-1]) / Ts
其中Ts是采样周期。你看,积分变成了累加,微分变成了差分——这就是离散化的本质。
注意:离散化后的PID,采样频率至少要是系统带宽的10倍以上。我曾经在一个项目里只取了5倍,结果相位裕度直接掉了20度,环路差点振荡。后来把采样频率提上去,问题才解决。
还有一种更常用的形式——增量式PID。它只计算控制量的变化量,而不是绝对值:
Δu[k] = Kp * (e[k] - e[k-1]) + Ki * Ts * e[k] + Kd * (e[k] - 2*e[k-1] + e[k-2]) / Ts
增量式的优势很明显:不会因为积分饱和导致输出飞车,而且切换手动/自动模式时无冲击。我在实际项目中几乎都用增量式。
2.4 数字控制器的实现要点
把公式变成代码,有几个坑你得注意:
- 定点数 vs 浮点数:低成本MCU没有FPU,用浮点运算太慢。我建议用Q格式定点数,比如Q15、Q31,精度够用,速度飞快。
- 抗积分饱和:积分项不能无限累加,否则输出饱和后系统会失控。加个限幅,或者用条件积分法。
- 微分项滤波:微分对噪声太敏感,我一般会在微分路径上加一个一阶低通滤波器,截止频率设在开关频率的1/10左右。
核心总结:反馈控制系统是骨架,PID是灵魂,离散化是让灵魂在数字世界里活起来的手段。这三者搞明白了,数字电源的稳定性验证就有了根基。