1huangbin 发表于 2012-8-2 15:17

用旋变替代编码器做速度反馈

用旋变替代编码器做速度反馈
有人做过吗
旋变可以输出像编码器一样的信号模式那么用ti的列子
速度计算当中初始位置和一个脉冲代表的角度 该如何计算呢

1huangbin 发表于 2012-8-2 15:21

void F281X_EV1_QEP_Calc(QEP *p)
{

   int32 Tmp;

// Check the rotational direction
   p->DirectionQep = 0x4000&EvaRegs.GPTCONA.all;   //通用定时器全局控制寄存器 通过增减计数位
   p->DirectionQep = p->DirectionQep>>14;                                //0和1代表不同的转向

// Check the timer 2 counter for QEP
   p->RawTheta = EvaRegs.T2CNT + p->CalibratedAngle;    //转子的即时位置对应的脉冲(转子对应定子A相的初始位置的角度+转过的相对角度)

// Compute the mechanical angle in Q15   MechScalar 参数:0.9999/计数最大值   RawTheta定时器2得出的角度MechScaler是电机转一周产生的最大脉冲个数的倒数
   Tmp = __qmpy32by16(p->MechScaler,p->RawTheta,31);    // Q15 = Q30*Q0
   p->MechTheta = (int16)(Tmp);                         // Q15 -> Q15
       //计算机械角度
   p->MechTheta &= 0x7FFF;                              // Wrap around 0x07FFF,把一个-1~1换成两个0~1安位与

// Compute the electrical angle in Q15   
   p->ElecTheta = p->PolePairs*p->MechTheta;            // 电角度=p*机械角度,Q0*Q15 = Q15
       //计算电角度
   p->ElecTheta &= 0x7FFF;                              // Wrap around 0x07FFF,把一个-1~1换成两个0~1
}
使用旋变后,需要改变的量有calibratedangle 初始位置的角度 脉冲数   mechscaler一个脉冲对应的角度如果是编码器 就是 360°除以线数
变成旋变后 第一个值我想是不是通过sci来获得,第二值是与你的解码芯片有关吧

yunqian09 发表于 2012-8-2 23:28

可以测量 单位时间内脉冲的增量,然后计算转速

1huangbin 发表于 2012-8-6 15:47

请人帮助解答

xukang 发表于 2013-9-9 21:03

谢谢,顶顶顶
页: [1]
查看完整版本: 用旋变替代编码器做速度反馈