教你快速学习PID控制原理

3 篇文章 0 订阅
1 篇文章 0 订阅

教你快速学习PID控制原理

写在前面

 在这篇文章中我会通过举例的方式来让大家了解什么是PID控制,这篇博客是让大家更加容易的理解PID控制,如果大家想要跟深入的了解的话最好是自己上手去做一个关于PID控制的实物,在实践中去学习效果会更好。

如果大家需要PID学习套件的话可以点此淘宝链接,资料开源在淘宝链接上面可以自行下载:PID循迹车学习套件链接
此链接为通过PID控制的差速循迹车最终效果视频:PID差速循迹车

正文

 PID是我们在控制中常用的一种控制算法,大到导弹、火箭,小到平衡车或者热水器一般都会用到PID控制。PID控制中P(Proportion)为比例,I(Integral)为积分,D(Differential)为微分。
在这里插入图片描述

 为了简单说明PID控制的原理我们举一个小例子来说明,我们举一个常见的热水器例子。我们现在需要将一升水加热到50℃,且温度控制误差在±1℃。如图1所示,当开关闭合时加热器加热,则水温会升高,开关断开时加热器不会加热,水温也会变低。如果我们按照常规思路去想的话应该是当水温达到50℃的时候,热水器停止加热,当水温低于50℃的时候热水器开始加热。
图1

图1 恒温热水器加热图示说明

 如果按照刚才那种设想来实现的话,实际情况可能并不是按我们想的那样,水温会恒定到50摄氏度。实际上水温达到50℃加热棒停止加热时的水温同样会继续上升,这是因为当我们关闭开关时,加热棒的温度还是高于水温,因此水温还会继续升高。直到加热棒的温度和水温相同时,水温才会下降,这时水温可能会达到53℃了,则不满足控制精度。如果画成曲线形式可以表示成图2所示。

传统方法温度控制曲线

图2 传统方法温度控制曲线

 那么大家可能会说,能不能在50℃之前就停止,比如在47℃时停止加热,水温如果在停止加热后水温继续上升3℃,刚好50℃。但是水温低于47℃时我们再开始加热,水温又不满足控制精度的需求了。

 这种控制较为简单适合对水温控制精度要求不高的场合,仅仅用一个继电器即可实现对水温的控制,像我们常用的电热水器一般都是这种控制方式,因为水温高那一两度我们也察觉不到。但是如果在控制水温精度较高的场合可能就需要通过PID控制来实现了。

 我们知道水是通过加热棒加热的,加热棒的温度越高水温升高的速度也就越快。如果我们能够控制加热棒的温度,当水温快到达设定温度50℃时让加热棒温度慢慢降低,直到水温达到50℃时,只需让加热棒的温度维持水温即可。通过控制加热棒温度从而控制水温的方式能够快速且稳定的控制让水温达到目标温度。

 但是我们又如何控制加热棒的温度呢?我们可以通过PWM脉冲宽度调制来实现。如果我们设置加热棒在0.1S内加热0.02S,其余都是不加热状态,这时加热棒的温度肯定没有一直加热温度高。我们把加热周期设置为0.1S,通过控制加热棒在加热周期内的加热时间即可控制加热棒温度,其实也就是控制PWM脉冲的占空比。对于如何做到水温越接近目标温度,加热棒温度越低,我们可以引入PID控制中的’P’,比例控制来实现。公式如下所示,公式中D表示控制加热棒温度的占空比,其值越大加热棒温度越高,水温升高越快。Ttarget为热水器目标温度,Tnow为热水器当前温度,Kp为比例系数,其值越大温度加热的越快。我们可以从公式看出当目标温度和当前水温相差过大时,占空比也会越大,当接近目标温度时占空比会变小。从而实现越接近目标温度,水温升高越慢的效果。

P控制公式

 我们理想的的温度控制曲线,应该是接近图3所示。如果比例系数Kp过大的话,那么加热棒加热的就会越‘猛’,可能就会产生图5温度超调且震荡的效果了。如果比例系数Kp过小,那么加热棒加热力度不够,可能最终温度会稳定一个低于50℃的一个温度,产生图6的效果。
理想温度控制曲线

图3 理想温度控制曲线

超调震荡温度控制曲线

图4 超调震荡温度控制曲线

失调温度控制曲线

图5 失调温度控制曲线

 我们应该可以很容易的想到,当Kp过大时达到目标温度的时间t1,肯定会小于理想温度控制曲线中的t1。也就是说图4中的t1肯定会小于图3中的t1,因为Kp越大加热的越快,所以到达目标温度时的时间也会越短。如果我们想要水温快速的达到目标温度就要调大Kp,但是Kp过大会引起超调和震荡,可能又不满足我们控制稳定性的要求了,那么有没有办法解决这个问题的?当然是有的,也就是引入微分D,也就是下面的公式:
在这里插入图片描述
 上式中dT/dt为单位时间内温度的变化量,Kd为微分系数。这说明这时控制加热棒温度的占空比D就与水温上升的速度有关了,也就是温度的变化率。引入微分D能够抑制震荡,图5 超调震荡温度控制曲线中就不会震荡了,同时水温达到目标温度的时间t1也会小于仅仅引入比例控制的时间。我们可以把微分D看成引入一个阻尼系数Kd,Kd越大阻尼也就也大,Kd越小阻尼也就也。如果大家还不是很清楚的话,可以想想摆球,如图6所示。如果让摆球空气中摆动那么摆球会摆动很多次才会静止,这是因为空气阻尼对摆球很小。但是如果将其放到水里,可能就摆动几次就停止摆动了,也就是因为水对摆球的阻尼大。上式中的Kd也就等同于这里的阻尼系数。
摆球

图6 摆球

 如果我们在控制水温到达目标的过程中不能让水温产生超调现象,这时参数Kp必须要小,但是小的话就会产生图5的效果,水温达不到目标温度,那能不能有解决办法即使过小也能达到目标温度呢?当然是有的,也就是引入PID控制中的I积分,写成公式如下所示:
在这里插入图片描述
上式中Ki为积分系数,在这里插入图片描述为当前温度与目标温度差随时间的积分,由于我们不需要快速响应所以把参数Kd设置为了0。我们从公式可以看出,占空比与当前温度与目标温度差随时间的积分有关。如果水温一直打不到目标温度这个温度差就会一直存在,当然积分也就会越积越大,最后占空比也会增大,直到这个温度差为0时积分才不会起作用。
 讲到这基本上就把PID的比例、积分、微分为控制的作用讲的差不多了,大家应该也对PID控制有所了解了。PID写成公式如下所示,根据给定值与实际输入值构成控制偏差,即,控制系统原理框图如图7所示。
在这里插入图片描述
在这里插入图片描述

图7 PID控制系统原理框图

总结

通过以上说明我们可以大概了解PID每个参数的作用:
1.Kp越大响应速度越快,但是系统超调且会震荡。Kp越小响应速度变慢,但是会失调。
2.Kd能够抑制震荡,可以吧Kd理解为阻尼系数。
3.Ki可以看做一个推手,让Kp力气不足以让温度达到目标温度时,Ki可以推一把。

一般控制器不一定都要用到PID三个参数,
常用的有:

P控制器、PI控制器、PD控制器、PID控制器。

调节PID三个参数的步骤:
不管什么样的控制器都要先调节比例系数Kp,如果是PD控制器则调节完Kp后再调节Kd。如果是PI控制器则先调节完Kp后再调节Ki。如果是PID控制器,则应该是先调节Kp然后是Kd,最后是Ki。

  • 12
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值