TI中文支持网
TI专业的中文技术问题搜集分享网站

SVPWM算法做逆变器

MCU使用的28035 主频60M部分程序如下 PWM计数模式为增减计数 中断程序如下

__interrupt void epwm1_timer_isr(void)
{
UALFA =M*cos(i*ta);
UBETA=M*sin(i*ta);
B0=UBETA;
B1=0.8660254*UALFA-0.5*UBETA;
B2=-0.8660254*UALFA-0.5*UBETA;
Sector=0;
if(B0>0) Sector =1;
if(B1>0) Sector =Sector+2;
if(B2>0) Sector =Sector+4;
X=UBETA;
Y=0.8660254*UALFA+0.5*UBETA;
Z=-0.8660254*UALFA+0.5*UBETA;
if(Sector==0)
{
Ta=0.5;
Tb=0.5;
Tc=0.5;
}
else if(Sector==1)
{
t1=Z;
t2=Y;
Tb=(1-t1-t2)/2;
Ta=Tb+t1;
Tc=Ta+t2;
}
else if(Sector==2)
{
t1=Y;
t2=-X;
Ta=(1-t1-t2)/2;
Tc=Ta+t1;
Tb=Tc+t2;
}
else if(Sector==3)
{
t1=-Z;
t2=X;
Ta=(1-t1-t2)/2;
Tb=Ta+t1;
Tc=Tb+t2;
}
else if(Sector==4)
{
t1=-X;
t2=Z;
Tc=(1-t1-t2)/2;
Tb=Tc+t1;
Ta=Tb+t2;

}
else if(Sector==5)
{
t1=X;
t2=-Y;
Tb=(1-t1-t2)/2;
Tc=Tb+t1;
Ta=Tc+t2;
}
else if(Sector==6)
{
t1=-Y;
t2=-Z;
Tc=(1-t1-t2)/2;
Ta=Tc+t1;
Tb=Ta+t2;
}
EPwm1Regs.CMPA.half.CMPA =(int)(PRD*Ta);
EPwm2Regs.CMPA.half.CMPA =(int)(PRD*Tb);
EPwm3Regs.CMPA.half.CMPA =(int)(PRD*Tc);
i++;
if(i>=NM) i=0;
EPwm1Regs.ETCLR.bit.INT = 1;
PieCtrlRegs.PIEACK.all = PIEACK_GROUP3;
}

其中NM=117  PRD=1995 ;载波设置 fz=15035 ;输出三相正弦波50HZ误差不超过0.5HZ;但是根据理论值算的点数NM应该为300,请问为什么实际情况是117才能使输出正弦波频率50HZ?理论值和实际值不一样?

赞(0)
未经允许不得转载:TI中文支持网 » SVPWM算法做逆变器
分享到: 更多 (0)