PID控制:一种调节器控制规律为比例、积分、微分的控制。其中:P:比例(proportion)I:积分(integral)D:微分(derivative)
式子中Kp为比例系数,Ti为积分时间参数,Td为微分时间常数。
各参数的意义:
Kp:比例系数。一般增大比例系数,将加快系数的响应。
Ti:积分时间常数。一般地,积分控制通常与比例控制或比例和微分控制联合使用,构成PI或PID控制。增大积分时间常数有利于减小超调,减小振荡,使系统更稳定,缺点是要延长系统消除静差的时间。积分时间常数太小会降低系统的稳定性,增大系统的震荡次数。
Td:微分时间常数。一般微分控制和比例控制或比例积分控制联合使用,组成PD或PID控制。微分控制可以改善系统的动态特性。
PID常用的两种控制方式:
1.增量式PID
所谓增量,就是本次控制量和上次控制量的差值,常用于对电机的转速控制。
增量式PID是一种对控制量的增量进行PID控制的一种控制算法。
其公式为:
根据公式,编写程序:文章来源地址https://www.toymoban.com/news/detail-599514.html
/*
增量式PID
P = Kp * (err - err_pre);
I = Ki * err;
D = Kd * (err - 2 * err_pre + err_pre_pre);
pwm = P + I + D;
*/
void PID
{
err = speed_want - speed_now; // speed_now是反馈量,可以通过编码器采值等方式得到
P = Kp * (err - err_pre);
I = Ki * err;
D = Kd * (err - 2 * err_pre + err_pre_pre);
pwm_duty += (int)(P + I + D); //这里的加号就是增量式PID的体现
err_pre_pre = err_pre;
err_pre = err;
}
2. 位置式PID
与增量式不同,位置式PID不需要对控制量进行记忆,直接对误差进行计算得出期望的pwm。
位置式PID可以应用在舵机上。因为舵机本次的pwm输出值与上次pwm输出值关系不太,舵机需要的是快速转到某个角度。在实际使用中我们也常采用PD控制,即I值为0。
其公式:
文章来源:https://www.toymoban.com/news/detail-599514.html
根据公式,编写程序:
/*
位置式PID
P = Kp * err;
I = Ki * err_sum;
D = Kd * (err - err_pre_pre);
pwm = P + I + D;
*/
void PID
{
err = posi_want - posi_now;
P = Kp * err;
I = Ki * err_sum;
D = Kd * (err - err_pre_pre);
pwm_duty = (int)(P + I + D);
err_sum += err;
err_pre = err;
}
//只使用PD控制
void PID
{
err = posi_want - posi_now;
P = Kp * err;
D = Kd * (err - err_pre_pre);
pwm_duty = (int)(P + D);
err_pre = err;
}
到了这里,关于PID控制器(位置式和增量式)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!