什么是PID?PID,就是“比例(proportional)“积分(integral)”、“微分(derivative)”,是一种很常见的控制算法。PID已经有107年的历史了。

它并不是什么很神圣的东西,大家一定都见过PID的实际应用。

比如四轴飞行器,再比如平衡小车......还有汽车的定速巡航、3D打印机上的温度控制器......就是类似于这种:需要将某一物理量“保持稳定”的场合(比如维持平衡,稳定温度,转速等),PID都会派上大用场。

那么问题来了:

比如,我想控制一个“热得快”,让一锅水的温度保持在50摄氏度,这么简单的任务,为啥要用到微积分的理论呢?

你一定在想:

这不是so easy嘛,小于50就让他加热,大于50就不加热断电,不就行了?几行代码用Arduino分分钟搞定。

没错~在要求不高的情况下,确实可以这么干,But!如果换一种场合,你就知道问题出在哪里了:

如果我的控制对象是一辆汽车呢?

要是希望汽车的车速保持在50km/h不动,你还敢这样干么。

设想一下,假如汽车的定速巡航电脑在某一时间测到车速是45km/h。它立刻命令发动机:加速!

结果,发动机那边突然来了个100%全油门,嗡的一下,汽车急加速到了60km/h。

这时电脑又发出命令:刹车!

结果,吱...............哇............(乘客吐)

所以,在大多数场合中,用“开关量”来控制一个物理量,就显得比较简单粗暴了。有时候,是无法保持稳定的。因为单片机、传感器不是无限快的,采集、控制需要时间。

而且,控制对象具有惯性。比如你将一个加热器拔掉,它的“余热”(即热惯性)可能还会使水温继续升高一小会。

这时,就需要一种『算法』:

  • 它可以将需要控制的物理量带到目标附近
  • 它可以“预见”这个量的变化趋势
  • 它可以消除一些比如因为散热,阻力等因素造成的静态误差
  • .......

于是,但是的数学家们发明了一种这一历久不衰的算法——这就是PID

你应该知道,P,I,D是三种不同的调节作用,既可以单独使用(P,I,D),也可以两个用(PI,PD)或者三个一起使用(PID)

这三种作用有什么区别?听我慢慢道来:

我们先说说PID控制器的三个最基本的参数:kP,kI,kD。

kP

P就是比例的意思。它的作用最明显,原理也最简单。我们先说这个:

需要控制的量,比如水温,有它现在的『当前值』,也有我们期望的『目标值』。

  • 当两者差距不大时,就让加热器“轻轻地”加热一下。
  • 要是因为某些原因,温度降低了很多,就让加热器“稍稍用力”加热一下。
  • 要是当前温度比目标温度低得多,就让加热器“开足马力”加热,尽快让水温到达目标附近。

这就是P的作用,跟开关控制方法相比,是不是“温文尔雅”了很多。

实际写程序时,就让偏差(目标减去当前)与调节装置的“调节力度”,建立一个一次函数的关系,就可以实现最基本的“比例”控制了~

kP越大,调节作用越激进,kP调小会让调节作用更保守。

要是你正在制作一个平衡车,有了P的作用,你会发现,平衡车在平衡角度附近来回“狂抖”,比较难稳住。

如果已经到了这一步——恭喜你!离成功只差一小步了~

kD

D的作用更好理解一些,所以先说说D,最后说I。

刚才我们有了P的作用。你不难发现,只有P好像不能让平衡车站起来,水温也控制得晃晃悠悠,好像整个系统不是特别稳定,总是在“抖动”。

你心里设想一个弹簧:现在在平衡位置上。拉它一下,然后松手。这时它会震荡起来。因为阻力很小,它可能会震荡很长时间,才会重新停在平衡位置。

请想象一下:要是把上图所示的系统浸没在水里,同样拉它一下 :这种情况下,重新停在平衡位置的时间就短得多。

我们需要一个控制作用,让被控制的物理量的“变化速度”趋于0,即类似于“阻尼”的作用。

因为,当比较接近目标时,P的控制作用就比较小了。越接近目标,P的作用越温柔。有很多内在的或者外部的因素,使控制量发生小范围的摆动。

D的作用就是让物理量的速度趋于0,只要什么时候,这个量具有了速度,D就向相反的方向用力,尽力刹住这个变化。

kD参数越大,向速度相反方向刹车的力道就越强。

如果是平衡小车,加上P和D两种控制作用,如果参数调节合适,它应该可以站起来了~欢呼吧。

等等,PID三兄弟好像还有一位。看起来PD就可以让物理量保持稳定,那还要I干嘛?

因为我们忽视了一种重要的情况:

kI

还是以热水为例。假如有个人把我们的加热装置带到了非常冷的地方,开始烧水了。需要烧到50℃

在P的作用下,水温慢慢升高。直到升高到45℃时,他发现了一个不好的事情:天气太冷,水散热的速度,和P控制的加热的速度相等了

这可怎么办?

  • P兄这样想:我和目标已经很近了,只需要轻轻加热就可以了。
  • D兄这样想:加热和散热相等,温度没有波动,我好像不用调整什么。

于是,水温永远地停留在45℃,永远到不了50℃。

作为一个人,根据常识,我们知道,应该进一步增加加热的功率。可是增加多少该如何计算呢?

前辈科学家们想到的方法是真的巧妙。

设置一个积分量。只要偏差存在,就不断地对偏差进行积分(累加),并反应在调节力度上。

这样一来,即使45℃和50℃相差不太大,但是随着时间的推移,只要没达到目标温度,这个积分量就不断增加。系统就会慢慢意识到:还没有到达目标温度,该增加功率啦!

到了目标温度后,假设温度没有波动,积分值就不会再变动。这时,加热功率仍然等于散热功率。但是,温度是稳稳的50℃。

kI的值越大,积分时乘的系数就越大,积分效果越明显。

所以,I的作用就是,减小静态情况下的误差,让受控物理量尽可能接近目标值。

I在使用时还有个问题:需要设定积分限制。防止在刚开始加热时,就把积分量积得太大,难以控制。

什么是PID?讲个故事,通俗易懂相关推荐

  1. 如何给客户进行价值塑造?说一万句话,不如讲一个故事

    客户说:如果合作达成了,你们准备怎么给我做营销方案? 错误回答:我们一般是这样的,您先把您的需求告诉我,我们运营部门就会怎么怎么样,基本上就是这样回答. 小伙伴们,我先问你个问题,一本小说有没有可能让 ...

  2. 工程效能部门如何讲好故事做好事

    工程效能一个琐事堆积的部门,讲一个好的故事永远是个难题.获取支持完美落地更是难题,研发全生命周期,是一个横向可拓展,纵向可延伸的工作.本次话题希望从讲好故事做好事两个方面聊工程效能部门如何开展工作. ...

  3. 张震讲鬼故事MP3全集

    <张震讲故事>是目前国内唯一的恐怖有声作品的品牌,作品从创作到录音到后期合成都由张震本人完成,现已出版了7种版本的专辑作品.在许多年轻人特别是学生群体中有着很高的认知率和知名度.<张 ...

  4. 3星|《不会讲故事,怎么带团队》:讲好故事的套路

    不会讲故事,怎么带团队(荣获AXIOM年度商业图书金奖!)苹果.IBM等世界500强都在用的故事培训课程 作者强调人天生喜欢通过故事来了解信息,讲好故事非常重要,并且总结了讲好故事的套路. 总体评价3 ...

  5. 万卷书 - 如何讲好故事 [Wired for Story]

    如何讲好故事 利用脑科学从第一句话开始吸引读者的作家指南 作者:Lisa Cron 内容提要 <如何讲好故事>(2012年)采用了现代脑科学的研究成果,解释了为什么某些故事能吸引我们,而另 ...

  6. [论文阅读] (30)李沐老师视频学习——3.研究的艺术·讲好故事和论点

    <娜璋带你读论文>系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢.由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正,非常欢迎大家给我留言评论,学 ...

  7. 【笔记】The art of research - (讲好故事和论点)

    PART 3 - Making an Argument intro: 写文章的时候呢要跟读者建立联系:在选题的时候要选择有价值的题,读者认为这个问题是值得解决的.现在假设我们的研究已经正常的展开了,已 ...

  8. 职场需要故事——如何讲好故事

    老于笔记·06.17 不顾别人感受是自私,太顾别人感受是自虐. 前言 大家有没有发现一个现象,在当前互联网环境下,「讲故事」的能力被提升到了一个从未有过的高度. 肖恩·卡拉汉认为,讲故事的实际功效来自 ...

  9. 代码验证约瑟夫环百科词条中的故事(Python)——约瑟夫斯的故事、数学家加帕斯讲的故事,体验算法模板的奇妙。

    [点击此处跳转笔记正文] Python 官网:https://www.python.org/ Free:大咖免费"圣经"教程< python 完全自学教程>,不仅仅是基 ...

  10. 安利之父讲安利故事:诚实的直销永远可以退货

    http://finance.sina.com.cn 2005年04月08日 07:57 新闻晨报 安利公司创始人理查·狄维士接受晨报记者专访 "安利之父"讲"安利故事& ...

最新文章

  1. 一定要加强SQL数据库SA
  2. linux系统文件分类,Linux系统文件概念和文件类型
  3. 生死6小时!!!!!!!!!!!!!!!!1
  4. Java程序员面试时要注意的一些问题
  5. linux删除第二次出现的字符,linux下 怎样删除文件名中包含特殊字符的文件
  6. 论文浅尝 | MulDE:面向低维知识图嵌入的多教师知识蒸馏
  7. 萌新的Python练习菜鸟100例(十六)输出指定格式的日期。
  8. 解决MySQL无法正常启动的问题 Can't connect to MySQL server on 'localhost'(10061)
  9. Linux 查看本机串口方法
  10. HandlerMethodArgumentResolver 参数解析器
  11. 《css世界》常用技巧——读书笔记
  12. 移动端H5解惑-页面适配
  13. 优秀IT技术文章集(最新)(高质量)
  14. java feature envy_《重构-改善既有代码的设计 第3章代码的坏味道》学习笔记
  15. 内置单片机的433无线模块高速连传典型运用
  16. 量子混沌:相互作用如何影响量子多体系统的局域化?
  17. FPGA配合debussy、modelsim仿真环境搭建
  18. std::hypot 用法
  19. WPS 关闭广告,热点 解决方案
  20. m4s格式转换mp3_M4A格式怎么转换成MP3

热门文章

  1. 软件工程专业的大三学生经历和感悟
  2. 【软件需求工程与建模】13组组队项目选题介绍及项目计划安排
  3. MySQL frm、MYD、MYI数据文件恢复
  4. 移动端扫描vin码/车架号识别
  5. Office文档忘保存了?办公必学技能:快速找回未保存的文档
  6. Typora恢复文件,找回忘记保存的记录
  7. 数据增强神器 SimpleCopyPaste 支持全流程
  8. 各类邮箱谷歌邮箱、Outlook邮箱、雅虎邮箱的购买养号策略
  9. 计算机网络英文题库(含答案) Chapter 1 Computer Networks and the Internet
  10. 安卓手机怎么投屏台式计算机WIN7,手机怎么投屏到win7电脑