打印

eQEP测速公式的实现

[复制链接]
3146|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
z_jzhao|  楼主 | 2013-1-15 10:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
eQEP测速公式的实现
以上代码为实现以下公式

       当QPOSCNT递增时: (x2-x1)一定 <4000  ,对于正向旋转(x2-x1)/1000〈 1;
当QPOSCNT递减时: (x2-x1)一定 >-4000 ,对于么向旋转(x2-x1)/4000>-1                  
因此:       speed_fr = [(x2-x1)/4000]/[(1/6000) min * 6000rpm] = (x2-x1)/4000

代码如下:

if (p->DirectionQep==0)          // POSCNT递减计数
     {
      if (newp>oldp)
         Tmp1 = - (_IQ(1) - newp + oldp);    //   x2-x1为负         -4000〈 x2-x1〈 0
      else
        Tmp1 = newp -oldp;
     }
     else if (p->DirectionQep==1)         // POSCNT递增计数
     {
      if (newp<oldp)
        Tmp1 = _IQ(1) + newp - oldp;  /*    _IQ(1)=1*2的24次方=16777216.0L
                                                                GLOBAL_Q =24 则_IQ(A)= _IQ24(A))=((A) * 16777216.0L)   
                                                      */
      else
        Tmp1 = newp - oldp;                     // x2-x1为正         4000 〉x2-x1 〉0
}


注:newp 、oldp相当于X1,X2,在代码中都是以Q24的值表示,但是为什么带要有个_IQ(1) 参入到其中,而且除以4000是如何表示的,请各位赐教!

相关帖子

沙发
z_jzhao|  楼主 | 2013-1-21 14:12 | 只看该作者
以上是TI DSP例程,怎么没人知道吗,人气这么低落啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

72

帖子

0

粉丝