PID到底是什么PID的本质详细分析

电子说

1.3w人已加入

描述

入住头条有1年多了,第一次发文。我是一只在无人机领域的嵌入式工程狮,看了头条上很多的对PID解说的专业文章,几乎都是从控制上切入的,这里我从不同的角度来分析PID。

先说结论:PID的本质是跟随器,用于跟踪给定信号。

很多朋友在这里又会发问了,PID不是控制器吗?在某权威百科上面的解释就是:比例(P)积分(I)微分(D)控制,简称PID控制。这是没错的,PID算法从100年前开始出现,就开始广泛的用于工业控制,PID的起源就是用于做控制器。看起来PID和控制是分不开的,实则不然。

PID

从PID的公式也可以看出,e是目标量和输出量的偏差,当误差e趋近0时,输出u将收敛到一个固定值。最终PID实现的效果就是将目标量和输出量两者的偏差归零,当目标量变化时,输出量也会跟随着目标量变化,也就是说输出量通过PID来跟随目标量。

下面我从两个例子来说明PID分别作为控制器使用和信号跟随器的使用。

PID作为控制器——水箱液位控制

这里水箱的液位我们假设没有延迟,设计一个PID控制器来控制液位,误差e为目标液位和输出量为液位之差。u为执行器输出,这里是阀门开度,大于0为注水,小于0为放水。具体代码不在此赘述。

PID

刚开始的时候,把液位设置到5米,2秒后实际液位基本到达5米。在50s的时候,把目标液位设置为2米,液位下降,2秒后稳定到2米。说明PID完成了它原始的使命——作为控制器使用。

PID作为信号跟随器——倾角传感器的设计

这里倾角传感器的设计就不涉及到任何控制了。我们的目标是测量角度,硬件选用加速度计和陀螺仪构成。为了方便,我们只测量单轴角度,这里用2轴微电子加速度计和1轴微电子陀螺仪。

陀螺仪的输出量是角速度,角速度积分就是角度,这不是用陀螺仪就能解决了吗?为什么还要加速度计呢?是因为陀螺仪输出的角速度包含有各种噪声,积分得到的角度会随着时间误差越来越大。具体的可以看下面的图像分析。

PID

上面左图是以1度/秒的角速度运动10秒,右图在角速度1度/秒的基础上加了±0.5度/秒的随机噪声,可以发现在10秒后角度值为106度(图可能看不清),这是因为角度值的获取是通过角速度积分得到的,存在累计误差。而加速度计具备良好的稳定性,测量的偏移也很小,最重要的是它测量的角度没有累计误差。

PID

θacc是加速度计测量的倾角。定义当测量角为0时,az沿着重力方向竖直向下,和重力加速度的关系是az=g*cos(θacc),ax垂直于az,和重力加速度的关系是az=g*sin(θacc)。这就是加速度计测量倾角的原理。

那既然加速度计没有累计误差,测量比陀螺仪更好,用加速度计就够了嘛,为什么一定要用陀螺仪呢?因为加速度计测量的物理量是比力,而非加速度,加速度是通过比力计算得到的。加速度计不能分辨出是地球引力还是运动外力。所以在被测量物体运动的时候将无法得到准确的倾角。这个时候陀螺仪就起作用了,因为陀螺仪对运动加速度不敏感。

陀螺仪短时间内计算的角度很准确,但时间长了会产生累计误差,加速度计长时间内的稳定弥补了陀螺仪的短缺。加速度计在运动的情况下测量有误差,陀螺仪对运动不敏感。

所以可以用两者的互补关系,来设计一个倾角传感器。那这里面怎么用到PID的性质呢?

我们把加速度求得的角度θacc作为目标量,我们把陀螺仪积分角度θgyro作为输出量。让陀螺仪角度跟随着加速度角度。设计PI跟随器,调节参数,让陀螺仪积分角度θgyro慢慢跟随加速度计算的角度θacc。下图是计算周期为50ms时,kp=0.2,ki=0.005时的效果图像。角速度噪声±0.5度/秒。加速度受到运动的影响,角度噪声为±2度。

PID

在0秒时以角速度10度/秒运动2秒,在2秒时角速度以-10度/秒运动4秒。下面是6s到10s的放大图。

PID

真实角度(蓝色)为-21度,陀螺仪积分角度(紫色)漂移了2度左右,加速度计计算角度(绿)噪声为±2度,组合角度(红,即陀螺仪积分角度跟随加速度计计算角度的结果)保持在真实角度附近,误差不到1度,说明PID完成了它的本质工作——作为信号跟随器使用。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分