小弟我用28335做pmsm的定位控制,當轉子"定位"在Z相時會產生不穩定現象(如果是"經過"只會有pulse但正常轉動)如圖0~720度
而且更奇怪的是,從0度到720度有時會先逆轉半圈(-180度)載正轉一圈半(540)照理來說應該會正轉900度才會變720度(-180+900=720)有人可以分替小弟我解惑嗎?
Chien Chien Chou:
…
小弟我用28335做pmsm的定位控制,當轉子"定位"在Z相時會產生不穩定現象(如果是"經過"只會有pulse但正常轉動)如圖0~720度
而且更奇怪的是,從0度到720度有時會先逆轉半圈(-180度)載正轉一圈半(540)照理來說應該會正轉900度才會變720度(-180+900=720)有人可以分替小弟我解惑嗎?
Johnson Chen1:
回复 Chien Chien Chou:
请问你使用的是那个例程?有传感器还是无传感器?
小弟我用28335做pmsm的定位控制,當轉子"定位"在Z相時會產生不穩定現象(如果是"經過"只會有pulse但正常轉動)如圖0~720度
而且更奇怪的是,從0度到720度有時會先逆轉半圈(-180度)載正轉一圈半(540)照理來說應該會正轉900度才會變720度(-180+900=720)有人可以分替小弟我解惑嗎?
Chien Chien Chou:
回复 Johnson Chen1:
有感
float tmp1;unsigned long t2_t1;Encoder_Var.Direction=EQep1Regs.QEPSTS.bit.QDF; //方向Encoder_Var.RawTheta=EQep1Regs.QPOSCNT+Encoder_Var.CalibrateAngle; //位置補償if(Encoder_Var.RawTheta < 0){Encoder_Var.RawTheta=Encoder_Var.RawTheta+EQep1Regs.QPOSMAX;}if(Encoder_Var.RawTheta > EQep1Regs.QPOSMAX){Encoder_Var.RawTheta=Encoder_Var.RawTheta-EQep1Regs.QPOSMAX;}Encoder_Var.MechTheta=360-(Encoder_Var.Mech_Scaler*Encoder_Var.RawTheta*360);Encoder_Var.out=Encoder_Var.round*360+Encoder_Var.MechThetaEncoder_Var.ElecTheta=(Encoder_Var.PolePairs*Encoder_Var.MechTheta);//-floor(Encoder_Var.PolePairs*Encoder_Var.MechTheta);if(EQep1Regs.QFLG.bit.IEL == 1){Encoder_Var.Index_sync_flag=0x00F0;if(EQep1Regs.QEPSTS.bit.QDF==0){Encoder_Var.round=Encoder_Var.round+1;}if(EQep1Regs.QEPSTS.bit.QDF==1){Encoder_Var.round=Encoder_Var.round-1;}EQep1Regs.QCLR.bit.IEL=1;}