复习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)

浙公网安备 33010602011771号