4、PID控制理论:从原理到实战

各位同学好,我是老张。今天咱们聊聊PID控制理论。说实话,我刚入行那会儿,觉得PID就是个黑盒子——给三个参数,电机就听话了。后来踩了不少坑,才真正理解这东西。

PID控制,说白了就是三个字:比例、积分、微分。你想想看,一个直流电机,你希望它转1000转/分钟。实际转速可能只有800。怎么让它上去?这就是PID要干的事。

核心思想:根据当前误差(目标值-实际值),计算出合适的控制量,让系统快速、稳定地达到目标。

4.1 比例控制(P)——最直接的反馈

比例控制最简单。误差大,输出就大;误差小,输出就小。公式就是:

Output = Kp × Error

Kp是比例系数。我习惯叫它"力度"。Kp越大,电机响应越快。但有个问题——稳态误差

举个例子。电机空载时,Kp=10,转速能到990转。但加上负载,可能只有950转了。为什么?因为比例控制需要误差存在才能输出。负载一重,误差就大了。

我的经验:Kp先从小往大调。调到系统开始震荡,再回调到60%-70%。这样既快又稳。

4.2 积分控制(I)——消除静差

积分控制就是用来解决稳态误差的。它把过去的误差累加起来,再乘以Ki。公式:

Output = Ki × ∫Error dt

说白了,只要误差一直存在,积分项就会一直增长。直到误差消失。我在做机器人底盘时,就靠积分项解决了重载下的速度偏差。

但积分有个毛病——积分饱和。我曾经遇到过:电机启动时,积分项疯狂累积,等转速到了目标值,积分项还很大,导致超调严重。后来加了抗饱和处理才解决。

注意:积分项不要太大。Ki过大会引起震荡。我一般先设Ki=0,调好P再慢慢加I。

4.3 微分控制(D)——提前刹车

微分控制看的是误差的变化率。误差变化越快,微分输出越大。公式:

Output = Kd × d(Error)/dt

你可以把它想象成"阻尼"。系统快要到达目标时,微分项会提前输出反向力,防止超调。

嗯,这里要注意:微分对噪声特别敏感。我做过一个项目,编码器信号有毛刺,微分项直接让电机抖得像筛子。后来加了低通滤波才搞定。

实战建议:大多数直流电机速度控制,只用PI就够了。D项一般用在位置控制或对响应要求极高的场合。

4.4 PID参数的作用总结

参数 作用 调大后的影响 调小后的影响
Kp 快速响应 响应快,可能震荡 响应慢,稳态误差大
Ki 消除静差 消除静差快,易超调 消除静差慢
Kd 抑制超调 系统更稳定,噪声敏感 超调可能增大

4.5 PID控制器的知识体系

下面这张图,是我自己画的。把PID的核心逻辑串起来了:

PID控制器知识体系 目标值 误差 e(t) 比例 P 积分 I 微分 D 求和 Σ 控制量 u(t) 反馈(实际值) u(t) = Kp·e(t) + Ki·∫e(t)dt + Kd·de(t)/dt

4.6 实战中的调参心得

调PID参数,我总结了一套"三步法":

  1. 先调P:Ki和Kd设为0。增大Kp直到系统开始震荡,然后回调到60%。
  2. 再加I:慢慢增加Ki,观察稳态误差是否消除。注意别加太多。
  3. 最后加D:如果超调严重,加一点Kd。但别指望D能解决所有问题。

避坑指南:我曾经在一个项目中,Ki设得太大,导致电机在目标值附近来回震荡。后来发现是积分项饱和了。解决办法是:限制积分项的累积范围,或者启动时先禁用积分。

另外,采样周期也很关键。我一般用1ms-10ms的采样周期。太快了CPU扛不住,太慢了控制效果差。你想想看,如果采样周期是100ms,电机都跑飞了,你才反应过来,那还控个啥?

好了,PID的理论部分就聊到这儿。记住:理论是基础,但真正的功夫在调试。多动手,多试错,慢慢就有感觉了。


公众号:蓝海资料掘金营,微信deep3321