认识PID
数值输入(Input)通过P(比例)、I(积分)、D(微分)根据设定值(SetPoint)控制数值输出(Output)
主要是为了实现数值快速稳定平缓的达到设定值
配置PID
PID是一个算法,可以在任何能写代码的地方引用他。
PID算法有位置式和增量式。
位置式:输出值直达设定值,适用于执行机构不带积分部件的对象,如舵机和平衡小车的直立和温控系统的控制。
增量式:输出值是近几次位置误差的增量,适用于执行机构带积分部件的对象,如步进电机等
配置PID算法最主要的是对P(比例)、I(积分)、D(微分)的三个数值进行调参
这三个参数的作用:
P(比例):数值的变化幅度,误差值(当前输入值与设定值的差)*kp
I(积分):数值的累加修正,输入值与设定值存在误差时,随时间增加对误差值进行累加后*ki,具体表现在输入值接近设定值,但达不到设定值时,慢慢让输入值达到设定值。
D(微分):该参数设定值越大,越阻碍数值变化。该值过大并不能阻碍数值变化,会严重影响输出值,过小会使输出值过冲。
注意事项
清楚自己使用的是位置式还是增量式
增量式PID需要定义一个变量将输出值累加,比如
double outputvalue;
outputvalue += Output;
if (outputValue <= 1000 && outputValue >= 0)
TIM3 ->CCR2 = outputValue;
if (outputValue > 1000) outputValue = 100;
if (outputValue < 0)outputValue = 0;
并且限制实际输出值的范围,以免导致严重错误
例程
风洞控制小球悬浮
修改P值会使小球改变的向目标移动速度,但是值太大会造成过冲,最后造成震荡,太小反应速度就太慢。
修改I值小球没有明显的变化,但是可以观察到小球震荡的幅度变小,主要作用就是修正系统误差,接近设定位置
修改D值会增大或者减小对小球的阻尼作用,减小过冲
调试时,不光需要设置PID的参数,还需要现在PID的输出范围。一开始调试的时候,输出PWM默认最大和0,导致小球反复震荡,调节PID的效果甚微。测试出PWM对小球移速的影响,分成5个阶段,快速上升,缓慢上升,悬浮,缓慢下降,快速下降。然后根据这些值设定pwm的范围,小球不在大范围震荡,细调PID后可以小范围移动悬浮在目标位置
调试时发展PWM的频率对小球的移动速度也有很大的影响,PWM频率越高,需要的占空比越大,反之。