主页 > 其他  > 

PID控制学习

PID控制学习
前言

本篇文章属于PID控制算法的学习笔记,来源于B站教学视频。下面是这位up主的视频链接。本文为个人学习笔记,只能做参考,细节方面建议观看视频,肯定受益匪浅。

PID入门教程-电机控制 倒立摆 持续更新中_哔哩哔哩_bilibili

一、PID简介 

二、PID公式与系统框图

三、详解PID中的各项 1.比例项

纯比例项控制时,系统会出现稳态误差

稳态误差介绍如下

例如电机控速的例子

当电机的误差变为0时,输出值也为0,电机驱动力也为0,电机就会因为摩檫力减速,减速后,误差加大,输出值变大,电机驱动力也变大,最终驱动力和摩擦力会达到一个平衡,此时的平衡速度是小于目标速度的。

2.积分项

误差累积来进行控制 

3.微分项

 作用是阻碍系统产生的变化,跟楞次定律有点像,加了微分项的控制与阻尼振动图像相似,因此也可以理解为微分项是给系统增加阻尼的,防止系统超调,超调的意思是假如实际值是从小于目标值的方向往目标值变,但实际值会因为惯性变到比目标值大,这时又要把实际值拉回来,拉回来又会小于目标值,最终会导致误差越来越大

四、离散PID 和程序实现思路 1.离散PID   位置式PID与增量式PID公式

比较

 

五、C语言程序实现 1.确定一个调控周期T,每隔时间T,程序执行一次调控(使用定时器来确定这个时间) 2.代入公式 float Target,Autual,Out; float Kp = ,Ki = ,Kd = ; float Error0,Error1,ErrorInt; int main(void) { Timer_Init(); while (1) { } } void TIM2_IRQHandler(void) { if(TIM_GetITstatus(TIM2,TIM_IT_Update)= SET) { Actual=读取传感器(); /*获取本次误差和上次误差*/ Error1 = Error0; Error0 =Target -Actual; /*误差积分(累加)*/ ErrorInt += Error0; /*PID计算*/ Out =Kp*Error0 +Ki *ErrorInt + Kd *(Error0 - Error1); /*输出限幅*/ if(out >上限){out=上限;} if(out<下限){out=下限;) /*执行控制*/ 输出至被控对象(out); TIM_ClearITPendingBit(TIM2,TIM IT_Update); } }
标签:

PID控制学习由讯客互联其他栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“PID控制学习