智能车制作

标题: 好久不来了。。。直立车的两个问题需要解决,求助一下 [打印本页]

作者: 海绵宝宝    时间: 2013-5-22 20:32
标题: 好久不来了。。。直立车的两个问题需要解决,求助一下
本帖最后由 海绵宝宝 于 2013-5-22 20:32 编辑

好久不来帖子逛了,这学期一直在忙于学画高速PCB板,车子主要交给学弟负责了,最近看到车子一直出现一些问题,不能够解决。。。求助一下


一个是   在车子调完 PD 和 PI 之后均能出现官方的现象 ,但是在之后给车子一个设定的速度后,车子运行不稳定,会出现数次点头现象,    就是车子先加速再减速,再加速再减速,加减速幅度越来越小 ,2~5个周期之后车子才实现匀速。      
即便是开始速度给的较小也会出现一次点头现象 。。。这个是啥问题,有木有和我一样的,求助一下该怎么解决
二是  怎么在软件中消除驱动电路和电机所带来的速度差别呢。。。
在给相同PWM值的情况下两轮速度不一样,两个光电编码器倒是没有问题,而且差值也不是线性的,请问你们都是该怎么解决的,我的主控室XS128,测速是两个光电编码器分别给A0,A1口,分时复用给PT7口,实现测速,这个没有问题的




求助了


补充内容 (2013-5-23 20:44):
测速的程序在 24楼,有需要的可以看看,另外欢迎指导讨论
作者: 海绵宝宝    时间: 2013-5-22 20:32
自己做SF
作者: ♂ˇ邂逅√♀    时间: 2013-5-22 20:39
针对你第一个问题:你的速度环的PI中,积分I给的太大了。
第二个问题:我也不知道啥情况,建议你用排除法,一样样排查吧~~~
作者: lyb    时间: 2013-5-22 20:43
你这个第二的问题影响大吗?听说加上方向就能改变,如果你非要用软件改变的话,只能两边给不同的占空比了
作者: 海绵宝宝    时间: 2013-5-22 20:50
♂ˇ邂逅√♀ 发表于 2013-5-22 20:39
针对你第一个问题:你的速度环的PI中,积分I给的太大了。
第二个问题:我也不知道啥情况,建议你用排除法, ...

但是I给的小的话PI的效果很难调的像官方的那样啊,这个是怎么样的呢

作者: 海绵宝宝    时间: 2013-5-22 20:51
♂ˇ邂逅√♀ 发表于 2013-5-22 20:39
针对你第一个问题:你的速度环的PI中,积分I给的太大了。
第二个问题:我也不知道啥情况,建议你用排除法, ...

但是I给的小的话 PI 的效果很难调的像官方的那样啊,并不能很好又快的静止到一点

作者: 海绵宝宝    时间: 2013-5-22 20:52
lyb 发表于 2013-5-22 20:43
你这个第二的问题影响大吗?听说加上方向就能改变,如果你非要用软件改变的话,只能两边给不同的占空比了

初期的影响还是比较大的,我们的CCD刚到,方向控制还没有完全加上
作者: lyb    时间: 2013-5-22 21:00
海绵宝宝 发表于 2013-5-22 20:52
初期的影响还是比较大的,我们的CCD刚到,方向控制还没有完全加上

那就没问题了,对于第一个问题,你的速度积分是不是有限幅,如果有的话,把限幅加大

作者: 海绵宝宝    时间: 2013-5-22 21:06
lyb 发表于 2013-5-22 21:00
那就没问题了,对于第一个问题,你的速度积分是不是有限幅,如果有的话,把限幅加大

什么是增大限幅,这个不懂得,指导一下吧。。。你说那个第二个没有问题了是啥意思,方向控制比例参数可以解决吗
作者: lyb    时间: 2013-5-22 21:19
恩,左右转的不一样,就是影响跑直道,直道跑不直呗,加了方向控制车自己就能调过来了。限幅就是你有没有对速度积分的那个值进行最大最小限制。
作者: 海绵宝宝    时间: 2013-5-22 21:31
lyb 发表于 2013-5-22 21:19
恩,左右转的不一样,就是影响跑直道,直道跑不直呗,加了方向控制车自己就能调过来了。限幅就是你有没有对 ...

没有给限幅啊,我们的车子只在  电机输出PWM  和  融合角度  上加了限幅处理

作者: lyb    时间: 2013-5-22 21:39
海绵宝宝 发表于 2013-5-22 21:31
没有给限幅啊,我们的车子只在  电机输出PWM  和  融合角度  上加了限幅处理

哦,那试试加大I或P呢

作者: 海绵宝宝    时间: 2013-5-22 21:42
lyb 发表于 2013-5-22 21:39
哦,那试试加大I或P呢

那增大I的话确实是点头现象更严重了,增大P的话效果也不好

作者: lyb    时间: 2013-5-22 22:16
海绵宝宝 发表于 2013-5-22 21:42
那增大I的话确实是点头现象更严重了,增大P的话效果也不好

那你试试改变速度控制周期,让周期变短点

作者: ♂ˇ邂逅√♀    时间: 2013-5-22 22:42
海绵宝宝 发表于 2013-5-22 20:50
但是I给的小的话PI的效果很难调的像官方的那样啊,这个是怎么样的呢

官方的那个是静止的I,跑起来的时候,PI要重新调节的,不然无法提速的嚄!~~~~~

作者: 为丞而琳    时间: 2013-5-22 23:33
直立PD没调好以及速度PI过大
作者: 蓦然回首mxk    时间: 2013-5-23 10:35
“我的主控室XS128,测速是两个光电编码器分别给A0,A1口,分时复用给PT7口”,分时复用是怎么做的,是不是测速不一致?
作者: xiongcaifei    时间: 2013-5-23 13:15
为丞而琳 发表于 2013-5-22 23:33
直立PD没调好以及速度PI过大

你能这么肯定吗???没解释,没真相
作者: 为丞而琳    时间: 2013-5-23 13:21
xiongcaifei 发表于 2013-5-23 13:15
你能这么肯定吗???没解释,没真相

不相信我就算了,那你自己慢慢摸索吧,
作者: xiongcaifei    时间: 2013-5-23 13:23
为丞而琳 发表于 2013-5-23 13:21
不相信我就算了,那你自己慢慢摸索吧,

速度P I小了。速度就会上不去哦。可以加QQ联系下 1060397634
作者: 海绵宝宝    时间: 2013-5-23 19:49
♂ˇ邂逅√♀ 发表于 2013-5-22 22:42
官方的那个是静止的I,跑起来的时候,PI要重新调节的,不然无法提速的嚄!~~~~~

有这种感觉,想问一下跑动中的 P I 相对于静止的 P I 分别是应该增大还是减小呢

作者: 海绵宝宝    时间: 2013-5-23 19:49
为丞而琳 发表于 2013-5-22 23:33
直立PD没调好以及速度PI过大

OK,再试试~~~

作者: 海绵宝宝    时间: 2013-5-23 19:50
蓦然回首mxk 发表于 2013-5-23 10:35
“我的主控室XS128,测速是两个光电编码器分别给A0,A1口,分时复用给PT7口”,分时复用是怎么做的,是不是 ...

我稍后给你程序。。。 = =

作者: 海绵宝宝    时间: 2013-5-23 20:41
蓦然回首mxk 发表于 2013-5-23 10:35
“我的主控室XS128,测速是两个光电编码器分别给A0,A1口,分时复用给PT7口”,分时复用是怎么做的,是不是 ...


因为我们用CD4520没有调试成功,我就用了这个方法,没有问题的,可以判断方向。。。
接线只需要接  光电编码器输出到IO口  ,左轮-A0,右轮-A1 ;A3做输出 A3-T7


/*****************************读取速度值*************************************/
///////////////////////////////////////////////////////////////////////////////////////////////////////
void Read_speed(void)   
{   
    PACTL_PAEN=0;
    if(speed_reversal==1)
   {
       if(g_nSum_LeftPWM>0)
        left_speed=PACNT;
       else
         left_speed=-PACNT;
   //    left_speed /= 60;

       PACNT=0;
//    OutData[1] = left_speed;
//     OutPut_Data();
   }
     if(speed_reversal==0)
   {

       if( g_nSum_RightPWM>0)
        right_speed=PACNT;
       else
        right_speed=-PACNT;
//      right_speed /= 60;

        PACNT=0;
//     OutData[0] = right_speed;
//     OutPut_Data();
   }   
    PACTL_PAEN=1 ;// 16b 计数允许
    return;
}



/****************************脉冲累加器初始化************************************/
void PA_Init(void)
{  

     PACTL=0X50;
     PACNT=0;

     PAFLG_PAIF=1;//脉冲数入1=IOC7-PT7,最大65536个脉冲


     DDRA=0X08;            // A0,A1 输入        A3     0000 1000
     PORTA=0X00;         

     PACNT=0;
     PACTL_PAEN=1;//16b计数允许
     return;
}     




主函数
/////////////////////////////////////////////////////////////////
   for(;;)
   {      
      if(speed_reversal==1)
        PORTA_PA3 = PORTA_PA0;        //left
      if(speed_reversal==0)  
        PORTA_PA3 = PORTA_PA1;        //right                                                               
   }





一毫秒中断
//////////////////////////////////////////////////////////////////////////////////
if (PIT_num1==5)
            {
               PIT_num1=0;
               speed_count ++ ;
               if(speed_count==20)                  //
                  {   
                      Read_speed();                    //读取左右电机速度  100ms
                      speed_reversal++;
                      speed_count=0;
                      if(speed_reversal==2)
                      {
                         speed_reversal=0;
                      }  
                  }
               return;
            }





作者: ♂ˇ邂逅√♀    时间: 2013-5-23 21:16
海绵宝宝 发表于 2013-5-23 19:49
有这种感觉,想问一下跑动中的 P I 相对于静止的 P I 分别是应该增大还是减小呢

P我就忘了,反正I,就是小了。跑起来的时候,I几乎约等于0了......

作者: 逝去的风    时间: 2013-6-18 17:34
海绵宝宝 发表于 2013-5-23 20:41
因为我们用CD4520没有调试成功,我就用了这个方法,没有问题的,可以判断方向。。。
接线只需要接  光 ...

你好,你这个具体接法是2个编码器的信号线直接接单片机的PA0和PA1,然后PA3和PT7再互连吗????但是我试过怎么不行的呢???

作者: 海绵宝宝    时间: 2013-6-18 19:11
逝去的风 发表于 2013-6-18 17:34
你好,你这个具体接法是2个编码器的信号线直接接单片机的PA0和PA1,然后PA3和PT7再互连吗????但是我试 ...

可以的啊,主函数大循环里扫描了吗,还有,赋值对吗

作者: 逝去的风    时间: 2013-6-18 20:31
海绵宝宝 发表于 2013-6-18 19:11
可以的啊,主函数大循环里扫描了吗,还有,赋值对吗

还是不行,程序都检查过啦。也都按照你的程序来试的。排除下硬件接法有没有错误???是按照刚才我说的那样连的吗??不需要外加元件模拟开关什么的吗??

作者: 海绵宝宝    时间: 2013-6-18 20:48
逝去的风 发表于 2013-6-18 20:31
还是不行,程序都检查过啦。也都按照你的程序来试的。排除下硬件接法有没有错误???是按照刚才我说的那 ...

QQ聊吧         我资料里有我的QQ
作者: 逝去的风    时间: 2013-6-18 21:00
海绵宝宝 发表于 2013-6-18 20:48
QQ聊吧         我资料里有我的QQ

资料里面看不到你的QQ喔。我的QQ是278242973,能麻烦你加一下吗??
作者: 加珍珠的奶茶    时间: 2013-6-18 21:56
我感觉是你的重心位置 太高了 不防将电池放在背面的最下面 试试
作者: 海绵宝宝    时间: 2013-6-19 09:21
加珍珠的奶茶 发表于 2013-6-18 21:56
我感觉是你的重心位置 太高了 不防将电池放在背面的最下面 试试

嗯,我的电池就是放在背面最下方

作者: 蓝色调    时间: 2013-6-26 16:25
你的方法感觉在主程序for循环放了其他程序。测出来的就不准了。怎么解决呢
作者: 战怺竝!    时间: 2013-6-26 16:47
lyb 发表于 2013-5-22 21:00
那就没问题了,对于第一个问题,你的速度积分是不是有限幅,如果有的话,把限幅加大

把限幅加大吗,

作者: 在奔途    时间: 2013-6-26 21:19
一个是   在车子调完 PD 和 PI 之后均能出现官方的现象 ,但是在之后给车子一个设定的速度后,车子运行不稳定,会出现数次点头现象,    就是车子先加速再减速,再加速再减速,加减速幅度越来越小 ,2~5个周期之后车子才实现匀速。      
即便是开始速度给的较小也会出现一次点头现象 。。。这个是啥问题,有木有和我一样的,求助一下该怎么解决
二是  怎么在软件中消除驱动电路和电机所带来的速度差别呢。。。
在给相同PWM值的情况下两轮速度不一样,两个光电编码器倒是没有问题,而且差值也不是线性的,请问你们都是该怎么解决的,我的主控室XS128,测速是两个光电编码器分别给A0,A1口,分时复用给PT7口,实现测速,这个没有问题的

我们现在的问题也和你的一样,请问你现在解决了没,求指导啊
作者: 海绵宝宝    时间: 2013-6-27 08:49
在奔途 发表于 2013-6-26 21:19
一个是   在车子调完 PD 和 PI 之后均能出现官方的现象 ,但是在之后给车子一个设定的速度后,车子运行不稳 ...

解决了,但是 我去年买了个表的 学校不允许我们参加比赛了。。。。。
点头现象解决办法 --------减小 I,减到很小,你自己可以试试到底需要有多小,或是在开跑两秒内给个很很小的 I,过了两秒后再将 I 增大一些,具体时间或是 I 参数你自己试试就有了 。。。。

两个电机差速的问题-------加上方向控制后自己就好了

作者: 海绵宝宝    时间: 2013-6-27 08:57
蓝色调 发表于 2013-6-26 16:25
你的方法感觉在主程序for循环放了其他程序。测出来的就不准了。怎么解决呢

并不是的,我的车子在主函数里只有 测速的循环赋值 这一段程序,没有其他的任何功能,而且运行时,主函数中的赋值变化时根据中断中的  变量  speed_reversal  的变化而变化的 。
我的其他所有功能全部在中断中触发,相比于我之前用的4520测速效果还是不错的

作者: 蓝色调    时间: 2013-6-27 12:33
海绵宝宝 发表于 2013-6-27 08:57
并不是的,我的车子在主函数里只有 测速的循环赋值 这一段程序,没有其他的任何功能,而且运行时,主函数 ...

原来这样啊。那倒是可以的。液晶显示什么的都在中断处理吗?

作者: 海绵宝宝    时间: 2013-6-27 18:50
蓝色调 发表于 2013-6-27 12:33
原来这样啊。那倒是可以的。液晶显示什么的都在中断处理吗?

跑前处理,跑了就关掉了。。在main里初始化里解决不就好了吗。。。。

作者: 好好搞    时间: 2013-7-16 16:31
解决了,但是 我去年买了个表的 学校不允许我们参加比赛了。。。。。
点头现象解决办法 --------减小 I,减到很小,你自己可以试试到底需要有多小,或是在开跑两秒内给个很很小的 I,过了两秒后再将 I 增大一些,具体时间或是 I 参数你自己试试就有了 。。。。

两个电机差速的问题-------加上方向控制后自己就好了


谢谢!!!我回去试试。
作者: 幽*介    时间: 2013-7-16 17:02
为丞而琳 发表于 2013-5-23 13:21
不相信我就算了,那你自己慢慢摸索吧,

呵  真是   给提点建议 也被质疑 楼主真有点意思

作者: utopia-h    时间: 2013-7-19 05:13
一、超调引起的,I太大了,一般P为I的200-300倍。   
二、两电机死区不一样,解决办法,测定电机死区或更换两新电机。
作者: 海绵宝宝    时间: 2013-7-19 09:51
utopia-h 发表于 2013-7-19 05:13
一、超调引起的,I太大了,一般P为I的200-300倍。   
二、两电机死区不一样,解决办法,测定电机死区或更 ...

谢谢啦~~~都解决啦~~~第二个加上方向控制就可以了

作者: 登高使者    时间: 2014-1-2 15:53
逝去的风 发表于 2013-6-18 17:34
你好,你这个具体接法是2个编码器的信号线直接接单片机的PA0和PA1,然后PA3和PT7再互连吗????但是我试 ...

你好!我现在也是搞不好这里,请问能不能指导一下!谢谢啦!!
作者: wait小乖    时间: 2014-3-6 19:42
海绵宝宝 发表于 2013-7-19 09:51
谢谢啦~~~都解决啦~~~第二个加上方向控制就可以了

你好,请问下分时复用硬件上需要添加什么元件吗?

作者: 刘德华    时间: 2017-6-10 17:05
速度环有个经验值说p是i的两百倍?有没有经验大神评价一下?
作者: znjqr    时间: 2017-6-11 11:34
纯友情支持 帮顶





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