智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1259|回复: 3
打印 上一主题 下一主题

PID调试。。。。。。。

[复制链接]

7

主题

70

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1255
威望
510
贡献
283
兑换币
315
注册时间
2014-3-11
在线时间
231 小时
跳转到指定楼层
1#
发表于 2014-5-19 19:56:54 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
调PID的时候,首先调的是P(I=0 D=0),,,设定了目标脉冲,,当P大的时候,反馈的脉冲在目标脉冲处波动特别的大,但是当P小的时候,就达不到目标脉冲了,,但是波动特别稳,波动不大(在3~5之间波动),,例如:目标脉冲是60   p小的时候反馈的脉冲就是在36左右波动(波动范围小)。这个是神魔情况。
float PID_Control(PID *pp )
{  
   signed long  error1,error2,error3;//error是预定的速度和返回速度之差,d_error是偏差的偏差

   pp->v_FeedBack= pulse_counter;

   if(wandaojs>10000)                           //稳定赛道加速
   {
      if(wdjiasu<21)                            //递增
        wdjiasu+=3;
   }                          
   else
      wdjiasu=0;                                //否则为0
   pp->ideal_speed=150+wdjiasu;
   error1 = (signed long)(pp->ideal_speed - pp->v_FeedBack); // 当前偏差计算   
   ERROR1 = error1;
   error2 = error1 - pp->v_PreError;//速度的偏差的偏差
   error3 = error2 - pp->v_PreDerror;//这一次偏差的差和前一次偏差的差的差
   pp->v_PreError = error1; //存储当前偏差        
   pp->v_PreDerror = error2;//存储偏差的偏差
   setPID();

      pp->Moto_Out+=(signed long)((pp ->v_Kp*error2)+pp->v_Ki*error1+ pp->v_Kd*error3);

   if( pp->Moto_Out > speed_MAX )
      pp->Moto_Out = speed_MAX;
   if( pp->Moto_Out < speed_MIN )
      pp->Moto_Out = speed_MIN;
   return (pp->Moto_Out);// 返回预调节占空比
}   
//------------------执行-----------------//   

以上是PID公式,,求大神看看啥情况,,,
回复

使用道具 举报

1

主题

37

帖子

0

精华

高级会员

Rank: 4

积分
547
QQ
威望
363
贡献
118
兑换币
41
注册时间
2010-11-15
在线时间
33 小时
4#
发表于 2014-5-19 21:13:47 | 只看该作者
简单来说P越大瞬间调节的会快一些,但太大会导致对于测量的正常跳动过于敏感,也就是你说的P大的时候波动会变大。I 越大跟踪设定值的速度会快,但过了一定的值会引起控制滞后,最后导致超调。此外比例和积分会相互影响,增强比例能在一定程度上抵消积分的滞后从而减小超调。至于波动多少合适就全看你自己的要求了。
有一点提醒一下,让测量值跟上设定值重点在积分项上,因为当你的测量等于设定的时候误差是0,那样比例也就没作用了。
回复 支持 反对

使用道具 举报

7

主题

70

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1255
威望
510
贡献
283
兑换币
315
注册时间
2014-3-11
在线时间
231 小时
3#
 楼主| 发表于 2014-5-19 20:41:39 | 只看该作者
xunzhou 发表于 2014-5-19 20:10
首先,你要知道对于速度控制,你的被控对象是小车的直流电机,而直流电机一般可以视为一阶或二阶惯性对象。 ...

这样的话,调p时候  让他到达目标脉冲(即使波动很大),,然后增加I的值吗?是波动减小,,,但是p调到社么时候才会比较合适呢?(是即能达到目标误差而且波动尽可能小?波动多少时候才算合适?)
回复 支持 反对

使用道具 举报

1

主题

37

帖子

0

精华

高级会员

Rank: 4

积分
547
QQ
威望
363
贡献
118
兑换币
41
注册时间
2010-11-15
在线时间
33 小时
2#
发表于 2014-5-19 20:10:16 | 只看该作者
首先,你要知道对于速度控制,你的被控对象是小车的直流电机,而直流电机一般可以视为一阶或二阶惯性对象。如果你的控制器仅包括比例作用,那你的控制系统会是一个0型系统,而0型系统对于阶跃信号会存在稳态误差。稳态误差也叫余差,他的大小与1/(Kp+1)有关,如果Kp越大则余差越小。
so,你懂得。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-27 02:03 , Processed in 0.044538 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表