资源描述:
《光电编码器位置检测程序》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、typedefstruct{intl6ElecTheta;inti6MechTheta;Uintl6DirectionQep;Uintl6QepCountlndex;Uintl6RawTheta;Uint32MechScaler;Uintl6LineEncoder;Uintl6PolePairs;1•位置检测,计算过程中的变量的定义DefinethestructureoftheQEP(QuadratureEncoder)DriverObject*///Output:MotorElectricalangle(Q15)//(输出的电角度?)//Output:Motor
2、MechanicalAngle(Q15)〃(输出的机械角度?)//Output:Motorrotationdirection(QO)〃(电机转向?)//Variable:Encodercounterindex(QO)〃(编码器输出的脉冲数?)//Variable:RawanglefromTimer2(QO)〃(某一时刻转子对于定子A相的绝对角度?)//Parameter:0.9999/totalcount(Q30)//(每个脉冲所转过的机械角度?)//Parameter:Numberoflineencoder(QO)//(编码器每转输出的脉冲个数?)//Param
3、eter:Numberofpolepairs(QO)〃(极对数)intl6CalibratedAngle;//Parameter:RawangularoffsetbetweenencoderUintl6IndexSyncFlag;void(*init)();//indexandphasea(Q0)〃翻译过來是编码器与定子A相之间的角度偏量,〃但不知道到底这个偏移量是指什么,请教高人//Output:Indexsyncstatus(Q0)(?)//Pointertotheinitfunction//(初始化函数)void(*calc)();//Pointertoth
4、ecalcfunction〃(位置测量,计算函数)void(*isr)();//Pointertotheisrfunction//(Z信号的捕获屮断)}QEP;上面的汉语解释不知道对不对,请高人过目,指出问题。2、变量的初始化#defineQEP_DEFAULTS{0x0,0x0,0x0,0x0,0x0,0x00020C4A,0x0,4,-1250,0x0,(void(*)(Uint32))F281X_EVl_QEP_Init,(void(*)(Uint32))F281X_EVl_QEP_Calc,(void(*)(Uint32))F281X_EV1_QEP_
5、Isr}QEPqepl=QEP_DEFAULTS;//Applied-motionPMSMmotor:24-v,8-pole,2000lineencoder,CalibratedAngle=-1250//MechScaler=1/8000=0x00020C4A(Q30)主程序里还有QEP模块的初始化,与上面的初始化有一点点重复的地方。//InitializeQEPmoduleqep1.LineEncoder=2000;qepl.MechScaler=_IQ30(0-25/qepl.LineEncoder);qepl.PolePairs=P/2;qep1.Calib
6、ratedAngle=-1250;qepl.init(&qepl);此处要请教高手指导的问题就是:CalibratedAngle到底是什么东西?3、功能模块程序3、1在进行正交编码,捕获ZZ前对2812的寄存器进行初始化,设置定时器2为QEP电路提供基准时钟voidF281X_EVl_QEP_Init(QEP*p)EvaRegs.CAPCONA.all=0X9004;//SetupcaptureunitsEvaRegs.T2CON.all=0X9870;//SetupcapturetimerEvaRegs.T2PR=4*p->LineEncoder;//InitT
7、imer1periodRegisterEvaRegs.EVAIFRC.bit.CAP3INT=1;//ClearCAP3flagEvaRegs.EVAlMRC.bit.CAP3INT=1;//EnableCAP3Interr叩tEALLOW;//EnableEALLOWGpioMuxRegs.GPAMUX.all
8、=0x0700;//SetupthecapturepinstoprimaryfunctionsEDIS;//DisableEALLOW此处要请教高手问题就是:EvaRegs.T2PR=4*p->LineEncoder,根据上面初始化的定义,4*2000=
9、8000个