智能车制作

标题: 电机pid [打印本页]

作者: 海蓝月    时间: 2013-3-10 15:40
标题: 电机pid
今天开始使用编码器调电机,但是最终的参数无论怎么调,车子都是龟速,原来大概1.5m/s,现在估计就1m/s吧,而且Kp给大了或者给小的时候,车子的速度不是飚,就是停止不动,用的是增量的pid,不知到底什么情况,为什么还会禁止不动呢??
具体的程序如下:
void speed_pid(int exp_v, int KKP, float KKI, int KKD)
{
      float now_v;
      //static int last_v_ek = 0, last_v_dek = 0;       //速度偏差
      float v_ek;
      float v_dek;                  //偏差率
      int temp;
      
      //exp_v = (exp_v /40  )*4.5;
      now_v = uSpeedNow * 11.85;     
      v_ek = exp_v - now_v;       //速度差  I
      v_dek = v_ek - last_v_ek;   //偏差率  P
      //KKP = 40;     //0110 0000
      //KKI = 0;       //0000 1100
      //KKD = 0;           
            temp = KKP * v_dek + KKI * v_ek + KKD * (v_dek - last_v_dek);
            temp =(int)temp / 80;
           
            speed_pwm = speed_pwm + temp;
   
              
      last_v_ek = v_ek;
            last_v_dek = v_dek;
           
      PWMDTY01=speed_pwm;
}
是把10ms采集到的编码器数据转换成轮子的pwn占空比,然后再进行pid 的,求解啊!!~~~弄一天了
作者: qq364492460    时间: 2013-3-10 16:09
PID公式里的是偏差量  不是偏差率吧?

。。新手意见。错了不要喷额
作者: qq364492460    时间: 2013-3-10 16:11
公式应该没错。。我看错了,试试看丛其他方面找找原因吧
作者: 卟李狗昕    时间: 2013-3-10 17:40
才调一天啊,没事慢慢调,我们都是整个星期的调
作者: 客流量    时间: 2013-4-12 17:39
你有编码器的资料吗??
发给我一份好吗??
太感谢了

作者: 让梦远航    时间: 2013-4-30 21:06
是不是因为你的D参数有点小啊,




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