PID调参教程(一):PID基础理论
全部教程PID调参系列 · 第 1

PID基础理论

从零基础理解PID控制原理,三个增益各自的作用、相互关系,以及为什么没有万能PID

3 次阅读更新于 2026/9/19

1为什么要懂PID?

很多新手飞穿越机,遇到飞机抖、飘、不跟手,第一反应就是"PID没调好"。但到底什么是PID?P、I、D三个数字分别管什么?调高调低会发生什么?如果这些都不清楚,调参就只能靠瞎猜——别人说"P加到45",你就加到45,根本不知道为什么。

PID调参确实是一门"艺术",但它不是玄学。理解了背后的原理,你就能根据飞机的实际飞行表现,有方向地去调整,而不是盲目试错。

阅读提示

这篇文章不讲复杂的数学公式,只用大白话和飞行中的实际感受,帮你搞懂PID到底在干什么。理解了原理,后续的调参操作才会有方向感。

2PID是什么?

2.1 一个控制循环

PID(Proportional-Integral-Derivative,比例-积分-微分)是飞控固件里的一个核心算法。它的工作流程可以简化成三步:

1. 读取:从陀螺仪(gyro)读取飞机当前实际的转动角速度
2. 计算:把"你想要的转动速度"和"实际的转动速度"做比较,算出误差
3. 输出:根据误差计算四个电机应该各自转多快,来缩小这个误差

这个过程每秒重复几千次。在Betaflight里,PID循环频率最高可以设到8KHz,也就是每秒计算8000次。

PID控制原理图
PID控制系统原理:设定值 R 与实际输出 S 比较得到误差 e,分别经过比例(P)、积分(I)、微分(D)运算后叠加,控制被控对象

2.2 几个必须搞懂的术语

在深入之前,先记住四个关键词:

术语含义通俗理解
Set-point(设定值)你想要飞机达到的转动角速度摇杆打了多少,就对应一个目标转速
Error(误差)设定值 - 陀螺仪实际测量值"想要的"和"实际的"之间差多少
Control Loop(控制循环)读取传感器→计算误差→调整电机的完整过程飞控每秒重复几千次的"工作循环"
Looptime(循环时间)完成一次控制循环所需的时间8KHz对应每次循环0.125毫秒

举个例子:你把横滚杆打到一半,设定值可能是"每秒横滚500度"。但飞机因为惯性、风等原因,实际只转到了每秒300度。误差就是200度/秒。PID控制器的任务,就是调整电机转速,让实际转速尽快追上设定值,同时不要冲过头。

2.3 哪些固件用PID?

几乎所有主流飞控固件都使用PID控制器,包括:Betaflight(最主流,花飞/竞技)、Cleanflight / Baseflight(Betaflight的前身)、KISS、iNAV(远航/固定翼)、EmuFlight、Raceflight、Ardupilot等。

所以这篇文章讲的原理,不管你用什么固件都适用。具体数值范围可能不同,但P、I、D各自的作用逻辑是一样的。

3三个增益各自管什么?

PID控制器由三个部分组成,每个部分对应一个增益(gain)。增益就是一个乘数,数字越大,这一部分对最终电机输出的影响就越大。

P
比例 / Proportional
关注当前误差有多大,误差越大推得越用力
I
积分 / Integral
关注过去累积了多少误差,消除持续外力干扰
D
微分 / Derivative
关注误差变化有多快,预测未来并提前刹车

可以把PID想象成三个工人一起推一辆车:

  • P工人:看车离目标还有多远,离得越远推得越用力
  • I工人:看车已经偏了多久,偏得越久推得越用力
  • D工人:看车冲得有多快,冲太快就帮忙刹车
PID阶跃响应对比
P、PI、PID三种控制器的阶跃响应对比:P-only过冲大,PI加入积分消除稳态误差但增加滞后,PID加入微分后过冲最小、稳定性最好

3.1 P(比例)—— 响应强度

P关注的是"当前的误差有多大"。误差越大,P项的输出就越大,飞控就越用力地去纠正。数学上,P项 = P增益 × 当前误差。

P 太高
  • 飞机变得非常"灵敏",感觉像是Rates被调高了一样
  • 翻滚/横滚结束后出现明显回弹(bounce-back)
  • 极端情况下出现高频振荡,飞机像手机震动一样抖
P 太低
  • 飞机感觉拖沓、不跟手,打杆后要等一下才有反应
  • 跟踪摇杆动作不准确
  • 设定值和实际转速之间差距大
一句话总结 P

P是"力度"。P高 = 反应猛但容易冲过头;P低 = 反应温和但拖沓。

3.2 I(积分)—— 抗干扰刚度

I关注的是"过去累积了多少误差"。它把过去一段时间的误差全部加起来(积分),误差持续的时间越长,I项的输出就越大。数学上,I项 = I增益 × 误差的累积和。

I存在的意义是什么?因为有些干扰力是持续存在的——比如风从侧面吹、电池装偏了导致重心不对、某个电机推力略小。P只能在产生误差瞬间做出反应,但如果一个持续的外力让飞机一直偏着,P每次纠正后又被外力推回去,就会一直存在一个稳态误差。I就是用来消除这种持续误差的。

I 太高
  • 出现低频振荡——比P过高导致的振荡频率慢,像飞机在"慢悠悠地晃"
  • 翻滚/横滚后也可能出现回弹,但节奏更慢
I 太低
  • 风中飞行时飞机容易飘,姿态保持能力差
  • 快速加减油门时出现点头(nose dip)
  • 重心略有偏移时表现更明显
重要细节

P增益可以抑制I引起的振荡。所以P和I之间存在一个比例关系,不是各自独立调的。一般来说,花飞风格I相对高一些(姿态保持好,动作干脆),远航/航拍风格I相对低一些(更柔和,不容易振荡)。

一句话总结 I

I是"刚度"。I高 = 抗风、姿态稳,但可能低频晃;I低 = 风中飘、油门点头。

3.3 D(微分)—— 阻尼

D关注的是"误差变化得有多快"。它计算误差的变化率(导数),如果误差正在快速缩小(说明飞机正在快速冲向目标),D项就会产生一个反向的力来"刹车",防止冲过头。数学上,D项 = D增益 × 误差的变化率。

可以把D想象成汽车的减震器。P是弹簧,把车身弹向目标位置;D是减震器,不让弹簧来回弹。

D 太高
  • D项会放大振动和噪声,对快速变化非常敏感
  • 出现颤音(trilling)——高频的、类似手机震动的嗡嗡声
  • 电机过热——频繁微调导致电流波动大、发热严重
  • 手感可能变得"僵硬"
D 太低
  • 翻滚/横滚后回弹明显——P把飞机推过了头,没有足够的D来刹车
  • Propwash(桨洗振荡)更严重——垂直下降时自身下洗气流造成扰动

为什么D过高会烧电机?

这是一个很重要的点。D项对噪声敏感,而陀螺仪采集到的信号里不可避免地带有电机振动、机架共振等噪声。D增益越高,这些噪声被放大得越多,飞控就会根据噪声不断发出微小的电机调整指令。电机在高速下频繁微调,电流波动大,发热就严重。所以D不是越高越好,必须配合滤波器使用。

一句话总结 D

D是"减震"。D高 = 不回弹、propwash小,但放大噪声、电机烫;D低 = 回弹大、propwash严重。

3.4 三个增益对比速查表

P(比例)I(积分)D(微分)Feedforward
关注什么当前误差有多大过去累积了多少误差误差变化有多快摇杆移动速度
通俗比喻推车子的力度对抗持续外力的刚度减震器预判助推
太高高频振荡、翻滚回弹低频振荡、慢回弹颤音、电机过热、放大噪声翻滚结束回弹
太低拖沓、不跟手风中飘、油门点头翻滚回弹、propwash严重响应延迟、跟踪差
主要影响响应速度姿态保持/抗干扰稳定性/抑制过冲初始响应速度
PID响应类型对比
三种阻尼响应类型:欠阻尼(Underdamped)响应快但过冲和振荡大;过阻尼(Overdamped)无振荡但响应慢;临界阻尼(Critically damped)在无过冲前提下响应最快——PID调参的目标就是接近临界阻尼

4Feedforward(前馈)—— 比P更快的响应

理解了P、I、D之后,还有一个重要概念必须知道:Feedforward(前馈)

4.1 为什么P不够快?

P有一个本质缺陷:它是反应式的。只有当误差已经产生了——也就是飞机实际转速已经落后于设定值了——P才会开始发力。这就造成了一个固有的延迟:你打杆 → 飞机开始动 → 产生误差 → P才开始纠正。这个延迟在激烈飞行中会让飞机感觉"慢半拍"。

4.2 前馈的原理

前馈不走"误差→纠正"这条路。它直接观察你移动摇杆的速度,预判飞机需要多大的初始推力,然后提前给电机输出,不等误差产生就先动起来。

简单说:
P是"看到落后了才追"
Feedforward是"看到你要动了,先帮你推一把"

4.3 前馈太高会怎样?

和P过高类似,前馈过高会导致翻滚/横滚结束时出现回弹。因为前馈在动作开始时给了太大的初始推力,飞机冲过了目标,然后又被拉回来。

4.4 前馈和PID的关系

前馈不是PID的一部分,而是一个独立的附加项。最终的电机输出 = PID计算结果 + 前馈。现代Betaflight里前馈是默认开启的,而且对飞行手感影响很大。调参时通常先把PID调好,再微调前馈。

5P、I、D 三者的相互关系

到这里你可能会觉得:三个增益各自调各自的不就行了?没那么简单。三者之间存在相互影响,调一个可能会改变另一个的表现。

5.1 P 和 D:一对矛盾体

P负责"推",D负责"刹车"。

  • P高了,需要更高的D来抑制过冲
  • D高了,会削弱P的响应速度,可能需要适当提高P来补偿
  • P/D比例比绝对值更重要

一个常见的调参思路是:先固定P,逐步提高D直到出现颤音/电机过热,然后回退一点;再逐步提高P直到出现振荡/回弹,然后回退。反复几次找到P/D的最佳平衡点。

5.2 P 和 I:比例关系

P可以抑制I引起的振荡。所以:

  • 如果I偏高导致低频振荡,提高P有时能压住
  • 但根本解决还是要降低I
  • P/I之间有一个合理比例,不同机型、不同飞行风格比例不同

5.3 D 和 滤波器:密不可分

D对噪声敏感,所以D越高,就越需要好的滤波器来滤掉陀螺仪噪声。滤波器和D是配套调的——这个我们在第三篇《滤波器与Blackbox日志分析》里会详细讲。

5.4 调参的本质

核心认知

不是找到"完美的P=40, I=50, D=25"这样的绝对数值,而是:
1. 找到P/D的最佳比例(响应 vs 稳定)
2. 找到P/I的最佳比例(灵敏度 vs 抗干扰)
3. 在不出现振荡的前提下,整体尽量拉高(增益越高,跟踪误差越小)

6为什么没有"万能PID"?

网上经常有人问"求一个5寸机通用PID"。答案是:不存在。因为每架飞机的最优PID都不一样,受以下因素影响:

6.1 硬件因素

因素如何影响PID
整机重量越重惯性越大,需要更高的增益来克服惯性,但也更容易振荡
重量分布质量集中在中心的飞机更灵敏、更跟手;质量外扩(如电池挂在尾部)转动惯量大,响应慢
推重比推力余量越大,电机调整空间越大,PID可以调得更激进
电机扭矩扭矩大的电机转速变化快,响应快,可以支持更高的增益
螺旋桨桨越重、螺距越大,电机响应越慢;桨的平衡也影响振动

6.2 状态变化

即使是同一架飞机,以下变化也会让最优PID改变:换了不同重量/品牌的电池、加装了GoPro等外设、换了电机或螺旋桨、炸机后桨/机架/电机有轻微损伤(改变了共振频率)、电池位置变化导致重心偏移。

6.3 环境因素

风大的时候需要更高的I来抗风;海拔高、空气稀薄,螺旋桨效率下降,推重比变化;湿度影响空气密度。

结论

理想的做法是:针对你自己的飞机、你常用的电池和配置、你常飞的环境,调出一套属于你自己的PID。别人的PID只能作为起点参考,不能直接照搬。

Betaflight PID调参界面
Betaflight Configurator 的 PID Tuning 界面:Roll/Pitch/Yaw 三轴的 P/I/D 增益、Feedforward、Rates、滤波器等参数都在这里调整。下一篇我们会详细讲解如何在这个界面里一步步调参

7小结

这一篇我们搞懂了PID的基本原理:

  1. PID是一个控制循环:每秒几千次地比较"想要的转速"和"实际的转速",调整电机来缩小误差
  2. P是力度:决定响应有多猛,高了振荡回弹,低了拖沓
  3. I是刚度:决定抗风和姿态保持能力,高了低频振荡,低了风中飘
  4. D是减震:决定抑制过冲和propwash的能力,高了放大噪声烧电机,低了回弹大
  5. Feedforward前馈:比P更快,通过预判摇杆动作提前给电机输出
  6. 三者相互影响:P/D平衡、P/I比例、D和滤波器配套,调参是找比例而非找绝对值
  7. 没有万能PID:每架飞机、每种配置、每个环境的最优值都不同