【TI-RSLK试用报告】+ 基于RSLK机器人套件的电机速度PI增量控制的研究

[复制链接]

2

主题

3

帖子

118

积分

二氧化硅

Rank: 2

积分
118
查看: 6002回复: 2 发表于 2019-3-31 21:13:06   只看该作者
本帖最后由 电赛小编 于 2019-4-11 17:35 编辑

项目介绍:
一、    前言
从电赛论坛开始TI-RSLK套件使用活动开始我就密切关注这个活动,本来这个活动是寒假试用活动,无奈活动开始的时间不巧在我们学校放假后,本以为没有机会参加活动了,没想到TI放宽了申请的条件,在此感谢相关工作人员的辛勤付出,能让我也能参加到此次试用的活动。我和TI的缘分开始于2018年暑假的TI杯,从开始准备TI杯到比赛TI为我们提供了很多支持,特别是TI还和很多高校合作提出高校计划,TI在大学生扶持方面做出的努力是有目共睹的。在此再次感谢TI为中国大学生电子设计事业做出的贡献。
自己以前接触过TI的MSP430系列单片机,MSP430以卓越的低功耗表现在业界闻名,我使用过的第一款MSP430是MSP4305529 LaunchPad,当时被这块板子的做工惊艳到了,无论是PCB的材质,元件的选取以及布局都十分精致。这次的TI—RSLK机器人套件也没有让我失望,做工依旧是大厂水准。 car.jpg car2.jpg
二、    项目原因
本项目是基于RSLK机器人套件的电机速度PI增量控制的研究,选择这个项目的原因很多,主要原因是因为我正好这学期参加第六届工程训练大赛,做的是智能物料搬运机器人,正好自己有过电机转速闭环控制的经验。原本打算在本项目里加入一些额外的模块,比如ToF激光测距传感器,Openmv等等。但是不巧的是开学这一个月里,有2019年电赛的集训和工程训练大赛的临时修改比赛规则增加比赛难度,让我所有精力都投入到了这两个比赛中去。所以因为精力有限只能选一个这样难度来说算中级的项目。

三、    理论基础
电机的闭环控制算法有很多,PID则是众多算法里面运用最广的算法。PID控制算法出现于上世纪30年代,所谓PID控制算法就是对偏差进行比例,积分和微分控制。PID由三个部分组成,分别是比例(P),积分(I),微分(D)。在实际的工程中,P是必须的,所以衍生出PID,PI,PD控制器,本项目就是基于PI的增量控制器。
pid.jpg

上图是PID的控制流程,通过误差信号控制被控量,而控制器本身就是比例、积分、微分三个环节的加和。我们不妨假设在t时刻有:
1.     输入量rin(t)
2.     输出量rout(t)
3.     偏差量err(t)=rin(t)- rout(t)
因此PID对偏差的控制规律为:
公式.jpg

得到上面的公式还不行,因为我们实际采样的点是离散的,而上面的公式是连续的。我们该
把上面的公式离散化。
假设采样间隔为 T,则在第 K个T 时刻:
1.  偏差err(K)=rin(K)-rout(K);
2.  积分环节用加和的形式表示,即err(K)+err(K+1)+……;
3.  微分环节用斜率的形式表示,即[err(K)-err(K-1)]/T;
所以PID公式可以离散为:
离散化.jpg
进一步可以简化为:
离散2.jpg
这就是离散化 PID 的增量式表示方式,由公式可以看出,增量式的表达结果和最
近三次的偏差有关,这样就大大提高了系统的稳定性。需要注意的是最终的输出
结果应该为:u(k)+ 增量值。



四、    理论实践
从上面的理论基础我们知道直流电机速度控制流程如下:
ttt.jpg

要想实现电机调速就必须使用PWM来控制电机,而速度反馈可以使用定时器的输入捕获模式来计数从而测算出电机的实际转速,PI控制算法则在定时器的定时中断服务函数中调用,来对PWM的占空比进行控制从而改变电机转速。

1.  电机的转速控制
   电机的转速控制通过改变PWM的占空比来实现,而RSLK的电机驱动芯片是DRV8838,如下图所示:
电路1.jpg
   从图上可以看出一片DRV8838控制一个电机的转动,RSLK套件有两个电机,电机驱动板上也有两片DRV8838:
   配电板.jpg
  电机的转动控制就通过控制两块驱动芯片来控制电机的转速以及转向,通过官方资料可以得到实际控制规律如下:
规律.jpg

使用TIMER_A0产生PWM波, PWM的初始化的程序如下:
pwm.jpg
要改变PWM的占空比可以通过下面的程序:

占空比.jpg
2.  电机的测速
RSLk机器人套件上面的两个电机都装有32线的霍尔编码器,查找资料后发现好像MSP432的定时器没有编码器模式,所以我只能用输入捕获来计数。在转接板上实际连接关系如下:
连接.jpg
       查找资料后发现,MSP432的定时器有输入捕获模式:
输入捕获.jpg
  在定时器中断服务函数里面测量周期:
中断.jpg
3.  PI控制器算法
由前面的理论知识可以得到离散化的PI增量控制器为:

将上述公式用C语言描述出上面的PI增量控制器:
pid算法.jpg
PI控制算法在定时器中周期性的调用,所以将控制算法写到定时器的中断服务函数中:
中断pid.jpg

4.  PI参数调节方法
PID算法其实是很简单的,但是如何找到合适的PID参数却不是那么容易,比起直接看电机的转速来调节,把转速的波形打出来更方便调试。这里我是用的一款串口上位机——ANO_TC匿名上位机V65。使用上位机就得按照上位机定义的通信格式来发送数据,所以我封装了一个函数,只需要实现函数内的串口发送就可以调用此函数来发送数据给上位机:
ano.jpg
     调PID参数不能盲目的调,应该先调P,即让I为0关闭积分的作用。先调P,让输出开始振荡,此时加入积分控制来抑制振荡。如下图,此时P = 10 ,I = 10,绿色为目标量,紫色为实际输出。当目标阶跃变化时,输出的响应没有振荡也没有超调。

调试结果1.jpg
调试结果2.jpg

73

主题

469

帖子

1007

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1007
发表于 2019-7-5 14:10:40   只看该作者

不错~· 学习啦,谢谢

0

主题

1

帖子

3

积分

一粒轻沙

Rank: 1

积分
3
发表于 2020-10-30 14:39:14   只看该作者
有完整的程序吗
快速回复 返回顶部 返回列表