3. 数字控制环路结构

做数字电源控制,绕不开建模。说白了,你得知道你的被控对象长什么样,才能设计出好用的控制器。Buck变换器是最基础的拓扑,咱们就从它开始。

我记得刚入行那会儿,总觉得建模是理论派干的事,调参数全靠试。结果有一次,一个48V转12V的项目,负载动态响应怎么调都振荡。后来老老实实把模型拉出来,才发现补偿器的零点位置完全不对。从那以后,我再也不敢跳过建模这一步了。

3.1 Buck电路工作原理

先快速回顾一下Buck的基本原理。一个开关管、一个二极管、一个电感和一个电容,就构成了最简Buck。

工作分两个阶段:

  • 开关导通(Ton):输入通过开关管给电感充电,同时给负载供电。电感电流上升,储能增加。
  • 开关关断(Toff):电感通过续流二极管释放能量,电流下降,继续给负载供电。

稳态时,伏秒平衡成立:

Vin * Ton = Vout * (Ton + Toff)

所以输出电压:

Vout = D * Vin

其中D是占空比。嗯,这个公式太理想了,实际中还要考虑导通压降、寄生电阻等因素。但作为建模起点,它够用了。

我的习惯: 做建模前,先把电路的工作模态画清楚。连续导通模式(CCM)和断续导通模式(DCM)的模型完全不同。大部分数字电源工作在CCM,咱们后面也默认CCM。

3.2 状态空间平均法

为什么要用状态空间平均法?因为Buck是个开关电路,一会儿这个拓扑,一会儿那个拓扑,直接分析太麻烦。状态空间平均法的思路很简单:把两个开关状态下的方程,按占空比加权平均,得到一个连续的平均模型。

具体步骤:

  1. 列写每个模态的状态方程
  2. 按占空比加权平均
  3. 得到平均模型

咱们以CCM Buck为例,选电感电流iL和电容电压vC(也就是输出电压)为状态变量。

模态1(开关导通,0 ≤ t ≤ dTs):

diL/dt = (Vin - vC) / L
dvC/dt = (iL - vC/R) / C

模态2(开关关断,dTs ≤ t ≤ Ts):

diL/dt = -vC / L
dvC/dt = (iL - vC/R) / C

加权平均后:

diL/dt = (d * Vin - vC) / L
dvC/dt = (iL - vC/R) / C

你看,平均模型里已经没有开关动作了,变成了一个连续系统。这就是状态空间平均法的核心——用连续模型近似开关电路。

注意: 状态空间平均法只在开关频率远高于系统带宽时有效。一般要求开关频率至少是系统带宽的5-10倍。我曾经在一个20kHz开关频率的项目里,硬要建模到5kHz带宽,结果模型完全不准。后来把开关频率提到100kHz,模型才靠谱。

3.3 小信号模型推导

平均模型是非线性的,因为输入d和状态变量vC相乘了。控制设计需要线性模型,所以要做小信号扰动。

思路:把每个变量写成稳态值加小扰动。

d = D + d̂
vC = VC + v̂C
iL = IL + îL
Vin = VIN + v̂in

代入平均模型,忽略二阶小项,得到:

dîL/dt = (D * v̂in + VIN * d̂ - v̂C) / L
dv̂C/dt = (îL - v̂C/R) / C

拉普拉斯变换后,得到从占空比到输出电压的传递函数:

Gvd(s) = v̂C(s) / d̂(s) = VIN / (LC * s² + (L/R) * s + 1)

这是一个典型的二阶系统。自然频率和阻尼比:

参数 表达式 物理意义
自然频率 ωn 1 / √(LC) LC谐振频率
阻尼比 ζ (1 / (2R)) * √(L/C) 负载和LC共同决定

这个传递函数,就是咱们设计数字补偿器的起点。你想想看,有了它,你就可以用经典控制理论来设计PID参数了。

关键点: 小信号模型只在稳态工作点附近有效。如果工作点变化很大(比如负载从空载跳到满载),模型参数会变,控制器需要自适应或鲁棒设计。

3.4 知识体系总览

下面这张图,把Buck建模的整个逻辑串起来了。从实际电路到小信号模型,每一步都有明确的物理意义和数学操作。

Buck变换器建模知识体系 Buck变换器建模知识体系 Buck电路工作原理 模态1:开关导通 模态2:开关关断 状态空间平均法 连续平均模型(非线性) 小信号线性模型 核心思想:开关电路 → 分段线性 → 加权平均 → 小信号扰动 → 线性传递函数

从这张图可以清楚看到,建模不是一步到位的。先理解电路怎么工作,再通过状态空间平均把开关电路变成连续模型,最后用小信号扰动得到线性传递函数。每一步都有明确的物理意义。

3.5 实战中的注意事项

模型推导完了,但实际用的时候有几个坑:

  • ESR的影响:实际电容有等效串联电阻(ESR),会在传递函数中引入一个零点。忽略ESR,相位裕度可能算错。
  • 采样延迟:数字控制有采样和计算延迟,会在系统中引入额外相位滞后。建模时最好把延迟也考虑进去。
  • 电感饱和:大电流下电感值会下降,导致模型参数变化。我曾经在一个50A的项目里,没考虑电感饱和,结果满载时系统振荡。后来加了电感电流前馈才解决。
我的建议: 刚开始做数字电源时,先用理想模型把控制器调通,再逐步加入寄生参数。一步到位反而容易出问题。