智能车制作

标题: PID算法在智能车中如何应用 [打印本页]

作者: 樱花流年    时间: 2012-3-4 12:23
标题: PID算法在智能车中如何应用
最近在看PID算法,虽然原理大致懂了,但是对于PID算法如何在智能车中如何应用,又该如何编程是一片模糊,求高手能解答哈,给个用PID算法指导车子的程序(最好带个说明哈)。不胜感激!

作者: 大象    时间: 2012-3-5 17:15
P 比例控制-----控制器的输出与输入误差信号成比里关系
I  积分控制----控制器的输出与输入误差信号的积分成正比关系,积分积累
D  微分控制----控制器的输出与输入误差信号的微分(即误差的变化率)成正比,预测误差的变化
   void PidWork()
{
  L_u[2] = L_u[1];
  L_u[1] = L_u[0];
  L_u[0] = Goal_speed - Real_Speed;//p_speed是根据传感器的检测情况在软件中给定的理论速度,search_PACN10就是PACN10表实际速度
  Mp = Kp * L_u[0];//偏差的放大倍数,KP值大可以加快调节,但会使稳定性下降
  Mi = Mi + Ki * L_u[0];//积分累加,可以消稳态误差,但是会使稳定下降,动态响应变慢
  Md = Kd * (L_u[0] - 2 * L_u[1] + L_u[2]);//改善动态性能,减少超调,太大会有干扰
  Mp2 = Kp2 * (L_u[0] - L_u[1]);
  
  if(((Ki * L_u[0]) > E)||((Ki * L_u[0]) < -E)) //初始化q=1,E=5 用这个if来决定是否需要用积分来调节,如果刚开始的积分已经很大了,就不需要用积分来调节了
  q = 0;
  else q = 1;                  
  MPWM = MPWM + Mp + q * Mi + Md +Mp2;
// MPWM = MPWM + Mp+ Md +Mp2;
  
  if(MPWM > 1000) MPWM = 1000;//保证不溢出
  if(MPWM < 0) MPWM = 0;
  MPWM=MPWM/30;
  if(MPWM>100) MPWM=100;
  if(MPWM<0) MPWM=0;
  PWMDTY1=(int)MPWM;

  Mp = 0;//调节一次后要把PID值清0
  Mi = 0;
  Md = 0;
  Mp2 = 0;
}
作者: 大象    时间: 2012-3-5 17:16
P 比例控制-----控制器的输出与输入误差信号成比里关系
I  积分控制----控制器的输出与输入误差信号的积分成正比关系,积分积累
D  微分控制----控制器的输出与输入误差信号的微分(即误差的变化率)成正比,预测误差的变化
   void PidWork()
{
  L_u[2] = L_u[1];
  L_u[1] = L_u[0];
  L_u[0] = Goal_speed - Real_Speed;//p_speed是根据传感器的检测情况在软件中给定的理论速度,search_PACN10就是PACN10表实际速度
  Mp = Kp * L_u[0];//偏差的放大倍数,KP值大可以加快调节,但会使稳定性下降
  Mi = Mi + Ki * L_u[0];//积分累加,可以消稳态误差,但是会使稳定下降,动态响应变慢
  Md = Kd * (L_u[0] - 2 * L_u[1] + L_u[2]);//改善动态性能,减少超调,太大会有干扰
  Mp2 = Kp2 * (L_u[0] - L_u[1]);
  
  if(((Ki * L_u[0]) > E)||((Ki * L_u[0]) < -E)) //初始化q=1,E=5 用这个if来决定是否需要用积分来调节,如果刚开始的积分已经很大了,就不需要用积分来调节了
  q = 0;
  else q = 1;                  
  MPWM = MPWM + Mp + q * Mi + Md +Mp2;
// MPWM = MPWM + Mp+ Md +Mp2;
  
  if(MPWM > 1000) MPWM = 1000;//保证不溢出
  if(MPWM < 0) MPWM = 0;
  MPWM=MPWM/30;
  if(MPWM>100) MPWM=100;
  if(MPWM<0) MPWM=0;
  PWMDTY1=(int)MPWM;

  Mp = 0;//调节一次后要把PID值清0
  Mi = 0;
  Md = 0;
  Mp2 = 0;
}
作者: 樱花流年    时间: 2012-3-5 19:41
大象 发表于 2012-3-5 17:16
P 比例控制-----控制器的输出与输入误差信号成比里关系
I  积分控制----控制器的输出与输入误差信号的积分 ...

请问这个是实现PWM给电机加速的嘛?PID算法在智能车中还可以用于哪些方面哦?
作者: 樱花流年    时间: 2012-3-5 21:41
对了,大师,那个MP2那个等式是怎么回事?我的资料上写的是u(k)=u(k-1)+ao*e(k)+a1*e(k-1)+a2*e(k-2)   a0=kp+ki+kd a1=-kp-2*kd a2=kd.但是你给我的例子是a0=kp+ki+kd+kp2
作者: lcokenm    时间: 2012-4-25 22:37
受教了
作者: dong130300    时间: 2013-3-26 17:45
明白了
作者: jia1236544    时间: 2013-10-12 20:46

作者: 拉风滴小伙儿    时间: 2013-11-10 09:27

作者: 小布的梦    时间: 2014-1-16 20:43
先看看 以后用!!!
作者: 小布的梦    时间: 2014-1-16 20:44
大象 发表于 2012-3-5 17:16
P 比例控制-----控制器的输出与输入误差信号成比里关系
I  积分控制----控制器的输出与输入误差信号的积分 ...



作者: WMB吴茂彬    时间: 2015-2-1 11:24
挺不错的哈
作者: 蒙着面会很强    时间: 2015-2-2 15:04
受教了...
作者: 序文哥    时间: 2015-4-7 17:28
:):):)




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