【转载】狂暴战车 直流电机转速闭环,增量式pid调试过程

原文地址:https://club.rt-thread.org/ask/question/12262.html        原文作者:sogw

 

 

当我们给小车设定速度时,自然是希望它能够按照预设的速度运行,但因为外界阻力,显然轮子的转速会受到影响,达不到预设值或变的不稳定。这个时候就需要闭环控制了,来使车轮的转速在受到一定的干扰时也能稳定在预设值上下。

谈到闭环控制算法,最经典的当然是PID了,rt-robot 中提供了PID的算法,其中有增量式PID和位置式PID,对于电机的控制,增量式PID更为合适。 在PID调试过程中, 观察波形是很有必要的。 可以显示波形的工具有很多, 在这里,我使用的是 ANO_TC匿名科创地面站, 它不仅可以图形化显示数据,而且还有调参接口,支持串口、UDP等通信方式。 ANO_TC 上位机有一套自己的协议,下位机(小车)需要实现这部分,才能够使用它。

在与上位机通信对接完成后,就可以开搞了。调参过程中,增量式与位置式略有不同, 增量式先加大 Ki.

所用电机不太好。同时因为IO口不够用,没能使用MCU定时器的编码器接口(硬件),只好用软件包中的提供的编码器接口(软件)。
测速稍有影响,明显的可以看到在相互干扰,所以在看以下调试过程中的波形时,不要太过苛刻啊。

【转载】狂暴战车 直流电机转速闭环,增量式pid调试过程_第1张图片

 

以下是具体的调参过程,仅供参考 (ps:两驱小车,使用同一套PID参数)

1.0: 首先设置KP=0,KD=0,KI=0.1。观察波形,可以看到稳定过慢,值太小

    

【转载】狂暴战车 直流电机转速闭环,增量式pid调试过程_第2张图片

 

1.1:保持Kp、Kd不变,设置Ki为1.0。观察波形,稳定加快。

【转载】狂暴战车 直流电机转速闭环,增量式pid调试过程_第3张图片

 

1.2:保持Kp、Kd不变, 设置Ki为2.0。观察波形,有振荡的趋势

【转载】狂暴战车 直流电机转速闭环,增量式pid调试过程_第4张图片

 

1.3:保持Kp、Kd不变,设置Ki=4.0。观察波形,振荡趋势更加明显

【转载】狂暴战车 直流电机转速闭环,增量式pid调试过程_第5张图片

 

1.4:保持Kp、Kd不变,设置Ki=8.0。观察波形,在有规律的振幅渐小的振荡

【转载】狂暴战车 直流电机转速闭环,增量式pid调试过程_第6张图片

 

1.5:保持Kp、Kd不变,设置Ki=16.0。观察波形,来回大幅度振荡,此时Ki已经过大了

【转载】狂暴战车 直流电机转速闭环,增量式pid调试过程_第7张图片

 

经过 1 过程后,暂定Ki为8.0

 

2.0:设置Kp=0.1、Ki=8.0、Kd=0.0。观察波形,几乎没有什么影响

【转载】狂暴战车 直流电机转速闭环,增量式pid调试过程_第8张图片

 

2.1:保持Ki、Kd不变,设置Kp=1.0。观察波形,变化不大

【转载】狂暴战车 直流电机转速闭环,增量式pid调试过程_第9张图片

2.2:保持Ki、Kd不变,设置Kp=2.0。观察波形,振荡有被消减

【转载】狂暴战车 直流电机转速闭环,增量式pid调试过程_第10张图片

 

2.3:保持Ki、Kd不变,设置Kp=4.0。观察波形,变化不大

【转载】狂暴战车 直流电机转速闭环,增量式pid调试过程_第11张图片

 

2.4:保持Ki、Kd不变,设置Kp=8.0。观察波形,振荡明显减弱

【转载】狂暴战车 直流电机转速闭环,增量式pid调试过程_第12张图片

 

2.5:保持Ki、Kd不变,设置Kp=16.0。观察波形,新的振荡出现,此时Kp已经过大了

 

【转载】狂暴战车 直流电机转速闭环,增量式pid调试过程_第13张图片

 

经过 2 过程后,暂定Kp为8.0

 

3.0:设置Kp=8.0、Ki=8.0、Kd=0.1。观察波形。看不出变化

 

【转载】狂暴战车 直流电机转速闭环,增量式pid调试过程_第14张图片

3.1:保持Kp、Ki不变,设置Kd=1.0。观察波形,超调幅度被消弱

【转载】狂暴战车 直流电机转速闭环,增量式pid调试过程_第15张图片

 

3.2:保持Kp、Ki不变,设置Kd=2.0。观察波形,无明显变化

【转载】狂暴战车 直流电机转速闭环,增量式pid调试过程_第16张图片

3.3:Kd=6.0。观察波形,超调幅度继续消弱

 

【转载】狂暴战车 直流电机转速闭环,增量式pid调试过程_第17张图片

 

3.4 Kd=8.0。观察波形,超调幅度无明显变化,且有要振荡的趋势

【转载】狂暴战车 直流电机转速闭环,增量式pid调试过程_第18张图片

 

 

3.5:Kd=16.0。观察波形,大幅振荡,此时Kd已经过大了

【转载】狂暴战车 直流电机转速闭环,增量式pid调试过程_第19张图片

 

经过 3 过程后,暂定Kd为8.0。至此,已经得到了一套PID参数,之后就是基于这套参数,反复调节,寻找更优的参数。

 

PID的参数并不是彼此孤立的,并不是确定了一个参数后,就一直不变,对于调一个参数时需要改动其它参数的情况是很常见的。以上只是方便展示,希望大家看过后,不要有误解。上述过程只是为了大致确定参数的数量级和敏感度

 

最后选定的参数是:Kp=6.6、Ki=6.5、Kd=7.6。效果如下

 

【转载】狂暴战车 直流电机转速闭环,增量式pid调试过程_第20张图片

 

 

 

 

你可能感兴趣的:(PID,经验分享)