针对stm32中可以如下实现:
1 p->IncrementVal = (p->Kp * (p->err - p->err_next)) 2 + (p->Ki * p->err) 3 + (p->Kd * (p->err - 2 * p->err_next + p->err_last)); 4 5 p->err_last = p->err_next; //更新err_26 p->err_next = p->err; //更新err_1
这样就得到了误差相对于的增量,其中,kd=0;
1、kp相当于位置式pid的Kd微分量
2、ki当于位置式pid的Kp比例量
然后可以:
1 pwm_info.duty_cycle += p->IncrementVal;
更新pwm的占空比,用于更新加热丝的功率。
之后用stm的pwm占空比函数更新即可达到pid的控制。