基础PID理论回顾:从物理意义到工程陷阱

各位同学,欢迎来到飞控参数调整的第一课。

说实话,我见过太多人一上来就调PID,结果越调越乱。为什么?因为不理解PID到底在干什么。今天我们就花点时间,把基础打牢。

一、P-I-D三项的物理意义

PID说白了就是三个字:现在、过去、未来

  • P(比例)—— 看现在
    当前偏差有多大,我就给多大力量。偏差大,输出大;偏差小,输出小。
    我个人的习惯是:先调P,让系统能响应,但不一定稳。
  • I(积分)—— 看过去
    过去累积的误差,我用积分来消除。比如悬停时总有静差,I项就是干这个的。
    ⚠️ 注意:I太强,系统会晃;I太弱,永远到不了目标。
  • D(微分)—— 看未来
    根据误差变化趋势,提前刹车或加速。说白了就是预测。
    💡 我在项目中遇到过:D项加多了,飞控像抽风一样高频抖动。后面会细讲。

二、PPM与角度/角速度控制的关系

这里有个关键点:PPM(脉冲位置调制) 是遥控器和飞控之间的语言。

你想想看,遥控器摇杆打到底,输出的是1000~2000μs的PPM信号。飞控收到后,会把它映射成角度期望值(比如30°)或角速度期望值(比如200°/s)。

我一般这样理解:

  • 外环(角度环):PPM → 目标角度 → P控制器输出目标角速度
  • 内环(角速度环):目标角速度 → PID控制器 → 电机输出

说白了,外环是“我要去哪”,内环是“怎么去”。

📌 实际项目中,我建议先调内环(角速度环),再调外环(角度环)。内环稳了,外环才有意义。

三、积分饱和的危害与防止

积分饱和,我愿称之为“飞控界的隐形杀手”。

为什么会发生?
比如你让飞机快速爬升,但电机已经满油门了。此时积分项还在累加误差,等你要下降时,积分项还保留着巨大的正值,导致飞机迟迟下不来。

我曾经遇到过:一架四轴在降落时突然上窜,就是因为积分饱和。当时差点炸机。

防止方法:

  1. 积分限幅:给I项设置最大值,别让它无限累加。
  2. 积分冻结:当输出饱和时,停止积分累加。
  3. 条件积分:只在误差较小时启用积分。
// 伪代码示例:积分限幅
if (integral > INTEGRAL_MAX) {
    integral = INTEGRAL_MAX;
} else if (integral < -INTEGRAL_MAX) {
    integral = -INTEGRAL_MAX;
}

四、微分项对噪声的敏感性

D项很敏感,像猫一样。

你想想看,微分是误差的变化率。如果传感器有噪声,哪怕很小的噪声,经过微分放大后,输出会剧烈抖动。

我见过有人把D项加到10,结果飞机像筛糠一样。后来一查,IMU数据本身就有高频噪声。

解决方案:

  • 低通滤波:对微分项做滤波,去掉高频噪声。
  • 只在角速度环用D:角度环一般不用D,因为角度变化慢,微分意义不大。
  • D项限幅:别让D项输出太大。
⚠️ 注意:D项不是越大越好。我建议从0开始,每次加0.1,观察响应。别贪心。

知识体系总览

下面这张图,是我自己总结的PID调参逻辑。你看一眼,后面每节课都会用到。

PID调参核心逻辑 期望角度 外环P 目标角速度 内环PID 实际角速度反馈 实际角度反馈 先调内环(角速度环),再调外环(角度环) P决定响应速度,I消除静差,D抑制超调

小结

这一课我们讲了:

  • P是现在,I是过去,D是未来
  • PPM到角度/角速度的映射关系
  • 积分饱和的坑和填坑方法
  • 微分项对噪声的敏感性和滤波技巧

嗯,基础打牢了,后面调参才不会慌。下一课我们开始实战——怎么用软件工具观察PID响应。

专注资料整理