智能车制作

标题: 关于编码器获取的脉冲问题 [打印本页]

作者: 这...很复杂.    时间: 2015-1-3 10:33
标题: 关于编码器获取的脉冲问题

       else
       {
         nRightPulse=FTM1_CNT;
       }
       if(FTM1_CNT==0)
       {
       nLeftPulse=0;
       }
       else
       {
       nLeftPulse=FTM1_CNT;
       }
       FTM1_CNT= 0;                 

        g_nLeftMotorPulse  = (int)nLeftPulse;
        g_nRightMotorPulse = (int)nRightPulse;
        //通过送给电机的PWM值判断速度的方向
        if(g_nLeftMotorPulse>0)               
            g_nLeftMotorPulse = -g_nLeftMotorPulse;
        if(g_nLeftMotorPulse<0)               
            g_nRightMotorPulse = -g_nRightMotorPulse;
        g_nLeftMotorPulseSigma  += g_nLeftMotorPulse;
        g_nRightMotorPulseSigma += g_nRightMotorPulse;
}
这是我的编码器处理脉冲的程序,但是我的直立车只能站一下下,然后向后倒地,轮子一直向前打转,请问是什么问题呢???是脉冲哪里不对,还是极性问题呢?谢谢


作者: 这...很复杂.    时间: 2015-1-3 10:38
求指点 谢谢
作者: zhou1994    时间: 2015-1-3 11:57
首先,为何要判断不为0了才读?你判断为0了最后还是赋值为0啊,和直接读出来是0有区别?其次,     if(g_nLeftMotorPulse>0)               
            g_nLeftMotorPulse = -g_nLeftMotorPulse;
        if(g_nLeftMotorPulse<0)               
            g_nRightMotorPulse = -g_nRightMotorPulse;为何同一个条件去做2件事,不能一起做?第三。直立效果如何?
作者: 这...很复杂.    时间: 2015-1-3 12:03
zhou1994 发表于 2015-1-3 11:57
首先,为何要判断不为0了才读?你判断为0了最后还是赋值为0啊,和直接读出来是0有区别?其次,     if(g_nL ...

也对,那个我只有一个编码器,所以都用同一个赋值。直立能站在原地2秒的样子,不过有点抖,然后就向后倒地了,轮子向前打转。

作者: 这...很复杂.    时间: 2015-1-3 12:07
zhou1994 发表于 2015-1-3 11:57
首先,为何要判断不为0了才读?你判断为0了最后还是赋值为0啊,和直接读出来是0有区别?其次,     if(g_nL ...

大神,能指点一下吗?大概是哪里的问题,我只给了I=1;P=0;速度换的
作者: zhou1994    时间: 2015-1-3 12:27
这...很复杂. 发表于 2015-1-3 12:07
大神,能指点一下吗?大概是哪里的问题,我只给了I=1;P=0;速度换的

直立不行,你调速度干嘛?

作者: 这...很复杂.    时间: 2015-1-3 12:39
zhou1994 发表于 2015-1-3 12:27
直立不行,你调速度干嘛?

加了速度环的直立不行,没加是可以的。没加速度环,直立可以的

作者: story、    时间: 2015-1-4 12:40
:lol:lol:lol:lol:lol:lol:lol:lol
作者: 【征程】    时间: 2015-1-6 15:02
把直立屏蔽掉,调速度反馈。让车轮可以匀速的情况下,在融合。速度闭环时间不能太短,具体多长自己试试,我是按照清华方案来的.否则会影响直立的
作者: 空有一人    时间: 2015-1-18 19:40
:o:o




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2