在电力电子领域,DC-DC变换器的数字控制一直是工程师们关注的重点。传统单速率采样方案虽然实现简单,但在实际应用中往往面临计算资源浪费和动态性能不足的双重矛盾。以某48V/24V Buck转换器为例,当采用固定100kHz采样率时,DSP的CPU利用率高达85%,接近饱和状态。更严重的是,在负载突变(2A→5A)情况下,电流超调达到18%,频繁触发过流保护。
多速率采样技术为解决这一矛盾提供了新思路。通过分层控制架构,我们可以让电流内环(高速率200kHz)专注于快速响应电流变化,而电压外环(低速率50kHz)则负责稳态精度。这种设计不仅显著降低CPU负担,还能改善动态性能。
多速率采样的核心思想是根据不同控制环节的动态特性需求,采用差异化的采样频率。对于Buck变换器而言:
为确保控制系统的稳定性,必须严格保持两个控制环的采样时刻同步。我们采用整数倍关系同步方案:
code复制电压外环采样时刻(tm) = 4 × 电流内环采样时刻(tk)
这种同步方式既能保证控制时序的确定性,又便于在数字控制器中实现。
在Simulink中搭建多速率采样DC-DC控制器需要以下核心模块:
| 参数名称 | 典型值 | 设置依据 |
|---|---|---|
| 开关频率(fsw) | 100kHz | 权衡开关损耗与动态响应 |
| 电流采样频率(fs,i) | 200kHz | 10-20倍fsw,确保纹波跟踪 |
| 电压采样频率(fs,v) | 50kHz | 1/4 fs,i,满足稳态精度 |
| 电流环带宽 | 20kHz | 约为1/10 fs,i |
| 电压环带宽 | 5kHz | 约为1/10 fs,v |
注意:实际建模时建议加入等效串联电阻(ESR)模型,这对环路稳定性分析至关重要
在Simulink中,可以通过以下方式实现多速率采样:
matlab复制function [current_sample, voltage_sample] = multi_rate_sampling(t, current, voltage)
persistent last_current_time last_voltage_time
if isempty(last_current_time)
last_current_time = 0;
last_voltage_time = 0;
end
current_sample = 0;
voltage_sample = 0;
% 电流采样(200kHz)
if t >= last_current_time + 5e-6
current_sample = current;
last_current_time = t;
end
% 电压采样(50kHz)
if t >= last_voltage_time + 20e-6
voltage_sample = voltage;
last_voltage_time = t;
end
end
电流环和电压环需要独立设计和调试:
电流内环PI参数:
电压外环PI参数:
| 指标 | 单速率100kHz | 多速率(200k/50kHz) | 改进幅度 |
|---|---|---|---|
| CPU利用率 | 85% | 62% | ↓27% |
| 中断次数 | 100k/s | 250k/s | 但实际计算量减少 |
| 内存占用 | 12KB | 14KB | ↑2KB |
负载阶跃响应(2A→5A):
实测技巧:在负载突变时,可以临时提高电压环采样率(如升至100kHz)以进一步改善动态性能
启动顺序:
抗饱和处理:
同步验证:
可能原因:
解决方案:
可能原因:
解决方案:
在实际项目中,我通常会先使用Simulink进行充分的仿真验证,特别是负载突变和输入电压波动等边界条件。将仿真中的PI参数作为初始值,在实际硬件上微调时,通常只需要20%左右的调整就能获得满意性能。
多速率采样虽然增加了系统复杂性,但在高性能数字电源设计中,这种投入是值得的。对于需要同时兼顾动态性能和计算效率的应用场景,这无疑是一个优选方案。