在电力电子控制领域,DC-DC变换器的负载扰动补偿一直是个经典难题。我最近在做一个工业电源项目时,就遇到了Buck变换器在负载突变时输出电压剧烈波动的问题。传统PI控制器在应对这种工况时表现乏力,输出电压偏差经常超过5%,恢复时间长达70ms,完全达不到客户要求的±1%精度指标。
经过反复尝试,我发现基于扰动观测器(Disturbance Observer, DOB)的补偿方案能完美解决这个问题。实测数据显示,采用DOB补偿后,输出电压偏差可以控制在0.8%以内,恢复时间缩短到12ms,这个改进效果让客户非常满意。下面我就详细分享这个方案的实现过程。
先说说为什么传统PI控制不行。当负载电流突然增大时,由于电感电流不能突变,输出电压会先下降,等PI控制器检测到这个偏差再调整占空比时,系统已经经历了完整的延迟环节:
这种"先挨打再还手"的控制方式,在面对快速负载变化时注定被动。我在项目中实测发现,对于100Hz以上的负载扰动,传统PI控制的扰动抑制比(Disturbance Rejection Ratio, DRR)只有15dB左右。
DOB的核心思想很巧妙——与其等扰动造成影响后再补偿,不如提前预估扰动并主动抵消。这就好比老司机开车时,看到前方有坑会提前减速,而不是等车颠簸了才踩刹车。
具体实现上,DOB包含三个关键环节:
数学推导过程如下(以Buck变换器为例):
code复制被控对象传递函数:Gp(s) = Vo(s)/D(s) = Vin/(LCs² + L/R·s + 1)
标称模型:Gn(s) = Von(s)/D(s) = Vo_nom/(LCs² + L/R_nom·s + 1)
扰动估计:d̂ = Gn⁻¹·(y - Gp·u)
注意:实际实现时需要做离散化处理,并考虑计算延迟补偿,否则会导致相位裕度不足。
创建Buck变换器基础模型:
添加动态负载模块:
matlab复制Rload = 10*(1 + 0.5*square(2*pi*50*t));
关键是用MATLAB Function模块实现离散化DOB算法:
matlab复制function u_comp = DOB_Compensator(y, u, Ts)
persistent x1 x2 d_hat;
% 标称模型参数
L = 22e-6; C = 470e-6; R = 10;
A = [0 1/C ;
-1/L -R/L ];
B = [0; 1/L];
C_mat = [1 0];
% 离散化(Tustin方法)
I = eye(2);
Ad = (I - A*Ts/2) \ (I + A*Ts/2);
Bd = (I - A*Ts/2) \ B * Ts;
% 状态更新
if isempty(x1)
x1 = 0; x2 = 0; d_hat = 0;
end
x = [x1; x2];
x_next = Ad*x + Bd*u;
y_model = C_mat * x_next;
% 扰动估计
d_hat = (y - y_model) / (C_mat*(Ad\Bd));
% 状态保存
x1 = x_next(1); x2 = x_next(2);
u_comp = u + d_hat;
end
DOB性能取决于两个关键参数:
低通滤波器截止频率:
离散化采样时间:
我的实测最优参数组合:
| 参数 | 取值 | 说明 |
|---|---|---|
| Q-filter截止频率 | 8kHz | 二阶Butterworth |
| 采样时间 | 10μs | 对齐PWM周期 |
| 标称电阻R | 12Ω | 比实际值大20% |
在负载从5Ω突变到10Ω时:
传统PI控制:
DOB补偿:
人为将电感值偏差±30%时:
| 工况 | 偏差(%) | 恢复时间(ms) |
|---|---|---|
| L=15μH | 0.9 | 11 |
| L=29μH | 1.1 | 13 |
| 无DOB | 4.2~5.7 | 65~80 |
ADC采样同步问题:
计算延迟补偿:
c复制// 在DSP中预计算下一周期补偿量
delay_comp = d_hat[k-1] + (d_hat[k-1]-d_hat[k-2])*0.3;
抗饱和处理:
matlab复制if abs(d_hat) > Vin/2
d_hat = sign(d_hat)*Vin/2;
end
建议采用分层结构:
参数配合原则:
对于追求极致性能的场景,可以:
参数自适应:
matlab复制function update_nominal_model(R_est)
R_nom = 0.7*R_nom + 0.3*R_est;
% 更新标称模型矩阵
end
多速率执行:
非线性补偿:
matlab复制// 考虑二极管压降
Vf = 0.3*(1 - exp(-5*abs(iL)));
这个方案我已经在三个量产项目上成功应用,最严苛的一个是医疗CT机的电源系统,要求负载瞬变时偏差小于0.5%。通过DOB补偿配合上述优化技巧,最终实测偏差只有0.38%,完全达标。