PID温控实验平台搭建(一)——PID基础知识介绍

PID温控实验平台搭建

(一)PID基础知识介绍

(二)PID进阶知识介绍及源码分享

(三)从零开始搭建STM32温控实验平台

(四)PID温控系统代码讲解

(五)最终实验现象与总结



前言

最近,我突发奇想去翻阅了一些我本科期间所做的一些小项目,发现都挺有意思的!当年做这些项目的时候可走了很多弯路,所以想着可以将它们上传到网络上,并通过我的讲解文章可以帮助你们少走一些弯路!

今天,我要分享的是一个PID温控实验平台的搭建,因为我想要讲的详细一点,所以打算做成一个系列,手把手地教你学习和认识PID算法,了解这种算法在温度控制中的应用。由于我知识有限,如果出现一些错误,希望大家可以帮助我指出来,我们一起学习进步!!!


一、PID是什么?

在工业应用中PID及其衍生算法是应用最广泛的算法之一,是当之无愧的万能算法,如果能够熟练掌握PID算法的设计与实现过程,对于一般的研发人员来讲,应该是足够应对一般研发问题了,而难能可贵的是,在很多控制算法当中,PID控制算法又是最简单,最能体现反馈思想的控制算法,可谓经典中的经典。经典的未必是复杂的,经典的东西常常是简单的,而且是最简单的。

我们常见的数字PID算法基本分为增量式PID位置式PID,他们的主要区别在于增量式PID的输出结果只与最近几次的误差结果有关,运算速度快且无累积误差,并无积分作用位置式PID是需要对误差进行积分,容易产生累积误差且运算速度慢。所以在选择具体使用哪种算法时,要根据自己搭建的系统中是否含有积分部件来选择,本项目选择的是位置式PID算法


二、位置式PID算法

通常PID算法都是由 P(比例)、I(积分)、D(微分)三个部分构成,他们之间相互配合,最终依据期望值与当前实时量来输出一个输出量,最终使得整个系统的输出量不断逼近我们所需求期望值。

图1 PID算法示意框图

PID算法公式

Y(t) = K_{p}(e(t)+\frac{1}{T_{t}}\int_{0}^{t}{e(t)dt}+T_{D}\frac{\mathrm{d} e(t)}{\mathrm{d} t})

(将Kp乘进去)

Y(t) = K_{p}e(t)+\frac{K_{p}}{T_{t}}\int_{0}^{t}{e(t)dt}+K_{p}T_{D}\frac{\mathrm{d} e(t)}{\mathrm{d} t}

令 Kp 为比例时间系数;

令 Ki=Kp/Tt 为积分时间系数;

令 Kd=KpTD 为微分时间系数;

 最终得到(连续型):

 Y(t) = K_{p}e(t)+{K_{i}}\int_{0}^{t}{e(t)dt}+K_{d}\frac{\mathrm{d} e(t)}{\mathrm{d} t}

由于我们现实中不可能获得一个连续型的数据,所以我们在工程应用时,必须离散化这个公式,随之而来的便得到一个调节周期的概念,即我们多少毫秒来计算一次PID输出,这个值的大小也会影响到离散型PID系统的稳定,将会在后面的文章为大家仔细讲解。

(离散化)位置型PID公式

Y(t) = K_{p}e_{i}+ {K_{i}} \sum_{i=1}^{N}e_{i}+ K_{d}(e_{i} - e_{i-1})

其中,ei(第i次误差) = 目标值-当前值;

其实,这时候就可以看出PID算法最终值就是三个部分简单的代数和,并没有多复杂!如果将这些公式分散开,其实就涵盖了三种控制算法:比例控制算法P、积分控制算法I、微分控制算法D,下面我将分别向大家介绍。


三、PID算法实例讲解

1、比例控制算法P

往往对一些要求不高的场景,只使用一个P就可以达到还不错的效果,在只使用算法P时,此时Ki = 0,Kd = 0,最终PID公式就变成如下所示;可以预料到的是,随着时间流逝,最终的输出值会无限贴近于预期值,下面我将会举例说明:

Y(t) = K_{p}e_{i}

现在,我们想象有一个大水缸,需要装满一缸水,大约10L左右,缸壁无破损,我们有一个1L的水桶可以往水缸里加水,且一次最多加一桶水,在这里,我们假设可以精准控制水桶里的水量。我们期望将大水缸里的水加到3.5L,而我们瞅了一下,大水缸目前的水是2L左右,现在我们使用比例控制算法P对大水缸进行加水!

图2 示意图
表1 Kp=0.5的输出情况
序号Kp=0.5大水缸水位线
1e1=3.5-2=1.5 LY(1)=0.5*1.5=0.75 L2.75 L
2e2=3.5-2.75=0.75 LY(2)=0.5*0.75=0.375 L3.125 L
3e3=3.5-3.125=0.375 LY(3)=0.5*0.375=0.1875 L3.3125 L
4e4=3.5-3.3125=0.1875 LY(4)=0.5*0.1875=0.9375 L3.40625 L
............
表2 Kp=1.5的输出情况
序号Kp=1.5大水缸水位线
1e1=3.5-2=1.5 LY(1)=1.5*1.5=(2.25L>1L)=1 L3 L
2e2=3.5-3=0.5 LY(2)=1.5*0.5=0.75 L3.75 L
3e3=3.5-3.75=-0.25 LY(3)=1.5*(-0.25)=-0.375 L3.375 L
4e4=3.5-3.375=0.125 LY(4)=1.5*0.125=0.1875 L3.5625 L
5e5=3.5-3.5625=-0.0625 LY(5)=1.5*(-0.0625)=-0.09375 L3.46875 L
............

可以从上面两张表看到,使用比例控制算法P,最终会达到预期值,但是就是一直会存在一个余差无法被消除!我特地画了两张图以便大家理解,从下图可以看到单纯使用比例控制算法P要么就是无限接近于预期值,要么就是在预期值附近反复震荡所以在一些精度要求比较高的场景下,单纯只使用P,并不能得到理想的结果!

图3 Kp=0.5和Kp=1.5两种情况的输出情况图

2、积分控制算法I

从上面我们知道了比例控制算法P在PID中所起到的作用,现在我们来了解,为什么要引入积分控制算法?积分控制算法在PID中起到的作用到底是什么?答案是:加入积分控制算法I,可以消除稳态误差!积分从广义的角度是什么?就是一段段曲线与坐标轴所围成的面积之和,将他们看做是一块一块的矩形小方块,积分项的作用就是不断通过矩形小方块的面积来形成一个不断的输出,直到小方块的面积为0,即让曲线停留在预期值上,知道了这一思想,我们结合一个例子来为大家进行讲解一下!

继续使用上面大水缸的例子,只不过我们添加一个条件,大水缸缸壁有破损,会一直漏水,漏水的速率我们不知道,目标是将大水缸的水一直维持在3.5 L附近,还是使用1L水桶加水。在这时候我们会发现,加入漏水条件后,单单使用上面的比例控制算法P会导致最终的稳态误差会很大。举个例子,当我们依据前一刻的误差,判断出需要加0.75 L的水,当我们在这个时刻加进去后,由于同时会发生漏水,实际上加入的水可能只有0.5L,这时候你会发现,好像怎么加都加不到我们想要的水位!

此时就会有聪明的小伙伴会说了!我们可以在大水缸上方加一个水龙头,让它流水的速度等于水缸漏水的速度,这样不就可以解决掉问题啦!确实是这样!我们在大水缸上方加一个水龙头,就相当于引入了一个积分项!让他源源不断地加水!最终,积分项的加入,稳态误差被消除掉,曲线被控制在预期值上!在这个例子中,我们可以控制水龙头流水的速度,等价于控制积分作用。不过要注意的是,在这里积分系数Ki越大,积分时间Tt就越短,响应速度就越慢,消除误差的所需要的时间就会加大,曲线会更慢达到预期值;反之,积分系数越小,积分时间Ti就越快,响应速度就越快,消除误差的所需要的时间就会减少,曲线会更快达到预期值!

图4 示意图

3、微分控制算法D

其实,在引入积分控制算法I后,基本上就可以获得一个很好的效果。但是从上面我们可以得知,P和I过大都会出现一个震荡严重的后果,会在预期值上下疯狂摇摆,并不能稳定下来,当然这并不是我们想要的结果,于是我们引入微分控制算法D,这会让曲线变得更加平缓,得到一个比较好的控制效果。微分控制算法D的主要作用是可以抑制震荡、限制超调。那么它是如何做到的呢?微分项其实就是求偏差量的斜率,也就是我们在数学中所学到的求导,它反应的是一个变化率,和积分控制算法I一样。只要偏差ei一旦有变化率,那么就会有输出,且这种变化率越大,输出也就越大,直到偏差ei没有变化率为止,这也就是为什么微分项可以抑制震荡的原因!下面我还是结合一下,大水缸的例子来为大家讲解!

上面积分控制算法I的例子条件不变,现在我们加水的工具变成了水桶、水瓢、水杯和水勺。在不使用这些工具时,我们会发现,在离期望水位还差一丢丢的时候,我们用水桶去加水会发现,会出现加不准,会出现超出期望水位,这时候我们又用水桶去舀水出来,又会少于期望水位很多,以此往复,我们会很难获得一个满意结果。我们引入这些工具,就相当于加入了微分项,这时候我们加水的方式就很灵活了!

在加水的一开始,由于距离期望值比较远,于是我们使用水桶来加水,当接近期望水位时,我们换成水瓢来加水,更近一点的时候,我们采用水杯来进行加水,最后在期望水位附近一点点的时候,我们完全可以用水勺来控制大水缸里的水位,多了就舀出一点点,少了就加一点点,这最终才是我们想要的结果!

图5 示意图


总结

强调:PID适用的是二阶以内的线性系统,所谓的线性系统必须满足齐次性和叠加性!

1、比例系数Kp :反应系统当前最基本的误差,系数大,可以加快调节,减小误差,但是过大的比例使系统稳定性下降,甚至造成系统的不稳定。

2、积分系数Ki  :反应系统的累计误差,使系统消除稳态误差,提高无差度,只要有误差,积分调节就会起作用。

3、微分系数Kd :反应系统误差的变化率,具有预见性,们可以预见偏差的变化趋势,产生超前的控制效果。因此可以改善系统的动态性能。但是微分对噪声有放大作用,会减弱系统的抗干扰性。

通过上面的PID讲解,相信大家已经了解到了,PID算法的核心思想,下面一节将着重从PID整定出发,讲解我们该如何调节一个PID系统,敬请期待!

  • 13
    点赞
  • 105
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值