工具/软件:Code Composer Studio
在使用 DELAY_US 函数进行 过流保护(OCP)之前。 为了避免电感器电流达到 OCP、会关闭高侧驱动器、然后电流将持续降低。 一旦低于 OCP,ePWM 将立即打开高侧驱动器。 我担心这个系统会不稳定、因为 ePWM 仍将打开-关闭-打开-关闭。
现在我在 I_OCP*100%至 I_OCP*90%期间使用过流窗口,但它仍然无法立即关闭,反应必须为20~30us。
即使我将其放在"void main (void)"或" interrupt void ADC_timer_ISR (void)"上也是如此。
零电流检测(ZCD),如果电感器电流变为负值,则必须立即关闭低侧 MOSFET (< 1uS)
过流保护(OCP),如果电感器电流过大,则必须立即关闭高侧 MOSFET (< 1uS)。
BTW 我研究了"C2000数字电源 BoosterPack" 、其中说"在该项目中、两个 PWM 输出在发生比较器事件时立即驱动为低电平、以保护功率级。"
我不知道有多少"立即驱动低电平"时间。
##########################################################################################################################
if (IL < 2048)//IL < 0,ZCD
{
EPwm1Regs.AQCSFRC.bit.CSFA = 2;//HG 打开
EPwm1Regs.AQCSFRC.bit.CSFB = 1;//LG 关闭
OCP=0;
}
否则,如果(IL >4095)//IL >3,OCP
{
EPwm1Regs.AQCSFRC.bit.CSFA = 1;//HG 关闭
EPwm1Regs.AQCSFRC.bit.CSFB = 2;//LG 打开
OCP=1;
}
否则,如果(IL >3891 && OCP=1)//IL >2.7,则显示 OCP 窗口
{
EPwm1Regs.AQCSFRC.bit.CSFA = 1;//HG 关闭
EPwm1Regs.AQCSFRC.bit.CSFB = 2;//LG 打开
}
else //IL >0A 和 IL <3A ,反馈--误差放大器
{
OCP=0;
EPwm1Regs.AQCSFRC.bit.CSFA = 0;
EPwm1Regs.AQCSFRC.bit.CSFB = 0;
VBO_ERR = Vbu_cmd - Vo;// cmd 400
PWM1_DUTY = VBO_cmpa1 +(VBO_ERR_VBO_ERR1)*1 +(VBO_ERR+VBO_ERR1)*1;
VBO_ERR1=VBO_ERR;
VBO_cmpa1=PWM1_DUTY;
if (PWM1_DUTY > PWM1_PERIOD)//限制占空比
{
PWM1_DUTY = 0.9*PWM1_PERIOD;
}
if (PWM1_DUTY < 1)
{
PWM1_DUTY = 0;
}
EPwm1Regs.CMPA.half.CMPA = PWM1_DUTY;
EPwm1Regs.CMPB =PWM1_DUTY;
}
##########################################################################################################################