PID到底是个啥?讲个故事告诉你

发布者:Amybaby最新更新时间:2023-10-11 来源: elecfans关键字:PID  控制算法  PID算法 手机看文章 扫描二维码
随时随地手机看文章

啥是PID?

PID,就是“比例(proportional)、积分(integral)、微分(derivative)”,是一种很常见的控制算法。


PID已经有107年的历史了。

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

比如四轴飞行器,再比如平衡小车......还有汽车的定速巡航、3D打印机上的温度控制器....

就是类似于这种:需要将某一个物理量“保持稳定”的场合(比如维持平衡,稳定温度、转速等),PID都会派上大用场。PID应用相关文章,点击阅读:应用PID控制,让机器人学会骑自行车。

那么问题来了:

比如,我想控制一个“热得快”,让一锅水的温度保持在50℃,这么简单的任务,为啥要用到微积分的理论呢。关于PID原理,也可以看这篇文章:PID算法原理介绍。

你一定在想:

这不是so easy嘛~ 小于50度就让它加热,大于50度就断电,不就行了?几行代码用Arduino分分钟写出来。

没错~在要求不高的情况下,确实可以这么干~ But!如果换一种说法,你就知道问题出在哪里了: 如果我的控制对象是一辆汽车呢?

要是希望汽车的车速保持在50km/h不动,你还敢这样干么。 设想一下,假如汽车的定速巡航电脑在某一时间测到车速是45km/h。它立刻命令发动机:加速! 结果,发动机那边突然来了个100%全油门,嗡的一下,汽车急加速到了60km/h。 这时电脑又发出命令:刹车! 结果,吱...............哇............(乘客吐) 所以,在大多数场合中,用“开关量”来控制一个物理量,就显得比较简单粗暴了。有时候,是无法保持稳定的。因为单片机、传感器不是无限快的,采集、控制需要时间。 而且,控制对象具有惯性。比如你将一个加热器拔掉,它的“余热”(即热惯性)可能还会使水温继续升高一小会。

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

它可以将需要控制的物理量带到目标附近

它可以“预见”这个量的变化趋势

它也可以消除因为散热、阻力等因素造成的静态误差

....

于是,当时的数学家们发明了这一历久不衰的算法——这就是PID。 你应该已经知道了,P,I,D是三种不同的调节作用,既可以单独使用(P,I,D),也可以两个两个用(PI,PD),也可以三个一起用(PID)。 这三种作用有什么区别呢?客官别急,听我慢慢道来

927b3c9a-ffd6-11ed-90ce-dac502259ad0.gif

我们先只说PID控制器的三个最基本的参数:kP,kI,kD。 kP P就是比例的意思。它的作用最明显,原理也最简单。我们先说这个: 需要控制的量,比如水温,有它现在的『当前值』,也有我们期望的『目标值』。

当两者差距不大时,就让加热器“轻轻地”加热一下。

要是因为某些原因,温度降低了很多,就让加热器“稍稍用力”加热一下。

要是当前温度比目标温度低得多,就让加热器“开足马力”加热,尽快让水温到达目标附近。

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

实际写程序时,就让偏差(目标减去当前)与调节装置的“调节力度”,建立一个一次函数的关系,就可以实现最基本的“比例”控制了~ kP越大,调节作用越激进,kP调小会让调节作用更保守。

要是你正在制作一个平衡车,有了P的作用,你会发现,平衡车在平衡角度附近来回“狂抖”,比较难稳住。平衡车项目:STM32平衡小车。 如果已经到了这一步——恭喜你!离成功只差一小步了~ 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  控制算法  PID算法 引用地址:PID到底是个啥?讲个故事告诉你

上一篇:PLC编程案例:接触器互锁正反转电路
下一篇:控制器与电机如何匹配

推荐阅读最新更新时间:2024-11-12 16:38

如何使用AVR单片机进行数字PID调节器的设计
数字PID调节器具有操作简单,控制精度准确,安全可靠性高等优点,广泛应用于工业生产过程中。提出一种以AVR单片机ATmega16为核心的数字PID调节器,该调节器充分利用了高性能AVR单片机的片内资源及外围扩展电路,能够接收多种类型的测量信号,具有较强的在线修改和丰富的控制功能,并且采取硬件和软件双重抗干扰措施提高了调节器的可靠性。 在连续生产过程控制中,按偏差的比例(P)、积分(I)、微分(D)进行控制的PID调节器是应用最为广泛的一种自动控制器。 它具有原理简单、易于实现、适用面广等优点。在计算机用于生产过程控制之前,模拟PID控制器一直占主导地位。单片机的出现,使以单片机为核心的数字PID调节器迅速成为应用最广泛的自
[单片机]
如何使用AVR单片机进行数字<font color='red'>PID</font>调节器的设计
基于PID控制算法的气味循迹车设计
气味循迹可以从事寻找有毒有害气体泄漏源、寻找爆炸源等相关工作,受到科研人员高度关注,发展十分迅速。同时,随着人们日常生活智能化程度的增强,具有智能控制系统的小车、机器人层出不穷,而这些智能体将在未来工业生产和日常生活中扮演更重要的角色。智能车,是一种能感知环境和自动有目的地行驶的综合系统。我们也可以这样认为,智能车也是智能机器人的一种形式,它的双腿我们用轮子代替,因而更加简单实现和控制。 耗时长、跟随性能差是当下智能气味循迹车在循迹过程中普遍存在着的情况。本文介绍的智能气味循迹车的控制核心是STC12单片机,能自动感知附近特定的气味,并应用 PID算法调节舵机,控制方向遵循气味来向前行,实验结果显示能有效缩短循迹时间,改善智能车的
[单片机]
基于<font color='red'>PID</font><font color='red'>控制算法</font>的气味循迹车设计
PID算法调节C51程序(5)
typedef struct PIDValue { uint32 Ek_Uint32 ; //差值保存,给定和反馈的差值 uint8 EkFlag_Uint8 ; //符号,1则对应的Ek 为负数,0为对应的Ek 为正数 uint8 KP_Uint8; uint8 KI_Uint8; uint8 KD_Uint8; uint8 B_Uint8; //死区电压 uint8 KP; //显示修改的时候用 uint8 KI; // uint8 KD; // uint8 B; // uint16 Uk_Uint
[单片机]
气体传感器PID脉宽恒温控制电路设计
1 引言 在 半导体 电阻 式气体 传感器 中,气敏芯体对温度非常敏感,在整个工作环境温度波动范围内温度噪声通常会完全掩盖气体浓度输出的有效信号。另外气体传感器大多利用化学反应性质测量气体浓度,化学性质通常与温度有关,为了获得最佳响应特性,敏感芯体通常需要工作在特定温度,因而为气敏芯体提供恒定的工作温度环境显得非常有意义。 在 电路 设计理论里实现恒温控制的方式有很多,传感器的特殊应用决定了低功耗、高精度、高可靠性的分立 模拟电路 实现方案非常适合。PID脉宽控制恒温模拟电路具有非常好的控温精度,同时元器件简单且具有可靠的失效率参数,风险可控,非常适合航天产品的设计要求。 2 电路框图 传感器芯体上面集成了测温电阻与
[嵌入式]
控制算法研发:无人机可模仿自行车和汽车穿越城市
  据外媒报道,研究人员已经开发出一种 无人机 的控制算法,让它们模仿自行车和汽车通过城市地区的运动。许多 无人机 的应用大部分出现在空旷的空域,但是在街道上安全地移动通过密集的城区也是一个方便的功能。下面就随嵌入式小编一起来了解一下相关内容吧。   研究人员已经提出了一种 无人机 控制系统,通过向它们展示汽车和汽车的前行模式,使无人机能够自主地通过这些繁忙的区域。   现代城市的喧嚣需要都市人对移动障碍有着敏锐的注意,那么如何培训飞行机器人呢?无人机使用的GPS系统使其在所有行人,汽车,自行车和步行道上空开放的空域前行,苏黎世大学和国家研究能力中心的研究人员训练无人机进行跟随。   这意味着开发一个他们称之为DroNet的深度
[嵌入式]
温度PID控制接线与编程
A、硬件接线(如图1所示);       由于固态继电器输出是采用脉冲开关形式,因此采用plc的晶体管输出,型号为CPU224 DC/DC/DC。对于扩展模块EM231 4TC的另外3个端口,采取短接的形式,以防止不必要的干扰。 图1 温度PID控制的硬件接线 B、PID编程       PID编程包括主程序、子程序和中断程序三部分组成。主程序主要完成上电初始化调用子程序,并以两秒为周期(定时器T32)控制固态继电器Q0.0的输出。主程序中的变量M20.0为两秒脉冲;VW200为PID的输出实际值。
[嵌入式]
PID调节设置规律
PID是建立在P的基础上。P是负反馈控制的放大倍数。负反馈控制是放大器。放大器的输出通过反馈电路进入之后跟输入的设定值进行比较,因为是负反馈,所以它是一个差值。用这个差值来控制输出量的变化,PID就是解决了一些负反馈很难解决的问题。 比如说负反馈控制的P放大的倍数太大了的话就会超调振荡。另一个问题,负反馈出来的值和跟设定的信号值,这两个值的信号方向是相反的,如果说当设定值和负反馈值差不多的时候差值就会等于零,等于零后放大出来后会振荡的很厉害。 而PID就是负反馈的改进,利用积分来一点一点靠近设定值,但是有一个前提,你的P要做的相当,这个比例系数P要适当,当输出在有限范围内振荡,P就可以了。而后加I,I加进去后一定会减小这个
[嵌入式]
基于STM32的直流电机PID调速系统设计与实现
直流调速系统广泛应用于低转速、高精度等各领域,如精密办公设备(喷墨打印机、激光打印机),自动售货机,家用电器、机器人和玩具设备等。其发展得力于微电子技术、电力电子技术、传感器技术、永磁材料技术、自动控制技术和微机应用技术的最新发展成就。顺应调速系统智能化、简单化的发展趋势,本设计采用一款性价比高、功耗低的基于ARMCortex⁃M3内核的STM32单片机为控制核心,结合PID控制技术,实现了直流电机范围大、精度高的调速性能。 1、系统的总体设计 该调速系统能够实现对电机的启动、制动、正反转调速、测速和数据上传等功能,可方便地实现直流电机的四象限运行。本系统的性能指标为:调速精度高达到1r/min;调速稳态误差不超过0.5%;调
[单片机]
基于STM32的直流电机<font color='red'>PID</font>调速系统设计与实现
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved