前言
DSP28335小菜鸡一枚,最近编写完成三电平SPWM和DPWM调制方式,后续会作进一步的研究,欢迎类似方向的小伙伴们一起交流鸭~
编程思路
直接上正题,需要实现三电平SPWM,你需要配置的寄存器有:GPIO、epwm、外部中断。设置周期寄存器的值为10k,利用EPWM1的事件触发模块进入中断实时更新占空比,得到最终的SPWM波形。
细节
题主很懒,想用单载波实现节约资源,用一张手绘图来描述一下,大家凑合着看看,能够说明问题,也很关键:
这一块的核心要点就在于比较点的位置不能改变。这样的话当调制波大于0时可以不用管,当调制波小于零时加1比较即可。
这一块的程序如下:
///产生c相的PWM波形/
if(uc[k]>=0)
{
EPwm5Regs.CMPA.half.CMPA = EPwm5Regs.TBPRD*uc[k]; //epwm5A送给sc1 //规则采样法,互补对称的送给sc3
EPwm6Regs.CMPA.half.CMPA = EPwm6Regs.TBPRD; //epwm6A送给sc2 ,互补对称的送给sc4
}
else
{
EPwm5Regs.CMPA.half.CMPA = 0;
EPwm6Regs.CMPA.half.CMPA = EPwm6Regs.TBPRD*(1+uc[k]);
}
k++;
至于三电平SPWM的编程,可以参见我的另一篇关于两电平spwm的博客,里面有详细的叙述,思路一致。或者去我的主页下载都可。
实验结果:
在小功率实验平台上进行试验,sa1-sa4的脉冲和直流侧电容电压、输出线电压、负载相电压如下:
注
三电平逆变器的Sa1和Sa3互补,Sa2和Sa4互补,如果做实际的平台实验,建议加上2us的死区,防止直通。