【平衡车】PID控制原理到底如何理解?建议收藏!
文章目录
前言
如何学习PID控制,最开始需要先抛开各种软硬件,单纯从数学上进行分析,弄懂底层的控制原理是什么?理解清楚后,无非把数学公式变成代码。剩下就是不断的实践,来确定三个参数,使控制结果更加准确。
开始介绍之前需要一个例子,我们就以电机控制为例,我们设置所要到达的速度为100。假如我们没有使用PID控制算法,就单纯电机通断一条线,刚开始的时候速度没有达到100,那电机肯定是通,速度就往100冲,当速到超过100时,电机断,速度掉到100以下,然后电机再通,如此反复,使得速度一直在100左右波动。缺点:控制不稳定,没法维持在100;电机一直处于通断状态,十分不稳定。这就需要算法来进行调节,而用到的就是PID算法。
PID算法
将偏差的比例(Proportion)、积分(Integral)和微分(Differential)通过线性组合构成控制量,用这一控制量对被控对象进行控制,这样的控制器称 PID 控制器。
在理解之前我们要搞清楚一个点就是:我们通过PID算法对传感器采集回来的数据进行运算,最后会输出一个值,而这个值就是用来控制PWM的占空比,从来控制电机的转速,这样就可以使控制达到准确、平滑的特点。
PID算法的形成
P算法,即比例控制算法:
分析:
1、从开机以来,传感器会采集到一系列的数据,存放到存储器中构成一串序列X1,X2,X3,X4…X(K-2),X(K-1),X(K),在例子当中也就电机编码器会采集到一些列的电机速度;
2、每次传感器采集到一个Xk都会与我们最开始的设定值相减即Ek=Sv-Xk;
当Ek>0时,表示控制未达标;当Ek=0时,表示正好达标;当Ek<0时,表示已经超标。
同时我们引入一个系数Kp;
公式表示为:Pout=Kp*Ek+OUT0(为什么要有Kp呢,这样我们才能通过调整系数来改变P算法在PID三个算法中的比重;为什么要有OUT0呢,这样当EK=0时,我们还能输出一定量的占空比来维持电机转动,而不至于让电机停止转动)
这个P算法怎么理解呢?
P算法的特点就是它只考虑当前的状态,通过与设定值相减的值来判断我们要给PWM多少占空比。当Ek>0时表示当前控制位达标,那这时我们就要加大PWM的占空比。当Ek<0时,表示已经超标,这是我们就要减小占空比。当EK=0时表示正好达标,此时P算法的缺点也就出来了,当我们达标了,我们算法要干嘛?不知道!所以此时整个系统是失控的。也就是P算法的缺点就在于它只能在有误差的情况下运行,当没有误差的情况它就失控了!
为什么叫比例算法:因为它前面有一个比例系数,我们可以通过调节比例系数,来控制输出的大小,因此类似与比例运算。
I算法,即积分控制算法
我们把运算得到的一系列EK数据存放到存储器中构成一串序列E1,E2,E3,E4...E(K-2),E(K-1),E(K),我们把它成为历史偏差序列. 令SK=E1+E2+E3+E4+...+E(K-2)+E(K-1)+E(K),当SK>0,表示过去这段时间的大部分时间都不达标;当SK=0,表示过去大部分时间达标;当SK<0,表示过去这段时间大多时间超标; 引入公式:Iout=Kp*Sk+OUT0;(Kp和OUT0存在原因和P算法公式一样) 如何理解I算法? I算法的特点就是它只考虑历史的状态,通过SK值来判断我们要给PWM多少占空比。当SK>0时表示过去这段时间的大部分时间都不达标,那这时我们就要加大PWM的占空比。当SK<0时,表示已经超标,这是我们就要减小占空比。当SK=0时表示正好达标。那么I算法有什么缺点吗?有,它太依赖历史数据了,很久以前的数据也会干扰现在的控制,这是I算法最大的缺点。 举个例子:比如我们刚开机,在第一次达到设置值之前,我们可以知道EK都是大于0的,SK都是大于0的,那么在传感器传回来的值是设置时,此时根据I算法判断SK>0,所以要加大PWM输出,可是我们现在已经是达到稳定值了,所以也就是会产生过冲现象。这种现象通常是怎么解决,就是利用积分分离,也就是另I算法权重为0.为什么叫积分算法?因为我们进行的是对偏差求和的运算,类似积分运算。
D算法,即微分控制算法
引入DK=EK-E(K-1),因为EK与E(K-1)之间的时间间隔相同,当DK>0时,表示偏差有增大的趋势,当DK<0时,表示偏差有减小的趋势,当DK=0,表示偏差无增大或减小的趋势。
引入公式:Dout0=KP*DK+OUT0;
如何理解D算法?
D算法的特点就是它只考虑偏差EK有没有变大趋势,偏差存不存在不是D算法管的内容,举个例子,比如平衡车受到碰撞,突然要倒了,那种情况D算法就起了重要作用。那么D算法有什么缺点吗?有,它的控制是在误差一直存在的情况下进行,所以它不能单独对系统进行控制。
为什么叫微分算法?因为我们求的是变化率,类似进行微分运算。
PID总体的数学模型:
基于单片机的PID控制算法:
1、SK的处理:
这个公式怎么理解?
(1)、T:计算周期(采样周期)这个很重要,因为我们的程序会对传感器采集回来的数据进行PID算法运算,运算完会送到PWM上面。但是如果我们上一次的PWM还没调控完,算法就已经送来另一个控制PWM占空比的数,这时不就矛盾了吗。所以我们要保证每次传感器采集到的数据都能加到PWM上面真正起作用,就要控制T的大小。
(2)、Ti:积分时间常数,通常可以通过设置按钮进行调控。Ti值越大,SK越小,相应该算法所占权重就小。
2、DK的处理:
这个公式怎么理解?
(1)、T:计算周期,与上面一样;
(2)、Td:微分常数,同样的是通过控制其大小,来控制该算法所占的权重。
单片机中的PID算法的表达式:
1、位置式PID算法:
这种算法的缺点是:由于全量输出,所以每次输出均与过去状态有关,计算时要对EK进行累加,工作量大。并 且,因为计算机输出的对应的是执行机构的实际位置,如果计算机出现故障,输出的将大幅度变化,会引起执行机构的大幅度变化,有可能因此造成严重的生产事故,这在实际生产际中是不允许的。
2、增量式PID算法:(计算出的是控制量的增加值)
特点:如果计算机控制系统采用恒定的采样周期 T ,一旦确定 A、 B、 C,只要使用前后三次测量的偏差值,就可以求出控制量。增量式 PID 控制算法与位置式 PID 算法相比,计算量小的多,因此在实际中得到广泛的应用。
而位置式 PID 控制算法也可以通过增量式控制算法推出递推计算公式:
u = u + △u
上式就是目前在计算机控制中广泛应用的数字递推 PID 控制算法。
采样周期
采样周期的选择
香农(Shannon) 采样定律 :为不失真地复现信号的变化,采样频率至少应大于或等于连续信号最高频率分量的二倍。根据采样定律可以确定采样周期的上限值。实际采样周期的选择还要受到多方面因素的影响,不同的系统采样周期应根据具体情况来选择。
采样周期的选择,通常按照过程特性与干扰大小适当来选取采样周期:即对于响应快、(如流量、压力) 波动 大、易受干扰的过程,应选取较短的采样周期;反之,当过程响应慢(如温度、 成份)、滞后大时,可选取较长的采样周期。 采样周期的选取应与 PID 参数的整定进行综合考虑, 采样周期应远小于过程的扰动信号的周期,在执行器的响应速度比较慢时,过小的采样周期将失去意义,因此可适当选大一点;在计算机运算速度允许的条件下,采样周期短, 则控制品质好;当过程的纯滞后时间较长时, 一般选取采样周期为纯滞后时间的 1/4~1/8。
结语
大家可以收藏!!!顺便帮我点个赞,给我点鼓励!