复习pid

之前只知道传递函数那一套不知道怎么写代码

不能直接用全局变量保存,如果系统长时间存在误差,全局变量 old_pwm 会一直疯狂累加,PWM直接冲到最大值锁死。误差消失之后输出降不回来。你没有做积分限幅。

单kp: 纯力大,但有稳态误差
单ki: 可行,但跟踪太慢了
pi: 可能有震荡

kd对于平衡要求很高的东西很重要(加阻尼?)

D项 : 孩子们我是减速带 P项 : 孩子们猛猛踩油门 I项 : 孩子们我是累加器

"一般来说,对电机的定速控制,用PI就足够了不需要加入D项,因为电机控速这个系统一般不会来回振荡;
而对于电机倒立摆四旋翼飞行器的定位置控制,可以用PD控制器,因为定位置控制一般稳态误差很小,而且是比较容易超调、来回振荡的;
如果PD控制,还有稳态误差,可以加入一点点I项,但是不能加大了否则定位置控制不稳定"

离散形式PID:
out(k)=K_p∗error(k)+K_i∗T∑_j=0^k▒error(j)+K_d∗error(k)−error(k−1)/T

若将T并入K_i 和K_d ,则:
out(k)=K_p∗error(k)+K_i∗∑_j=0^k▒error(j)+K_d∗(error(k)−error(k−1))

其实下面的Ki并非原来的Ki,你可以将其理解为Ki'; Ki' = Ki * T

简单来说,(积分限幅+输出限幅)【位置式PID】=(输出限幅) {【增量式PID】+ 内部积分(积分限幅)}

速度环控制的是车轮速度;PID 通过调整 PWM,让实际速度接近目标速度。

增量式pid: (kpkikd == 0)外部条件没变,而控制维持之前的数据造成两者平衡,但调控作用已经没有了

kp量级范围大概在 (输出值范围/输入值范围)

pi: 适合速度环、温度、压力、流量这类慢过程/一阶惯性系统
pd: 倒立摆、平衡车、四旋翼姿态/位置控制,通常很需要 D 。因为这些系统容易来回振荡,D 相当于加阻尼。 // 对噪声极其敏感;PD 不能消除常值稳态误差。如果 PD 还有静差,可以加一点点 I,但 I 不能大

积分分离: 先令ki=0测得手转动产生的误差不高于50,因此,需要ki来补偿的值也就在50以内

讲两个好像比较极端的笑话: (位置式pd, 增量式pi)

posted @ 2026-10-11 15:06  绿帽子玩家  阅读(3)  评论(0)    收藏  举报