大家好,今天我发现一种很奇怪的现象,启用死区模块居然会降低电机的转速。而且我死区时间设置为0,相当于只是用这个死区模块产生了一对互补的PWM波,转速确下降的50%,通过变量观测占空比也没改变。而且我试了很多遍,都是这样。加的死区设置程序如下:其它都没变,加了这段程序后,转速就降低了很多。真是百思不得其解,到底是哪里出现问题了呢?
//死区设置
EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;//使能双边沿延时
EPwm1Regs.DBCTL.bit.IN_MODE = DBA_ALL;//使EPwm1A是双边延时输入源
EPwm1Regs.DBCTL.bit.POLSEL = 2;//极性选择控制,EPWM1A不翻转,EPWM1B翻转.
EPwm1Regs.DBRED =0;//死区上升沿延时寄存器,死区时间设置=0/TBCLK=0us
EPwm1Regs.DBFED =0;//死区下降延时寄存器,死区时间设置=0/TBCLK=0us
mangui zhang:
死区是会影响一点PWM波的占空比情况
但不至于你说的50%吧
建议你用示波器看看改变前后的占空比情况和频率情况
大家好,今天我发现一种很奇怪的现象,启用死区模块居然会降低电机的转速。而且我死区时间设置为0,相当于只是用这个死区模块产生了一对互补的PWM波,转速确下降的50%,通过变量观测占空比也没改变。而且我试了很多遍,都是这样。加的死区设置程序如下:其它都没变,加了这段程序后,转速就降低了很多。真是百思不得其解,到底是哪里出现问题了呢?
//死区设置
EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;//使能双边沿延时
EPwm1Regs.DBCTL.bit.IN_MODE = DBA_ALL;//使EPwm1A是双边延时输入源
EPwm1Regs.DBCTL.bit.POLSEL = 2;//极性选择控制,EPWM1A不翻转,EPWM1B翻转.
EPwm1Regs.DBRED =0;//死区上升沿延时寄存器,死区时间设置=0/TBCLK=0us
EPwm1Regs.DBFED =0;//死区下降延时寄存器,死区时间设置=0/TBCLK=0us
Tong Daniel:
回复 mangui zhang:
我设的死区时间为0,今天又试了下,速度也是降了50%
大家好,今天我发现一种很奇怪的现象,启用死区模块居然会降低电机的转速。而且我死区时间设置为0,相当于只是用这个死区模块产生了一对互补的PWM波,转速确下降的50%,通过变量观测占空比也没改变。而且我试了很多遍,都是这样。加的死区设置程序如下:其它都没变,加了这段程序后,转速就降低了很多。真是百思不得其解,到底是哪里出现问题了呢?
//死区设置
EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;//使能双边沿延时
EPwm1Regs.DBCTL.bit.IN_MODE = DBA_ALL;//使EPwm1A是双边延时输入源
EPwm1Regs.DBCTL.bit.POLSEL = 2;//极性选择控制,EPWM1A不翻转,EPWM1B翻转.
EPwm1Regs.DBRED =0;//死区上升沿延时寄存器,死区时间设置=0/TBCLK=0us
EPwm1Regs.DBFED =0;//死区下降延时寄存器,死区时间设置=0/TBCLK=0us
Jason Wu4:
回复 Tong Daniel:
看一下你加死区模块前后输出PWM的变化,就能定位问题所在。
大家好,今天我发现一种很奇怪的现象,启用死区模块居然会降低电机的转速。而且我死区时间设置为0,相当于只是用这个死区模块产生了一对互补的PWM波,转速确下降的50%,通过变量观测占空比也没改变。而且我试了很多遍,都是这样。加的死区设置程序如下:其它都没变,加了这段程序后,转速就降低了很多。真是百思不得其解,到底是哪里出现问题了呢?
//死区设置
EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;//使能双边沿延时
EPwm1Regs.DBCTL.bit.IN_MODE = DBA_ALL;//使EPwm1A是双边延时输入源
EPwm1Regs.DBCTL.bit.POLSEL = 2;//极性选择控制,EPWM1A不翻转,EPWM1B翻转.
EPwm1Regs.DBRED =0;//死区上升沿延时寄存器,死区时间设置=0/TBCLK=0us
EPwm1Regs.DBFED =0;//死区下降延时寄存器,死区时间设置=0/TBCLK=0us
Tong Daniel:
回复 Jason Wu4:
是不是死区模块的优先级要不软件强制的级别要高呢?我用死区产生一对互补的PWM1A和PWM1B,用软件强制PWM1A和PWM1B输出都为低,但结果PWM1A为低,PWM1B却为高。有什么方法可以改变吗?