无感FOC启动之强拖

无感FOC启动,定位之后需要强拖,使电机运行到一定速度,产生反电动势后,使用观测器得到反向电动势,然后根据反向电动势计算当前转子的角度和速度。

强拖要使能电流闭环,Iqref设定为额定电流。Iq恒定能保证输出力矩恒定,转速会以恒定加速度上升,设定转速上升到500RPM时,强拖结束切速度闭环。

在强拖过程中,电角度以固定加速度增加。扭矩一定的情况下,速度越快,电压越高,因为电流环的作用,电流保持恒定。波形如下图所示。

clip_image002

那么如何计算强拖过程中的电角度呢?参考micorchip AN1078代码,整体思路是这样的:

如果PWM频率为16K,强拖时间设为2S,电机速度达到500RPM时结束强拖,电机极对数为2。确定好这几个参数就可以开始计算电角度了。

if (Startup_Ramp < EndSpeed)

{

Startup_Ramp += DletaRamp;//每个PWM周期,电角度增加DELTA_STARTUP_RAMP

ParkParm.qAngle += (u16)(Startup_Ramp >> 16);//Startup_Ramp扩大了65536倍,所以这里要减小65536倍,

}

EndSpeed表示速度达到500RPM时,每个PWM周期转子增加的电角度。

500RPM,极对数为2,那么1分钟,电机转1000电周期,1S转1000/60电周期,1S有16K个PWM周期,FOC中以65535表示360度电角度。所以

EndSpeed=500*2*65535/(60*16k)=68

假设定位结束时,电角度为0,Startup_Ramp初始值为0,转子电角度ParkParm.qAngle为0。

强拖时间2S有2/(1/16K)=32000个PWM周期,因为转子以恒定加速度增加,那么每个PWM周期转子增加的角度是相等的。这个值就是DletaRamp。

在第32000个PWM周期,转子增加的电角度是68,用68/32000即得到每个PWM周期增加的电角度,因为这个值太小,所以扩大65536倍,程序中使用移位计算减少计算时间。

DletaRamp= EndSpeed*65536/(2*16K)

每个PWM周期Startup_Ramp累加DletaRamp,当Startup_Ramp大于EndSpeed时,就表示电机速度达到了500RPM,强拖结束,准备切入速度闭环。

每个PWM周期,ParkParm.qAngle累加Startup_Ramp就得到了转子当前的电角度,因为DletaRamp扩大了65536倍,Startup_Ramp也扩大了65536倍,所以Startup_Ramp要先右移16位缩小65536倍,再进行累加得到ParkParm.qAngle。ParkParm.qAngle的范围是

-32768-32767。

© 版权声明
THE END
喜欢就支持以下吧
点赞0
分享
评论 抢沙发