cheerfine_simol 发表于 2014-11-23 11:08

编码器测速问题求助

哪位大侠帮我解释下:(contronsuit 里面 2833xqep.h )

v.ElecTheta = (v.PolePairs*v.MechTheta) -floor(v.PolePairs*v.MechTheta); /* Q24 = Q0*Q24 */

为什么要减去后面的floor部分?

为什么前面的 v.MechTheta= v.MechScaler*v.RawTheta; 中 v.MechScaler 要定义成q30 格式??

部分代码是这样的:::

#define QEP_MACRO(m,v)                   \
                        \
/* Check the rotational direction */               \
   v.DirectionQep = (*eQEP).QEPSTS.bit.QDF;            \
                        \
/* Check the position counter for EQEP1 */            \
   v.RawTheta = (*eQEP).QPOSCNT + v.CalibratedAngle;          \
                            \
   if (v.RawTheta < 0)                  \
       v.RawTheta = v.RawTheta + (*eQEP).QPOSMAX;         \
   else if (v.RawTheta > (*eQEP).QPOSMAX)             \
       v.RawTheta = v.RawTheta - (*eQEP).QPOSMAX;         \
                              \
/* Compute the mechanical angle */                \
v.MechTheta= v.MechScaler*v.RawTheta;            \
/* Compute the electrical angle*/                \
    v.ElecTheta = (v.PolePairs*v.MechTheta) -floor(v.PolePairs*v.MechTheta); /* Q24 = Q0*Q24 */ \
页: [1]
查看完整版本: 编码器测速问题求助