第2章 PID控制基础:比例、积分、微分的物理意义

聊PID之前,我先问个问题:你调参的时候,有没有觉得P、I、D三个参数像三个性格迥异的队友?

比例项像个急性子,看到偏差就猛推;积分项像个记仇的,把过去的偏差都攒着;微分项像个预言家,总想提前刹车。我做了这么多年飞控,越来越觉得——理解这三个家伙的脾气,比背公式重要得多。

2.1 比例(P)——最直接的反馈

比例控制,说白了就是「偏差越大,输出越大」。你想想看,四旋翼往右偏了10度,P项就输出一个向左的力矩,偏得越多,力矩越大。

核心公式: uP = Kp × e(t)

其中 e(t) 是当前偏差,Kp 是比例增益。

我在项目中遇到过一个问题:光用P控制,飞机永远回不到精确的水平位置。为什么?因为当偏差很小时,P项输出的力矩也很小,小到不足以克服机体的摩擦力或重心偏移。这就叫「稳态误差」。

调参经验: 先调P,让系统能响应。P太小,反应迟钝;P太大,会震荡甚至发散。我一般从0.1开始试,逐步往上加,直到出现轻微震荡再回调20%左右。

2.2 积分(I)——消除静差的老黄牛

积分项的作用,就是解决P项搞不定的稳态误差。它会累积过去的偏差,哪怕偏差只有0.1度,时间长了积分值也会变大,最终输出足够的力矩把飞机拉回来。

核心公式: uI = Ki × ∫e(t) dt

积分项对时间累积偏差,Ki 是积分增益。

嗯,这里要注意——积分是把双刃剑。我曾经在调试一款六旋翼时,I给得太大,结果飞机悬停时开始低频晃动,像喝醉了酒。这就是「积分饱和」的典型表现。

避坑指南: 我曾经吃过一次大亏——积分限幅没设好,起飞时积分项疯狂累积,等飞机离地直接翻了个跟头。记住:一定要给积分项加限幅,一般限制在输出总量的30%~50%。

2.3 微分(D)——提前预判的刹车片

微分项看的是偏差的变化率。如果飞机正在快速靠近目标,D项会提前输出反向力矩来「刹车」,防止超调。

核心公式: uD = Kd × de(t)/dt

微分项对偏差的变化率敏感,Kd 是微分增益。

你想想看,没有D项会怎样?飞机会像弹簧一样来回震荡,每次过冲再拉回,再过冲。D项就是那个「预判家」,让系统平滑地收敛。

实战技巧: 微分对噪声极其敏感。我习惯在D项前面加一个低通滤波器,截止频率设在20~30Hz。否则,传感器的一点点抖动都会被D放大成剧烈的电机抖动。

2.4 PID控制器的数学模型

把三个家伙合在一起,就是完整的PID控制器:

u(t) = Kp × e(t) + Ki × ∫e(t) dt + Kd × de(t)/dt

在飞控里,我们用的是离散形式(毕竟单片机只能处理离散数据):

u(k) = Kp × e(k) + Ki × Σe(i)×Δt + Kd × (e(k) - e(k-1))/Δt

其中 Δt 是控制周期,一般飞控用 1ms 或 2ms。我建议你把这个公式刻在脑子里——调参的时候,脑子里要能浮现出每个参数在公式里的位置和作用。

2.5 串级PID——姿态环的典型结构

单级PID在姿态控制里基本不够用。为什么?因为姿态角的变化率(角速度)和姿态角本身是两回事。你想想看,如果只用角度环,当飞机受到外力扰动时,角度环要等到角度偏差出现才会响应,太慢了。

串级PID的思路是:内环控制角速度,外环控制角度。内环跑得快(频率高),外环跑得慢(频率低)。

典型结构:

  • 外环(角度环): 输入是目标角度,输出是目标角速度。一般只用P,偶尔加少量I。
  • 内环(角速度环): 输入是目标角速度,输出是电机控制量。P、I、D都用,响应要快。

我在项目中遇到过最典型的案例:一架穿越机,外环P给到4.5,内环P给到0.08,内环I给到0.02,内环D给到0.003。飞起来手感非常跟手,几乎没有延迟感。

重要原则: 内环频率至少是外环的5~10倍。我一般设外环100Hz,内环500Hz。如果频率比不对,内环响应跟不上外环指令,飞机会出现高频抖动。

串级PID姿态控制结构图 角度环 (外环) P(常用) + I(可选) 角速度环 (内环) P + I + D 电机混控 输出PWM 目标角度 实际角度 实际角速度 关键参数 外环频率: 100Hz 内环频率: 500Hz 内环P: 0.05~0.15 外环P: 3.0~6.0

2.6 三个参数的调参顺序

我个人的调参习惯,供你参考:

步骤 操作 现象判断 我的经验值
1 I和D归零,只调P 飞机开始轻微震荡时,P就差不多了 穿越机:0.06~0.12
2 加D抑制震荡 震荡消失,手感变「硬」 D = P × 0.03~0.05
3 加I消除静差 悬停更稳,但不要出现低频晃动 I = P × 0.2~0.4
4 微调三个参数 快速打舵,看回中是否干脆 根据手感微调±10%

一个实用技巧: 调内环的时候,用手抓住飞机,快速晃动机身,感受电机是否有力矩输出对抗你的手。如果对抗感很强且不抖动,内环就差不多了。

记住,PID调参没有万能公式。每架飞机的重量、重心、桨叶尺寸都不一样。我见过有人把一套参数从一架飞机直接复制到另一架,结果炸机了。嗯,参数是死的,飞机是活的,多试多感受才是正道。