导读:本期文章主要介绍在DSP28335芯片中实现SVPWM(标幺化),并进行验证测试。
选用的控制芯片是DSP28335,后续会系统的梳理该芯片的外设及相关的性能配置。依托CCS和MATLAB开发环境,验证关于永磁、异步电机相关的控制算法。
本期主要实现和验证五段式和七段式的SVPWM,关于SVPWM的理论部分可以参考公众 号往期的相关文章。
图2.1 ePWM模块的底层配置示意图
在CCS中要实现SVPWM,首先用到的外设控制模块就是ePWM。ePWM模块的底层配置参考图2.1的逻辑进行配置。
按照上述方法可以大致排列好基本矢量的作用顺序,整理如下:
按照图(a),三个切换时刻及对应占空比的分析计算如下:
切换时刻的占空比:
按照七段式电压矢量开关切换最少原则,矢量先后作用决定了电机三相导通时刻的排列顺序如下:
到了这里,Ta、Tb、Tc已经对PWM周期T归一化处理,那么Ta、Tb、Tc就是占空比了。这里的Ta、Tb、Tc只是一个小于1的比例数值,这个比例是相对于T而言的。T是PWM的开关周期。若乘以0.5T就可以得出赋值于比较寄存器的实际值CMP1、CMP2、CMP3,也就是三相导通的时刻。
矢量控制中,一般需要六路并分为三组的PWM输出,配置为两两互补导通的形式,按照寄存器定义配置好模块后,需要验证配置的正确性。
断开电机连接,理论上依次将U、V、W三相的占空比设置为0、100%、50%,使用万用表测量对应端口的电压,0占空比时输出电压应接近0V,100%占空比时接近母线电压,50%占空比时为母线电压的一半。
直接给IGBT开关管的占空比进行赋值:
MotDriv.Ta_cmpa= 0.6;
MotDriv.Tb_cmpb= 0.4;
MotDriv.Tc_cmpc= 0.2;
即给ePWM模块的比较寄存器CMPB中设定值为:
EPwm1Regs.CMPA.half.CMPA=0.6*TBPRD=5625(60%);
Epwm2Regs.CMPA.half.CMPA=0.4*TBPRD=3750(40%);
Epwm3Regs.CMPA.half.CMPA=0.2*TBPRD=1875(20%);
ePWM1A | ePWM1B | ePWM2A | ePWM2B | ePWM3A | ePWM3B |
60% | 40% | 40 | 60% | 20% | 80% |
程序中通过死区模块,采用ALC:EPWMA反转极性,即低电平有效,互补输出的方式(该方式用于低电平有效的驱动芯片),产生了带死区的互补PWM。
死区占空比为:150/9375=1.6%
因此最终的6路PWM占空比应该为:
ePWM1A | ePWM1B | ePWM2A | ePWM2B | ePWM3A | ePWM3B |
61.6% | 41.6% | 41.6% | 61.6% | 21.6% | 81.6% |
可见,硬件上对应的PWM引脚输出与理论相符,说明ePWM配置和SVPWM实现正确。