3. PID控制器原理:比例、积分、微分的作用与调参逻辑
各位同学,今天我们来聊聊飞控里最核心、也最绕不开的一个话题——PID控制器。
说实话,我入行那会儿,第一次调PID也是满头问号。明明公式就三个字母,怎么调起来这么玄学?后来踩的坑多了,才慢慢摸清楚每个环节的脾气。今天我就把这几年的心得掰开揉碎,跟你好好讲讲。
3.1 先搞明白:PID到底在干什么?
说白了,PID就是一个“纠错器”。
你想想看,无人机想悬停在一个高度,但风一吹它就往上飘了。这时候飞控需要做一件事:测量当前高度和目标高度的差值(误差),然后根据这个误差,算出要给电机多大的修正力。
PID就是干这个的。它把误差拆成三份来看:
- 比例(P):看误差现在有多大
- 积分(I):看误差积累了多久
- 微分(D):看误差变化有多快
这三份加起来,就是最终的输出。公式长这样:
输出 = Kp × 误差 + Ki × ∫误差 dt + Kd × d(误差)/dt
嗯,别被公式吓到。我们一个一个拆开讲。
3.2 比例(P):最直接的“大力出奇迹”
比例项最简单:误差越大,修正力越大。
比如飞机偏了10度,P项就输出一个跟10度成正比的力把它拉回来。偏了5度,力就小一半。
我在项目中遇到过一架四轴,P值调得太小,飞机就像喝醉了酒,晃晃悠悠半天回不到水平。后来我把P慢慢往上加,飞机才变得“硬朗”起来。
关键点:P值越大,响应越快,但过大会引起震荡。P值太小,飞机反应迟钝,像“棉花糖”。
但P有个硬伤——它永远无法消除稳态误差。什么意思?
假设飞机受侧风影响,P项输出一个力去对抗。但风一直吹,P项只能做到“差不多平衡”,永远差那么一点点。这就是稳态误差。
3.3 积分(I):专治“老顽固”误差
积分项就是来解决这个问题的。
它把误差随时间累积起来。只要误差还在,积分值就会一直增长,输出的修正力也会越来越大,直到把误差彻底吃掉。
我个人习惯是:先调好P,再加一点点I。I值太大,飞机就会“过冲”,然后来回震荡,甚至出现“积分饱和”——就是积分值攒得太大,松开遥控后飞机还在猛拉。
避坑指南:我曾经在调试一款六轴时,I值设得过高,结果飞机悬停时自己开始“点头”,越点越厉害。后来发现是积分项在低频震荡。解决办法是加一个积分限幅,或者降低I值。
积分项还有一个特点:它反应慢。因为需要时间累积,所以对快速变化的干扰(比如阵风)基本没用。这时候就要靠D了。
3.4 微分(D):预判你的预判
微分项看的是误差的变化率。说白了,就是“误差正在变大的趋势”。
举个例子:飞机突然被风吹歪,误差开始快速增大。D项检测到这个“快速增大”的趋势,会提前输出一个反向力,把飞机的“势头”压住。
你想想看,这就像开车时看到前车刹车灯亮了,你还没撞上去就先松油门——这就是D的作用。
但D项有个大毛病:对噪声极其敏感。
为什么?因为微分就是求导数,而噪声会让导数变得乱七八糟。我见过有人把D值调大后,电机发出“滋滋”的抖动声,那就是D项在放大传感器的高频噪声。
我的经验:D值一般只加一点点,起到“阻尼”作用就够了。加多了反而坏事。如果你发现飞机高频抖动,先检查是不是D太大了。
3.5 调参逻辑:先P,再I,最后D
调参的顺序,我建议你按这个来:
- 先调P:把I和D设为0,慢慢增加P,直到飞机出现轻微震荡,然后退回一点。
- 再加I:在P的基础上,一点点加I,直到稳态误差消失。注意观察有没有“过冲”。
- 最后加D:如果飞机有震荡趋势,加一点D来抑制。D不要贪多。
下面这张图是我自己整理的调参逻辑流程图,你可以照着走:
3.6 三个参数的“性格”对比
为了方便你记忆,我整理了一个表格:
| 参数 | 作用 | 调大后的效果 | 调小后的效果 | 常见问题 |
|---|---|---|---|---|
| P | 响应当前误差 | 响应变快,可能震荡 | 响应迟钝,有稳态误差 | P太大→高频震荡 |
| I | 消除累积误差 | 稳态误差消失,可能过冲 | 稳态误差残留 | I太大→低频震荡、积分饱和 |
| D | 抑制变化趋势 | 阻尼增强,更稳定 | 容易过冲、震荡 | D太大→高频噪声放大 |
3.7 一个实战小例子
我记得有一次调一架穿越机,P值设到0.8时飞机开始轻微抖动。我退到0.6,然后加I到0.02,稳态误差基本没了。但飞机在急转弯时有点“点头”,我又加了0.01的D,问题解决。
你看,整个过程就是:P给基础,I补漏洞,D压震荡。
最后送你一句话:调PID没有万能公式,但有一条铁律——每次只改一个参数,改完观察、记录、再改。别心急,飞控调参是个手艺活。