前言:看了看很多大佬写的PID讲解很全面也很复杂,实在是不适合很多萌新入坑,所以想按自己的理解写一篇通俗易懂的PID算法讲解
一:PID的基本定义
PID,就是“比例(proportional)、积分(integral)、微分(derivative)”,是一种很 常见的控制算法。常见的PID算法,位置式PID,增量式PID,串级PID等。
二:我们为什么要使用这个算法?
以电机转速为例子来解释,很多人应该都有这个疑惑,我控制转速,直接给电机输出一个PWM不就行了吗,假设我设置定时器的arr(自动重装载值)=1000-1,想让电机转慢一点,设置输出比较的PWM为200。我想让电机转的快一些,就给PWM输出1000,让电机全速旋转不就可以了吗?不停的进行测试,然后用编码器读取到电机当前的转速,记录下来,我就知道了电机的一个速度对应一个固定的PWM的值。大家有没有想过一个问题,电机随着使用时间的增加,电机的性能其实会发生变化,输出相同的PWM值,速度会和最开始测得的值是不一样的。我们有一辆小车(电机控制小车的速度),如果我改变小车的负重,根据生活中的常识,相同的输出电压下,负载越重,小车的速度越慢的,那么前面记录的数据都不成立了。所以说仅仅输出一个PWM值,是不能精确控制电机转动的速度保持在相同的值。这个时候PID的算法就会体现出重要的作用。现在,我用一个编码器来读取电机速度(编码器可以精确读取电机的转动速度),编码器的作用就是把电机转动的速度(模拟量)转化为一个数字量,传入到我们的微处理器。我们使用PID算法本质上是为了让编码器的值(即速度)稳定在一个值。 PID调参变成了如何让编码器的值(速度)保持在一个固定值。
三:P,I,D参数如何控制闭环?
我们的PID处理的函数,使用的C语言,函数中有两个入口参数,一个是编码器测量到当前的速度值(程序中使用position代替),另一个就是我们想达到的速度值(程序中使用target代替)。
1.P值的作用
如果

本文以通俗易懂的方式介绍了PID控制算法,包括比例(P)、积分(I)和微分(D)三个部分的作用。P用于快速响应目标值,D用于抑制振荡,I则消除静差。通过位置式和增量式PID的程序实例,阐述了如何在电机速度控制中应用PID算法,以实现精确闭环控制。同时,文章强调了PID参数调整的重要性,并承诺后续将分享调参方法。
&spm=1001.2101.3001.5002&articleId=123172250&d=1&t=3&u=02032cf1734e426b9f904564f07fff8b)
2万+

被折叠的 条评论
为什么被折叠?



