电机控制
直播中

王芳

7年用户 1421经验值
私信 关注
[文章]

什么是PID?如何系统性的进行PID调参呢?

  正文
  这里我们来讲解第六个问题,如何系统性的进行PID调参!
  这里我们先聊聊什么是PID~
  当今的闭环自动控制技术都是基于反馈的概念以减少不确定性。反馈理论的要素包括三个部分:测量、比较和执行。测量关键的是被控变量的实际值,与期望值相比较,用这个偏差来纠正系统的响应,执行调节控制。
  在工程实际中,应用最为广泛的调节器控制规律为比例、积分、微分控制,简称PID控制,又称PID调节。PID控制器(比例-积分-微分控制器)是一个在工业控制应用中常见的反馈回路部件,由比例单元P、积分单元I和微分单元D组成。
  PID控制的基础是比例控制;积分控制可消除稳态误差,但可能增加超调;微分控制可加快大惯性系统响应速度以及减弱超调趋势。这个理论和应用的关键是,做出正确的测量和比较后,如何才能更好地纠正系统。
  PID(比例(proportion)、积分(integral)、微分(differential))控制器作为最早实用化的控制器已有近百年历史,现在仍然是应用最广泛的工业控制器。PID控制器简单易懂,使用中不需精确的系统模型等先决条件,因而成为应用最为广泛的控制器。
  PID控制有很多,速度环、位置环、扭矩环等等,我们在ROS系统下用的只是速度环控制——设定一个转速使电机的真实转速接近!注意,这里是接近,不是到达!
2.jpg
  PID总是搞得玄而又玄,很多人听说PID就觉得头大,其实PID一点都不困难!
  不过确实是但看这张图,我也不想去学习PID,一看就是很难!
  这里我们来聊一个问题,如何实现对电机的转速控制!
  现在你有一个直流减速编码电机,需要通过单片机的IO口输出PWM来控制电机的转速,需要你求出一个PWM和速度值的关系,实现对电机转速的控制。
  这里我们需要通过对PWM值的调节来实现速度的控制。
  通过直流编码电机上面的编码器,我们可以计算得到电机的实时转速,如果实时转速比我们预设值小,那么我们就需要来加大PWM来提高转速。
  如果实际转速比我们预设值高,那么我们就需要来减小PWM来降低转速。
  最终要实现就是让实际转速尽量接近预设值,注意是接近,而不是到达,当然最好达到!
2.jpg
  这个,就是我们ROS小车底盘上面,设定速度值转成PWM值的计算!
2.jpg
  这个函数是ros_arduino_bridge固件diff_controller.h文件里面的PID计算函数实现~
2.jpg
  这个函数是某机器人底盘上面关于PID计算函数实现
2.jpg
  调试中的PID曲线展示,蓝色是预设值(期望值),红色是真实值(通过编码器计算得到的)~
  用PID的很多都是直接套用上面的公式,然后修改三个比例系数。通过看两条曲线,分析真实值和期望值,对三个参数进行修改实现~
  如何系统性的调试PID,其实也就是那个口诀!
  参数整定找最佳,从小到大顺序查 先是比例后积分,最后再把微分加 曲线振荡很频繁,比例度盘要放大 曲线漂浮绕大湾,比例度盘往小扳 曲线偏离回复慢,积分时间往下降 曲线波动周期长,积分时间再加长 曲线振荡频率快,先把微分降下来 动差大来波动慢,微分时间应加长 理想曲线两个波,前高后低4比1 一看二调多分析,调节质量不会低
  先是比例后积分,最后再把微分加!这个是顺序~
  接下来是对P、I、D三个比例系数如何调整的口诀~
  理想状态两个波,前高后低4比1!这个,你可以来尝试调试一下试试看!(ros_arduino_bridge这一套就可以!)



原作者:Rugels.Dix 古月居

更多回帖

发帖
×
20
完善资料,
赚取积分