TI的电源设计示例工程里有一个两相交错并联的LLC变换器设计,使用的是F28379D芯片做主控,这款芯片资源跟F28377S差不多,只不过前者是双核的,但是示例程序只用到了其中的一个核,所以以下程序基本上可以无障碍移植到F28377S芯片上,以下对程序中的一些重点做一个备忘记笔记。
变换器的拓扑是半桥同步整流型LLC,谐振频率设计在250.13kHz,工作频率设计在200kHz到350kHz之间,采用两相交错并联以提高功率,利用软件算法可以实现两相动态均流,在负载比较轻的情况下可以关闭一相实现单相运行,并且可以在轻载时,副边从同步整流模式切换到常规的二极管整流模式,以提高低载效率。
硬件情况如下:
CPU 频率200MHz,EPWM Time Base 100MHz(默认为CPU频率的一半)
Phase 1 原边MOS管驱动信号EPWM1A/B, 副边同步整流MOS管驱动信号EPWM2A/B
Phase 2 原边MOS管驱动信号EPWM4A/B, 副边同步整流MOS管驱动信号EPWM5A/B
Phase 1 原边电感电流检测ADCA3,Phase 2 原边电感电流检测A5;输出电流B0,输入电压B5, 输出电压C2
ADC触发源:A3-EPWM2 SOCA,A5-EPWM2 SOCB, B0,B5,C2-EPWM3 SOCA(EPWM 3 ISR 50kHz
运行PID)
在学习的过程中遇到的一些不理解的问题:
1. 为什么在闭环运行情况下(Build 2),Duty初始化设置成了一个很小的0.05值,不是应该为LLC运行所常用的0.5占空比吗?
答:这是因为在闭环情况下,输入电压很高接近400V,而在软启动情况下,输出电压设定值不会一下达到12V(假设是12V),开始会很小,在这种情况下,如果一开始就设定50%占空比,那么及时在开关频率为350kHz的情况下,输出的电压也会远大于输出电压的小软启动值,所以在闭环运行时,Duty会很小,在软启动过程中Duty慢慢加到0.996(接近1),PWM输出的就会是50%的占空比,代码(在50kHz 的控制ISR里)如下。
Vout_diff = Adc_Vout - Vout_Ref_wInj;
if (Vout_diff > Duty_mode_threshold && (var1.Out <= coeff1.Min)) // If output voltage > desired voltage by this amount and operating at max frequency
{ //已经达到最大频率了,输出电压仍然高于设定值, enter duty mode
Duty = Duty - Duty_mode_adjust;
Duty = (Duty < MIN_DUTY)? MIN_DUTY:Duty; //Clamp min Duty
}
else
{
Duty = Duty + Duty_mode_adjust;//软启动过程,随着电压目标值达到设定值,将Duty增加到0.99,以达到正常状态下的0.5占空比输出PWM
Duty = (Duty > MAX_DUTY)? MAX_DUTY:Duty; //Clamp max Duty
}
2. 上面一个问题中,为什么Duty=0.996时EPWM才会输出50%占空比?我理解的是Duty=0.5才是50%占空比。
答:这是因为在用PWM_HB_LLC_2PHIL_SR(PWM_HS_PH1, PWM_HS_PH2, ScaledPrd)初始化设置EPWM1,2,4,5的时候,把这几 个PWM的计数方式设定成了上下计数模式,然后这个函数里有几行非常关键的代码:
EPwm1Regs.AQCTLA.bit.ZRO = AQ_CLEAR;
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;
EPwm1Regs.AQCTLA.bit.PRD = AQ_CLEAR;
EPwm4Regs.AQCTLA.bit.ZRO = AQ_CLEAR;
EPwm4Regs.AQCTLA.bit.CBD = AQ_SET;
EPwm4Regs.AQCTLA.bit.PRD = AQ_CLEAR;
所以只需要设定EPWM1的CMPA寄存器和EPWM4的CMPB寄存器,就可以改变PWM的占空比,然后在运行PID(2P2Z)的ISR里,EPWM1/4的TBPRD值就是控制运算的输出值,在这个值的基础上去乘以Duty,得到CMPA和CMPB值,所以Duty=1的时候输出的才是50%的占空比,当两相电感电流不平衡时,会将电流大的那一相的占空比从50%降下来,也就是那一相的Duty值要从0.996往下降,直到两相电流平衡,此时另外一相的占空比为50%,刚刚电流大的那一相占空比小于50%