1PID是一个为了让输入值与目标值相等的算法,本身是通过利用误差值和计算方法来不断更改输出值以达到相等的目的。PID是一个闭环控制,利用反馈调节的方式来达到目的。
1 比例项:就是Kp*error;如果只依赖这一项来输出PID的话会产生一个稳态误差,稳态误差是因为模型不够理想产生的,例如在以一定的PWM占空比驱动电机转动时,电机会因为各样的外界因素导致输出值与目标值不同,在只通过比例项调节的情况下,这个差值会固定在一个值就称为稳态误差,原因当目标与实际相同时error为零,这是PID输出值变为零电机停转,而电机会在外界因素下不断减速,这是PID再正向输出,这就导致会产生一个稳态误差。
2积分项:就是对于之前产生的误差值*积分系数的累加,PI就是比例项加上积分项,这两项之和便能消除稳态误差,因为首先稳态误差的产生原因是因为再比例项将误差减小为零时,输出的值为零,这时电机就会因为一些不可避免地外界因素导致输出值下降,最后稳定在一个特定的值就是稳态误差。但当误差为零时,积分项是对之前所有误差的累加和,所以此时积分项还是会向外输出值来保持输出值不为零,就可以避免稳态误差的问题;但是同时也是因为积分项是误差的累加和的问题存在也导致了当电机的输出值大幅度改变时(像是反向时),因为积分项(单独使用)的存在就会导致响应变化时会出现滞后。
3微分项:微分项是根据斜率的变化来提前预测值的变化,依此来做出改变就显示电磁阻尼,可有效的减小超调现象。原理就是当斜率大时积分项就输出一个相反的值来减小输出值。
离散形式的PID可以更加好的用于c语言代码编写,而且在实际项目中PID都是每隔一定时间才进行一次测量,所以会有一个固定的周期。首先对于积分项的离散化是通过 近似求和来达到的,如下图左,就是对固定周期的误差值来×周期的正方形面积总和相加来近似取代积分方程,同样对一点处取微分则是求对应点出的斜率,这个可以用此点与上一个点处的y值相减再除以x轴值相减,对应到PID就是用此点处误差值与上一次误差值相减再除以对应周期来近似得出微分值