主要是电机速度控制。
人口参数:测量值速度,期望值速度。
err:误差,last_err:上一次误差,PWM_OUT:PWM输出。
u(k) = Kp * e(k) + Ki * e(i) + Kd * (e(k) - e(k-1))
u(k - 1) = Kp * e(k - 1) + Ki * e(i) + Kd * (e(k - 1) - e(k-2))
u(k) = u(k) - u(k - 1) = Kp * [e(k) - e(k-1)] + Ki * e(k) + Kd [e(k) - 2e(k-1) + e(k-2)]
增量式离散PID公式 :
PWM_OUT += Kp * [e(k) - e(k-1)] + Ki * e(k) + Kd [e(k) - 2e(k-1) + e(k-2)]
本代码只用PI控制则PWM_OUT += Kp * [e(k) - e(k-1)] + Ki * e(k)
int PID_CONTROL(int measure, int expect)
{
int PWM_OUT, err, last_err;
err = expect - measure;
PWM_OUT += Kp*(err-last_err) + Ki*err;
last_err = err;
return PWM_OUT;
}