1. 项目背景与核心挑战
作为一名电源工程师,最近我完成了一款基于TMS320F28034的全桥LLC谐振变换器设计。这个项目最吸引我的地方在于,它完美展现了数字控制与模拟功率电路的结合艺术。LLC拓扑因其高效率特性(理论上可达98%)在服务器电源、车载充电器等场景广泛应用,但实现ZVS(零电压开关)的精确控制一直是业界难题。
选择TI的TMS320F28034作为主控,主要看中其三大优势:
- 150MHz主频的C28x DSP核配合CLA协处理器,能实现<500ns的控制环路响应
- 高精度12位ADC(3.5MSPS)满足谐振电流采样的时序要求
- 可编程死区的PWM模块(150ps分辨率)特别适合LLC的移相控制
2. 主拓扑设计与参数计算
2.1 LLC谐振腔的物理模型
LLC谐振腔由谐振电感Lr、谐振电容Cr和变压器励磁电感Lm组成。其特性由品质因数Q和归一化频率Fn决定:
code复制Q = √(Lr/Cr) / Rac
Fn = fsw / fr
其中Rac=8n²Vo²/(π²Po),n为变压器匝比
2.2 关键参数计算过程
针对380V输入、24V/20A输出的规格,我的计算步骤如下:
-
确定工作频率范围:
- 最低频率fmin=85kHz(留15%裕量)
- 额定频率frated=100kHz
- 最高频率fmax=120kHz
-
计算等效负载电阻:
math复制Rac = 8*(380/24)^2*24^2/(3.14^2*480) ≈ 42Ω -
使用K因子法确定参数:
math复制Lr = (380*5μs)/(4*3.14*1.2) ≈ 35μH Cr = 1/((2*3.14*100k)^2*35μ) ≈ 22nF
关键提示:实际制作时建议采用可调电感(如EE30磁芯配可调气隙),因为PCB走线寄生电感可能达数百nH
2.3 仿真验证与参数优化
在PLECS中搭建模型时,需要特别注意:
- 添加变压器寄生参数:
- 初级漏感Llk≈1μH
- 绕组电容Cw≈200pF
- 设置非线性元件模型:
- MOSFET的Coss非线性特性
- 二极管反向恢复时间trr
仿真中发现轻载电压升高问题后,通过调整死区时间的动态补偿策略:
c复制#define DEADTIME_BASE 120 // ns
void DeadTime_Adjust(int delta) {
uint16_t new_val = EPwm1Regs.DBFED + delta;
if(new_val > 200) new_val = 200;
if(new_val < 70) new_val = 70;
EPwm1Regs.DBFED = new_val;
EPwm1Regs.DBRED = new_val;
}
3. 硬件设计关键细节
3.1 功率级布局要点

-
高频电流回路设计:
- 输入电容到全桥的路径<15mm
- 谐振电容采用多个X7R陶瓷并联(如4个100nF)
-
驱动电路特殊处理:
- UCC27324的VCC引脚加1μF+100nF去耦
- 驱动电阻选用5Ω+2.2Ω双电阻防振铃
3.2 保护电路设计
-
过流保护方案:
- 初级侧采用LEM LA25-NP霍尔传感器
- 次级侧用MAX4372TESA+检流电阻
-
关键保护阈值设置:
c复制#define OCP_THRESHOLD 25.0 // A if(AdcResult.ADCRESULT0 > 2048){ // 对应25A EPwm1Regs.TZFRC.bit.OST = 1; // 立即关断PWM }
4. 软件控制策略实现
4.1 移相控制时序配置
c复制void InitEPWM(void) {
EPwm1Regs.TBCTL.bit.CTRMODE = 0x2; // 增减计数模式
EPwm1Regs.TBPRD = SYSTEM_FREQUENCY/(2*SW_FREQ);
EPwm1Regs.CMPA.half.CMPA = EPwm1Regs.TBPRD * 0.48;
// 死区时间配置(关键!)
EPwm1Regs.DBCTL.bit.IN_MODE = 0x0; // 独立上升/下降沿控制
EPwm1Regs.DBCTL.bit.POLSEL = 0x2; // 高有效互补输出
EPwm1Regs.DBFED = (DEADTIME_BASE * 150)/1000; // 转换为计数单位
EPwm1Regs.DBRED = EPwm1Regs.DBFED;
// ADC同步触发
EPwm1Regs.ETSEL.bit.SOCAEN = 1;
EPwm1Regs.ETSEL.bit.SOCASEL = 0x1; // 计数等于0时触发
}
4.2 数字闭环控制实现
采用双环控制结构:
- 外环(电压环):PI控制器,带宽1kHz
- 内环(电流环):P控制器,带宽10kHz
c复制#pragma CODE_SECTION(Cla1Task1, "Cla1Prog");
__interrupt void Cla1Task1() {
// 读取ADC结果
float Vout = AdcResult.ADCRESULT1 * 0.0008f; // 12bit->0-3.3V
float Ires = (AdcResult.ADCRESULT0 - 2048) * 0.0016f; // 带偏置
// 电压环计算
Verr = Vref - Vout;
Iref += Kp_v * Verr + Ki_v * Verr * Ts;
// 电流环计算
float PhaseShift = Kp_i * (Iref - Ires);
// 更新PWM
EPwm1Regs.CMPA.half.CMPA = (uint16_t)(EPwm1Regs.TBPRD * (0.5 + PhaseShift));
}
5. 调试问题与解决方案
5.1 典型故障现象分析表
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 上电炸管 | 驱动信号地弹 | 改用星型接地,缩短驱动回路 |
| 轻载电压升高 | 容性阻抗效应 | 增加动态死区补偿 |
| PWM锁死 | 中断冲突 | 调整ADC和PWM中断优先级 |
| 效率下降 | 死区不当 | 用热像仪定位发热点优化死区 |
5.2 示波器调试技巧
-
ZVS验证方法:
- 探头1接MOSFET Vds
- 探头2接谐振电流
- 确认Vds在开启前已降到0V
-
死区时间测量:
- 用两个探头分别接上下管驱动
- 开启示波器延迟触发功能
- 测量两个上升沿之间的时间差
6. 性能优化与实测数据
经过三版迭代后的测试结果:
| 参数 | 指标 | 测试条件 |
|---|---|---|
| 效率 | 94.7% | 输入380V, 输出24V/15A |
| 纹波 | <100mVpp | 20A动态负载跳变 |
| 温升 | ΔT<30℃ | 连续满载1小时 |
| 响应时间 | <200μs | 50%负载阶跃 |
实现高效率的关键措施:
- 采用GANFET GS66508B替代硅MOS
- 谐振电容使用C0G材质
- 优化PCB布局降低寄生电感
这个项目让我深刻体会到,数字电源设计是理论计算、仿真验证和实验调试的三重奏。下次尝试将PFC与LLC级联时,计划用28034的CLB模块实现硬件保护,避免软件响应的延迟问题。