位置式Pid和增量式Pid的定义及应用

PID算法是一个典型的闭环控制系统。P、I、D,比例、积分、微分。
开环:输入量对输出量没有反馈作用;
闭环:输入量对输出量有反馈作用。
  1. 位置式Pid

位置式Pid就是位置闭环控制,位置闭环控制就是根据编码器的脉冲累加,测量电机的位置信息,并与目标值进行比较得到一个控制偏差,然后我们对偏差进行比例积分、微分的控制,使偏差趋近于0的一个过程。
这是一个位置式pid的在stm32里的一个代码框架:
定义一个pid的函数,入口参数是编码器的位置测量值v和位置控制的目标值v1,返回值是一个pwm波。
我们通过位置式pid得到的返回值应该是一个具体的绝对的数值--pwm。
最后要把pwm赋值给相应的函数,例如电机驱动等。
  1. 增量式Pid

增量式pid就是速度闭环控制,速度闭环控制是根据单位时间获取的脉冲数,测量电机的速度信息,并于目标值进行比较,得到了偏差。然后同样通过对偏差的比例、积分、微分进行控制,使偏差趋近于0的一个过程。
注意这里的pwm有一个加号,这里的pwm输出的是一个 增量;与位置式pid不同的是,位置式pid通过公式得到的pwm就是一个具体的数值,比如要得到速度是30,那位置式pid得到的pwm值可能就是3000,但增量式pid不一样,因为若原本的pwm值是2700,想要速度达到30,那此时的pwm值只有300。pwm值是一个增量,这就是增量式pid。
这个是32里的一个代码框架
他的入口参数是编码器的速度测量值v和速度控制的目标值v1
  1. 增量式pid和位置式pid的区别

简单来说就是公式不同。
其实所谓的增量式Pid就是我们的控制器的输出只是控制量的增量,是 得塔pwm。
什么时候用增量式pid:当执行机构需要的控制量是增量,而不是一个绝对的数值
当我们需要绝对的数值时,就可以用位置式pid进行控制。

4 . pid算法的应用

  1. 增量式pid的应用:速度环

增量式pid就是输入一个实际值和目标值,经过pid算法后会得到一个增量,最后增量以pwm的形式作用于实际值。

例如:如果目标值>实际值,那么算出来的输出量,即增量out>0,增量反馈给实际量,实际量会增大,就会更加靠近目标值;相反,如果目标值<实际值,那么算出来的输出量,即增量out<0,增量反馈给实际量,实际量会减小,就会更加靠近目标值;
要测得当前速度值是通过编码器来实现的,众所周知,编码器是测脉冲数的。
目标值是自己设定的值,实际值是编码器反映的值。运用定时器,每隔相同时间去采集一次编码器在此段时间内积累的脉冲数,脉冲数的大小就是电机实际速度的反映。 速度由脉冲数来转化。
  1. 增量式pid(速度环)控制电机的应用:快准稳!

速度环:速度反馈给速度,来达到我们想要的效果。

舵机一般用PD控制,电机一般用PI就够了。

(1)速响应:快速到达设定的目标值,减小惯性的作用。

(2)速度控制(准、稳):带负载速度也不改变

(3)代码讲解:变量、公式、限幅

每10ms读取一次编码器的值的原因:因为pid的原理是不断减小设定值当前值的差距,所以我们需要定时器在一个很短的频率内获取当前值,然后代入pid公式内与目标值做计算,让当前值越来越接近目标值。

  1. 位置式pid的应用:位置环

位置式pid就是输入一个实际值和目标值,经过pid算法后会得到一个准确的值,以pwm的形式作为实际值,让实际值去靠近目标值的过程。

位置环顾名思义就是控制位置,控制位置首先要测得当前的位置,测得这个位置的方式,也是通过编码器来实现。众所周知,编码器是测脉冲数的。 速度由脉冲数来转化。但是我们这里不用转化,因为测的不是速度,这里的脉冲数我们直接拿来用,但是并不是直接拿来用,因为我们要测的是累计的脉冲数。
例如:转一圈是100个脉冲,那要转3圈则是300个脉冲,可是每转一圈记录的脉冲数都会清零,所以我们要累加才能达到我们指定的效果。
串级pid:用指定的速度去达到指定的圈数就叫串级pid。串级也就是串联。
例如一个速度pid算法加上一个位置pid算法,这就叫双闭环。

一般做循迹小车用速度速度环就够了。

猜你喜欢

转载自blog.csdn.net/weixin_62261692/article/details/129539317
今日推荐