全桥LLC开关电源,单片机TMS320F28034 硬件原理图,开环仿真模型,控制源代码,主拓扑硬件计算
最近在折腾一款全桥LLC开关电源,主控用了TI的TMS320F28034。这玩意儿真是把DSP和MCU的优势结合得挺到位,特别是做数字电源控制时,12位ADC和PWM死区控制玩起来贼溜。今天就唠唠这个项目的核心实现,中间夹点代码和计算过程,给大伙儿避坑参考。
先看主拓扑硬件计算这块。LLC的谐振腔参数直接决定整机效率,我一般先用K因子法算个大概。假设输入电压380VDC,输出24V/20A,谐振频率定在100kHz左右。公式刚拍出来的时候同事都看懵了:
Lr = (V_in_max * T_res) / (4 * π * I_ripple)
Cr = 1 / ((2πf_res)^2 * Lr)
不过实操中发现还得留20%余量,毕竟元件公差和寄生参数要命。最终算出来的Lr=35uH,Cr=22nF时,实测波形终于能看到漂亮的ZVS了。用Mathcad验证时发现当负载降到30%以下,谐振腔电流开始出现断续,这时候就得靠控制策略来救场了。
硬件原理图里藏着几个魔鬼细节。MOSFET驱动电路用了UCC27324,注意这里有个反逻辑设计——DSP输出的PWM_AH直接怼到驱动芯片的使能端。有次烧管就是因为PCB布局时这两个信号走线平行了2cm,导致地弹把驱动信号带歪了。后来改成星型接地才解决,血泪教训啊!
上段关键的PWM初始化代码,重点在死区时间和相位设置:
void InitEPWM(void) {
EPwm1Regs.TBPRD = SYSTEM_FREQUENCY / 2; // 100kHz载波
EPwm1Regs.CMPA.half.CMPA = EPwm1Regs.TBPRD * 0.48; // 留2%死区余量
EPwm1Regs.DBCTL.bit.OUT_MODE = 0x3; // 双边沿延时
EPwm1Regs.DBFED =<