自己根据TI的例程写了个永磁同步电机的矢量控制程序。先用了个小的伺服电机测试,直流母线电压给100V左右。在测试过程发现几个问题:
第一次测试时,电机无反应,在进入PWM中断后,电机会抖动一下,并没有转动。在交换了电机的其中两相后,电机能够转动。
但是交换相序前后,转子定位都没有实现。调过转子定位,电机转起来的时候卡顿感也很强烈,而且转速也对应不上。请问有可能是什么原因造成的?下面贴上转子定位的程序。转子定位没有在PWM中断中做,而是单独做了个子程序进行。
void LockRotor()
{
Udq_to_Ualphabeta.Ds = 200; //转子定位给定初始d轴电压为60V
Udq_to_Ualphabeta.Qs = 0; //q轴电压给定为0
Udq_to_Ualphabeta.theta = 0; //转角给定为0 三个参数给定可以得到一个确定的磁链
Udq_to_Ualphabeta.calc(&Udq_to_Ualphabeta);
Svpwm.Ualpha = Udq_to_Ualphabeta.Alpha;
Svpwm.Ubeta = Udq_to_Ualphabeta.Beta;
Svpwm.Vdc = 540; //直流母线电压
Svpwm.T = Ts;
Svpwm.calc(&Svpwm);
epwm_init.Duty1A = Svpwm.Tcmpa;
epwm_init.Duty2A = Svpwm.Tcmpb;
epwm_init.Duty3A = Svpwm.Tcmpc;
epwm_init.update(&epwm_init);
LockRotor_OK_flag = 1;
}