TI中文支持网
TI专业的中文技术问题搜集分享网站

请问一下TI源码(HVPM_sensored)编码器问题

编码器的原理我大概懂,但是不知道为什么要加这个偏差。

左边图我已经定位好了,此时Z脉冲和A相有个偏差,然后当转子转过程中,因为程序时通过epwm周期产生中断,而且在中断里面采集eQEP的就是转子位置。

那比如我现在上电转子转动,此时epwm产生中断,eqep检查到EQep1Regs.QPOSCNT=5,就是检测到了5个脉冲(右图),那就应该直接5xv.MechScaler啊.怎

还要加上这个偏差呢,有无这个偏差都没什么影响啊。

然后如果需要加的话那这个偏差怎么算呢,我就看到程序中写到这个:

if (lsw==0) {EQep1Regs.QPOSCNT=0; EQep1Regs.QCLR.bit.IEL = 1;} // Reset position cnt.

if ((EQep1Regs.QFLG.bit.IEL==1) && Init_IFlag==0) // Check the first index occurrence {qep1.CalibratedAngle= EQep1Regs.QPOSILAT; Init_IFlag++;} // Keep the latched position

if (lsw!=0) QEP_MACRO(1,qep1);

是不是计算这个偏差值啊?

然后在QEP的宏里面这样的

v.RawTheta = (*eQEP[m]).QPOSCNT + v.CalibratedAngle; 

if (v.RawTheta < 0) 
              v.RawTheta = v.RawTheta + (*eQEP[m]).QPOSMAX; 
   else if (v.RawTheta > (*eQEP[m]).QPOSMAX) 
            v.RawTheta = v.RawTheta – (*eQEP[m]).QPOSMAX; 

v.MechTheta = __qmpy32by16(v.MechScaler,(int16)v.RawTheta,31); /* Q15 = Q30*Q0 */ \
v.MechTheta &= 0x7FFF; /* Wrap around 0x07FFF*/ \
v.MechTheta <<= 9; /* Q15 -> Q24 */

这个为什么要每次都要加上这个偏差呢,应该出现z脉冲的时候才加上啊,平时我计数值就是实际的角度脉冲啊!!请高人指点下!!

赞(0)
未经允许不得转载:TI中文支持网 » 请问一下TI源码(HVPM_sensored)编码器问题
分享到: 更多 (0)