啥是PID?
PID,即“比例(proportional)、积分(integral)、微分(derivative)”,是一种广泛应用于各种控制系统中的经典控制算法。它诞生于1912年,至今已有百余年的历史。
PID,即“比例、积分、微分”控制算法,并非神秘莫测的存在。事实上,它在我们的日常生活中有着广泛的应用。无论是四轴飞行器、平衡小车,还是汽车的定速巡航以及3D打印机上的温度控制器,都离不开PID的功劳。PID算法专为那些需要维持物理量稳定性的场合而设计,如平衡、温度和转速控制等。然而,对于某些简单任务,如控制“热得快”来保持一锅水的恒温在50℃,为何需要借助微积分的理论呢?这背后的原理是什么呢?
关于PID原理,更深入的探讨可以参考这篇文章:PID算法原理介绍。
你或许会想:
这不很简单吗?当温度低于50℃时,就启动加热;高于50℃时,就断电。这样的逻辑,用几行Arduino代码就能轻松实现。
确实,在要求不严格的情况下,这种做法是可行的。然而,如果问题更复杂一些,你就会发现其中的挑战。比如,如果我们需要控制的对象是一辆汽车呢?
当汽车定速巡航系统检测到车速低于50km/h时,它会命令发动机加速。但如果发动机突然增加到100%的油门,汽车会急剧加速至60km/h,这显然不是我们想要的结果。随后,电脑又发出刹车命令,但此时乘客可能已经因为突然的加速而感到不适。
所以,在许多实际应用中,仅仅使用“开关量”来控制物理量往往显得过于简单和直接,可能无法达到稳定控制的效果。这是因为单片机和传感器无法实现无限快的响应速度,从采集到控制需要一定的时间。同时,控制对象往往具有惯性,例如加热器的“余热”效应可能导致水温在断电后仍会短暂升高。
为了解决这些问题,数学家们经过长期研究,发明了一种至今仍广泛应用的算法——PID算法。它能够精准地将需要控制的物理量调整到目标值附近,预测该量的变化趋势,并消除因散热、阻力等引起的静态误差。PID算法中的P、I、D三种调节作用可以根据具体需求单独或组合使用whatsapp登录,以实现最佳的控制效果。接下来,我们将深入探讨这三种调节作用的具体含义和作用方式。
接下来,我们将详细探讨PID控制器的三个核心参数:kP、kI和kD。
其中,kP代表比例,其作用和原理最为直观。具体来说,当需要控制的物理量,例如水温,接近其目标值时,kP会通过调节加热器的加热强度来维持两者的平衡。如果水温当前值低于目标值,kP会促使加热器增加加热量;反之,则会减少加热量。这种控制方式相较于简单的开关控制,显得更为精准和温和。
在编程实现时,我们可以通过设定偏差(即目标值与当前值的差)与调节装置的“调节力度”之间的一次函数关系,来构建最基本的“比例”控制。其中,kP参数的大小决定了调节作用的激进程度:kP值越大,调节作用越积极;而kP值调小则会使调节作用更为保守。
以平衡车为例,当仅使用比例控制时,你会发现平衡车在平衡角度附近出现持续的“狂抖”,难以保持稳定。这正是因为比例控制缺乏对未来变化的预测能力,使得系统容易受到外界干扰而发生抖动。
接下来,我们再来探讨D的作用。D代表微分,其作用在于预测未来变化。在平衡车的应用中,微分控制能够帮助系统预测角度的变化趋势,从而提前作出调节,减小抖动。这样,平衡车就能更稳定地保持平衡。
最后,我们来说说I的作用。I代表积分,其作用在于消除静态误差。当系统存在持续的偏差时,积分控制能够通过累积偏差来逐渐消除误差,使系统达到更为精确的控制效果。
综上所述,kP、kD和kI这三个参数在PID控制器中各自扮演着重要的角色,共同构成了精准且稳定的控制系统。
想象一下,我们心中描绘的那个弹簧,现在它位于平衡点上。当我们轻轻拉动它并松手后telegram中文版,它会开始震荡。由于阻力相对较小,它可能会持续震荡很长时间,最终才回到平衡位置。
现在,设想我们将这个系统浸入水中,然后进行相同的操作。这次,弹簧重新回到平衡位置的速度要快得多。
为了实现精准且稳定的控制,我们需要一个能够减缓物理量变化速度的控制作用,类似于“阻尼”的效果。在接近目标值时,P控制的作用会逐渐减小,确保控制过程更加平稳。然而,由于各种内在和外部因素的干扰,控制量可能会发生微小的摆动。
这时,D控制就派上了用场。它能够感知物理量的速度,并在其具有速度时施加相反方向的力,从而有效抑制其变化。kD参数的大小决定了这种抑制力度的强弱。对于平衡小车而言,通过合理调节P和D参数,它便有可能实现自主站立。
等等,PID三兄弟中还有一位I。既然PD已经能让我们物理量保持稳定,那I的作用又是什么呢?
这就要考虑一种特殊情况了:kI。以热水为例,当加热装置被带到寒冷的地方开始烧水时,水温在P的控制下逐渐上升。当水温达到45℃时,问题出现了:由于天气寒冷,水的散热速度与P控制的加热速度达到了平衡。这时,P认为只需轻微加热即可,而D则认为温度无波动whatsapp网页版,无需调整。因此,水温就永远停留在了45℃,无法达到50℃。
然而,作为人类,我们根据常识知道,此时应该增加加热功率。但该如何精确计算增加的功率呢?这就要轮到I兄弟出场了。
设置一个积分量,当偏差持续存在时,该积分量会不断累积,并直接影响调节力度。随着时间的推移,只要实际温度未达到设定目标,这个积分量就会持续增加。系统因此逐渐意识到加热需求,从而适时增加功率。一旦达到目标温度且温度保持稳定,积分值则不再变动,加热功率与散热功率达到平衡,确保温度稳定在50℃。积分系数kI的值越大,积分效果越显著。因此,I的主要作用是减小静态误差,使受控物理量更接近目标值。但需注意,在使用I时需设定适当的积分限制,以防止在加热初期积分量过度累积,造成难以控制的情况。