1. 项目概述
这个项目是一个基于TMS320F28034数字信号控制器的全桥LLC谐振变换器完整解决方案。作为一名电力电子工程师,我在过去三年里为工业电源客户设计了多款类似方案,今天就把这个成熟项目的技术细节完整分享出来。
全桥LLC拓扑因其高效率特性(实测可达96%以上)特别适合200W-3kW的中大功率场合。而选用TI的C2000系列DSP作为主控,则是看中了其实时控制能力——28034的150MHz主频配合高精度PWM模块(时间分辨率达6.67ns),能完美实现LLC需要的变频控制。整套方案包含硬件设计、开环仿真和闭环控制三大部分,下面我会逐一拆解每个环节的关键技术点。
2. 硬件设计详解
2.1 功率级设计要点
原理图的核心是功率电路,我的设计流程是这样的:
- 首先根据规格书确定参数:输入400VDC(来自PFC级),输出48V/10A,目标效率>95%
- 计算LLC特征参数:
- 谐振频率fr=100kHz(通过Lr=22μH, Cr=115nF实现)
- 品质因数Q=0.45(兼顾效率和动态响应)
- 变换比M=1.5(满足宽输入范围需求)
- 关键器件选型:
- 开关管:英飞凌IPP60R099CP(650V/25A,Rdson仅99mΩ)
- 谐振电容:MKP系列薄膜电容(需承受2A以上谐振电流)
- 变压器:ETD39磁芯,原边15匝,副边4匝(气隙0.5mm)
特别注意:LLC的谐振腔参数必须精确匹配,我通常会用ANSYS Simplorer先做参数扫描,确定最优Lr、Cr组合后再动手制板。
2.2 DSP控制电路设计
TMS320F28034的外围电路有几个关键点:
- 电源管理:
- 采用TPS7A4700(3.3V)和TPS7A3301(1.8V)两级稳压
- 每个电源引脚都加0.1μF+10μF退耦电容
- PWM输出配置:
- PWM1A/B驱动上管,PWM2A/B驱动下管
- 死区时间设置为150ns(通过DBCTL寄存器配置)
- 保护电路:
- 过流检测用INA240电流传感器+比较器
- 故障信号直连DSP的TZ引脚实现硬件关断
原理图中有个实用技巧:我在每个PWM输出端都加了图腾柱驱动(UCC27324),实测可减少开关管米勒效应导致的误开通。
3. 开环仿真模型搭建
3.1 PLECS仿真框架
我用PLECS搭建的开环模型包含以下关键部分:
- 功率级模型:
- 非线性变压器模型(包含漏感和励磁电感)
- 开关管用理想开关+导通电阻模拟
- 控制接口:
- DSP的PWM输出转化为驱动信号
- 加入实际硬件中的传播延迟(约200ns)
- 测量模块:
- 谐振腔电流采样(反映ZVS状态)
- 输出电压纹波分析
仿真时发现一个有趣现象:当频率接近谐振点时,即使开环状态,输出电压也能保持稳定——这正是LLC的天然稳压特性。
3.2 关键仿真波形解读
通过扫频测试得到两组典型波形:
- fr=100kHz时:
- 原边电流呈完美正弦(证明谐振建立)
- 开关管Vds在导通前已降到零(实现ZVS)
- fr=130kHz时:
- 输出电压降至42V(验证了变频调压原理)
- 原边电流出现畸变(此时效率会下降约3%)
这些仿真结果直接指导了后续的闭环参数设计。
4. 控制源代码解析
4.1 主控制循环架构
代码采用中断驱动方式,关键部分如下:
c复制void main() {
InitSysCtrl(); // 系统时钟初始化
InitPWM(); // PWM模块配置
InitADC(); // ADC采样设置
while(1) {
// 主循环仅处理通信等非实时任务
}
}
__interrupt void PWM_ISR(void) {
float Vout = read_ADC(0); // 读取输出电压
float Iout = read_ADC(1); // 读取输出电流
freq_control(Vout, Iout); // 频率控制算法
update_PWM(freq); // 更新PWM频率
ClearPWMIntFlag(); // 清除中断标志
}
4.2 变频控制算法
核心算法采用改进型PID:
- 误差计算:
c复制
error = Vref - Vout_actual; integral += error * Ts; derivative = (error - last_error) / Ts; - 频率调节:
c复制freq = base_freq + Kp*error + Ki*integral + Kd*derivative; // 限制在80kHz-120kHz范围内 freq = (freq > 120e3) ? 120e3 : (freq < 80e3) ? 80e3 : freq; - 动态调整:
- 轻载时自动降低Kp值防止振荡
- 过流时强制固定频率到110kHz
实测表明,这种算法在20%-100%负载范围内都能保持输出电压纹波<1%。
5. 调试经验与问题排查
5.1 常见故障模式
根据我的项目记录,调试阶段遇到最多的问题是:
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 启动时炸管 | 谐振参数偏差大 | 用LCR表重新测量Lr、Cr |
| 输出电压不稳定 | PID参数不合适 | 先用Ziegler-Nichols法整定 |
| 轻载效率骤降 | 未进入突发模式 | 在代码中添加负载检测逻辑 |
5.2 示波器调试技巧
有几个必测的关键波形:
- 原边电流波形(判断ZVS):
- 正常时应为光滑正弦
- 若出现台阶说明死区不足
- 开关管Vgs/Vds波形:
- Vds应在Vgs上升前降到0V
- 否则需调整死区时间
- 谐振电容电压:
- 峰值不应超过输入电压的1.5倍
- 否则需检查Cr值
建议用差分探头测量,我遇到过因共模噪声导致的误判。
6. 性能优化方向
这个方案还有三个可改进点:
- 加入数字均流技术:通过CAN总线同步多台电源模块
- 实现自适应死区控制:根据电流极性动态调整死区时间
- 添加LLC参数自识别:上电时自动测量实际Lr、Cr值
最近我在新项目中尝试了第三种方法,通过注入扫频信号并分析响应曲线,能自动补偿元件公差带来的参数偏移,效果很不错。