STM32做变频器时,为何输出电压只能到250v

2019-08-08 14:13发布

使用STM32F103ZET6做简易变频器,使用SPWM方式,三相市电经过全桥整流后滤波后得到约510V左右的直流电压,但是经过IPM逆变生成的三相正弦波电压最大只能到250V左右,正弦波方式如下:
1、用定时器1生成频率为10Khz的pwm波,定时器1初始化函数如下:TIM1_PWM_Init(7199,0);  //PWM频率=72000000/(7199+1)= 10K/

2、在ram中用公式sinvalue = 3600.0*(1+sin(j*0.0174533))生成360个正弦数据,三相正弦数据如下:
        //A相正弦表
        j=0.0;
        for(i=0;i<=359;i++)
        {
                sinvalue = 3600.0*(1+sin(j*0.0174533));
                if(sinvalue<0)        sinvalue=0.0;
                PhaseA[i] = (u16)sinvalue;
                j=j+1.0;
        }
       
        //B相正弦表
        j=240.0;
        for(i=0;i<=359;i++)
        {
                sinvalue = 3600.0*(1+sin(j*0.0174533));
                if(sinvalue<0)        sinvalue=0.0;
                PhaseB[i] = (u16)sinvalue;
                //printf("i=%d",i);        printf(" ");        printf("j=%f",j);        printf(" ");
                //printf("PhaseB=%d ",PhaseB[i]);
                j=j+1.0;
        }
       
        //C相正弦表
        j=120.0;
        for(i=0;i<=359;i++)
        {
                sinvalue = 3600.0*(1+sin(j*0.0174533));
                if(sinvalue<0)        sinvalue=0.0;
                PhaseC[i] = (u16)sinvalue;
                //printf("i=%d",i);        printf(" ");        printf("j=%f",j);        printf(" ");
                //printf("PhaseC=%d ",PhaseC[i]);
                j=j+1.0;
        }

3、然后使用定时器2每隔1/18000s的频率查表读取一个正弦数据并送到定时器1用于控制PWM的脉宽,由此得到一个周期为 360*(1/18000)=0.02S的正弦波,即频率为50HZ
这时问题来了,输出频率为50hz时,电机运行电流正常,但是变频器输出电压只能到250V左右,低于25HZ时电机运行出现震动,请各位高手帮忙分析一下电压上不去的原因

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。