基于STM32的机械臂运动控制分析设计说明.docx
《基于STM32的机械臂运动控制分析设计说明.docx》由会员分享,可在线阅读,更多相关《基于STM32的机械臂运动控制分析设计说明.docx(17页珍藏版)》请在冰豆网上搜索。
基于STM32的机械臂运动控制分析设计说明
沐勺,密衣厚
机器人测控技术
大作业课程设计
课程设计名称:
基于STM32的机械臂运动控制分析设计
课程设计时间:
2016-4-28〜2016-5-16
指导教师意见:
成绩:
签名:
年月日
摘要IV
第一章运动模型建立V
1.1引言V
1.2机器人运动学模型的建立V
1.2.1运动学正解VII
第二章机械臂控制系统的总体方案设计VIII
2.1机械臂的机械结构设计VIII
2.1.1臂部结构设计原则VIII
2.1.2机械臂自由度的确定IX
2.2机械臂关节控制的总体方案X
2.2.1机械臂控制器类型的确定X
2.2.2机械臂控制系统结构XI
2.2.3关节控制系统的控制策略XI
第三章机械臂控制系统硬件设计XII
3.1机械臂控制系统概述XII
3.2微处理器选型XIII
3.3主控制模块设计XIII
3.3.1电源电路XIV
3.3.2复位电路XIV
3.3.3时钟电路XIV
3.3.4JTAG调试电路XV
3.4驱动模块设计XV
3.5电源模块设计XVII
第四章机械臂控制系统软件设计XVIII
4.1初始化模块设计XVIII
4.1.1系统时钟控制XVIII
4.1.2SysTick定时器XX
4.1.3TIM定时器XXI
4.1.4通用输入输出接口GPIOXXII
4.1.5超声波传感器模块XXII
总结XXIV
参考文献XXV
附录AXXVI
附录BXXVII
设计要求:
设计一个两连杆机械臂,具体参数自行设计,建立其运动学模型,然后在此基础上完成该机械臂两点间的路径规划,并给出仿真结果。
设计完成上述目标的控制系统,控制器可以自行选择(单片机,ARM,DSP,PLC等),其他硬件部分根据系统所需要完成的功能自行选择,基本要求要体现系统的输入,输出信号和人机交互界面,画出整个系统的硬件结构(电路模块,驱动模块,控制模块等)和软件部分。
摘要
由于机械臂在各行各业中得到了愈来愈广泛的应用,机械臂控制的多样化、复杂化的需要也随之日趋增多。
作为当今科技领域研究的一个热点,提高机械臂的控制精度、稳定性、操作灵活性对于提高其应用水平有着十分重要的意义。
经过仔细的分析和研究之后,我选择的是STM32单片机进行控制,而自由臂选择工业中常见的四自由臂进行设计和建模分析,运动的控制选用舵机进行控制。
首先根据机械臂系统的控制要求,整体上设计出单CPU的系统控制方案,即通过控制主控制器输出的PWM波的占空比实现对舵机转动的控制,进而实现各个关节的位置控制。
在硬件方面,主要论述了如何以ARM微处理器STM32F103ZET6、MG995舵机为主要器件,通过搭建硬件平台和设计软件控制程序构建关节运动控制系统。
然后按照结构化设计的思想,依次对以上各部分的原理和设计方法进行了分析和探讨,给出了实际的原理图和电路图。
在软件设计方面,按照模块化的设计思想将控制程序分为初始化模块和运行模块,并分别对各个模块的程序进行设计。
关键词:
四自由度机械臂,STM32,运动模型,脉冲宽度调制
第一章运动模型建立
1.1引言
机器人运动学描述了机器人关节与组成机器人的各刚体之间的运动关系。
机器人在工作时,要通过空间中一系列的点组成的三维空间点域,这一系列空间点构成了机器人的工作范围,此工作范围可通过运动学正解求得。
此外,根据机器人末端执行器的位置和姿态要求,通过运动学逆解求得各个关节转角,可以实现对机器人进行运动分析、离线编程、轨迹规划等工作。
机器人控制的目的就在于它能快速确定位置,这使得机器人的运动学正逆解问题变得更为重要。
只有计算与运动学正逆解问题相关的变换关系在尽可能短时间内完成,才能达到快速准确的目的。
在运动学方程正解过程中,只体现在矩阵相乘关系上,相对简单。
1.2机器人运动学模型的建立
本文所研究的机器人由四个旋转关节和四个连杆组成,故为四自由度机器
人,如图1.1所示。
图1.1
用齐次坐标来描述机器人各连杆相对于参考坐标系的空间几何关系;用
4X4的齐次变换矩阵来描述相邻两杆的空间几何关系;从而推导出机器人手爪
坐标系相对于参考坐标系的空间位姿关系,利用该法得到的D-H参数如表1所
示。
图1.2机器人连杆坐标系
表1机器人连杆的D-H参数
i
Off
关节变量范围
连杆参数/劝和
1
0
0°
-15°-+90°
心=120
2
0
-90°
0
■30©_+90°
心=120
3
0°
0
趴
-60—+90°
心=110
4
0
-90°
-180°-+180°
5
0
0G
0°
必=120
连杆变换表示连杆坐标系{i}相对于{i-1}的变换,根据连杆变换的通式
得到各连杆之间的变换矩阵
71
0
0R
'f
2
0
O'
$1
cl
0
0
1
0
01
0
J=
0
0
1
.1=
一
s2
-c20
0
.0
{1
0
1一
.0
00
L
(2)
c3
-s3
0
a
■c4
0
(T
2oi
*3
0
0
3/T
0
0
1
心
yT=
0
0
1
0
—s4-c4
0
0
.0
0
0
1一
-0
0
0
1J
(3)
(4)
式中:
s1,s2,s3,s4;c1,c2,cs3,c4分别表示sinB1,sinB2,sin03,sin04;cos01,cos92,cos93,cos94以下同。
由矩阵
(1)可知:
连杆变换依赖于"「一一八仏四个参数和,其中只有一个参数是变化的,对于本文所研究的机器人,显然只有为变量,其余三个参数为常量。
1.2.1运动学正解
机器人运动学正解指:
在已知机器人各关节变量0i(i=1,…,n)的基础上,求
解出机器人末端执行器的位置矢量p和姿态矢量n,o,a的过程。
将连杆变换矩阵
(2)~(4)相乘,便得到了该机器人手爪的运动学方程
S©叫心+几J勺叭+pyo.+p二
00I
其中,机器人手爪姿态方程为
比=-iI+.s1s4
Jl=-j1j2s3c4-cls4
n.=—s2c3t'4—匚2占3c4
n.=-e}c2c3(4十
1*2怎和4+j(I<4门”=—slc2c3c4十$1』2,f3.衬—clt?
4or=s2i?
3.t4+c2j?
3.'s4
£=—el<2.3-(4品2匚3
a、--j1c2j3-s\s2c3
u=,<2s3-r2r3
机器人手爪的位置方程为
pA=clc2(~d4si+a2)-rf4clc2c3
py=51c2(-d4s3+还)-d4sls2c3p:
--j2"_d“3+a2)-J4c3c2+d.
为检验所得结果的正确性,取B仁90°,92=0°,93=-90°,94=0°计算的值结果为:
「01
0
0
□
0
J
"于+HFn号
1
0
0
£
-□
0
0
0
与图1所示机器人手爪的位姿完全一致,表明所得结果正确。
这样只要知道关
节变量9,92,63和,94的值,就可以完全确定机器人手爪的位置和姿态。
第二章机械臂控制系统的总体方案设计
2.1机械臂的机械结构设计
2.1.1臂部结构设计原则
作为机械臂的一个重要组成部分,手臂不仅起到支撑被抓物体、手爪和其他
关节的作用,而且还可以驱动手爪抓取物体,并根据事先预定的位置将物体搬运到指定地点。
机械臂的结构形式必须基于其运动形式、动作自由度、抓取质量、受力情况和其他的因素来确定,整个系统的总质量比较大,受力也比较复杂,其运动部件的质量直接影响到机械臂的刚度和强度。
所以,进行手臂的设计时,一般应注意下述要求:
(1)刚度要大。
为了避免机械臂在运动过程中发生较大的形变,要合理选择手臂的截面形状。
(2)导向性要好。
为了避免机械臂在运动过程中发生不必要的相对运动,臂杆最好设计成方形或是花键等形式。
(3)偏重力矩要小。
要尽可能减小机械臂运动部分的质量。
该设计根据机械臂的功能及搬运工作的任务的特点以及类型,为了使其在一定程度上具有操作的灵活性和运行性能的良好,经过多次的比较、讨论后,该设计选用多关节型的机械臂,它不仅具有动作的角度大的优点,还可以使机械臂在更大的空间内的运动。
2.1.2机械臂自由度的确定
机械臂的自由度是一个非常重要的参数,取决于机械臂的类型及其结构,并且在很大程度上直接决定到机械臂能否完成预定的任务。
一般来说是根据机械臂的用途来设计机械臂的自由度。
自由度越多的机械臂,具有更大的运动的灵活性,通用性也越强,但结构较复杂,难以实现。
所设计的搬运机械臂采用四个自由度就可以完成设定的搬运任务。
其中机械臂的手臂的旋转关节包括腰关节、肩关节、肘关节和腕关节四个关节以及末端手爪的开合。
2.2机械臂关节控制的总体方案
2.2.1机械臂控制器类型的确定
作为机械臂的心脏,机械臂控制器是根据程序指令和从传感器获得的传感信息来控制机械臂完成事先预定的动作或任务的装置,控制器的性能决定了机械臂控制性能的好坏。
从计算机结构、控制方式方面来划分,机械臂控制器大约可分为3种:
单CPU集中控制方式、多CPU分布式控制方式、二级CPU主从式控制方式。
(1)单CPU集中控制方式:
单CPU集中控制系统必须是一个强大的控
制系统,它的全部控制功能是用一台功能强大的计算机实现的。
Hero-I、Robot-
I等这些时代较早的机器人采用的就是这种单CPU集中控制方式的结构,但由于在控制的过程中需要进行大量的计算,因此这种控制方式的控制速度一般比较慢。
(2)多CPU分布式控制方式:
多CPU分布式控制系统的最大特点就是一个CPU负责控制一个关节轴,同时在上位机与单轴控制的CPU之间设计了一个并行接口,其主要负责上、下位机的通信,从而保证了数据的可靠传输。
(3)二级主从式控制方式:
该控制方式需要主从两个CPU,即上位机和下位的单片机两层结构。
上位机负责运动轨迹的规划、运动学计算等任务,根据预定的位置,计算出各个关节的运动量,以指令形式传送给下位的微处理器。
下位的微处理器根据指令对各关节进行运动控制
本课题所设计的机械臂系统基于STM32微处理器,利用STM32强大的运算和处理能力,采用单CPU集中控制方式即可满足要求。
2.2.2机械臂控制系统结构
本课题研究的机械臂控制系统采用单CPU集中控制方式,系统框图如下:
图2.1机械臂控制系统结构图
计算机用于完成整个系统的管理、发送指令、运动轨迹规划等。
计算机通过J-Link仿真器将程序下载至STM32微处理器,向关节控制系统发出位置指令,STM32根据指令输出PWM波,从而使机械臂的各个关节转过指定的角度,进而使其按照预定的轨迹完成搬运任务。
2.2.3关节控制系统的控制策略
本课题设计的机械臂关节控制系统以STM32微处理器为核心,对直流伺服电机(舵机)进行较为精确的运动控制。
关节控制系统的工作原理是:
STM32微处理器内部的PWM单元产生
PWM信号,驱动直流伺服电机旋转。
电机驱动舵机内部的齿轮组,其输出端带动一个线性的比例电位器作为位置检测,该电位器把转角坐标转换为一比例电压反馈给控制线路板,控制线路板将其与输入的控制脉冲信号比较,产生纠正脉冲,并驱动电机正向或者反向的转动,使齿轮组的输出位置与期望值相符,令纠正脉冲最终趋于为0,从而达到使伺服电机的精确定位[17]。
该关节控制系统的主要特点如下:
(1)使用以Contex-M3为内核的STM32F103ZET6作为系统的微控制器,与传统的51单片机相比起来,具有功耗小,运算能力大大增强的优点。
(2)采用直流伺服电机驱动机械臂的各个关节,根据STM32微控制器输出的PWM控制信号的占空比来确定直流电动机的转速和转向,控制起来简单,准确。
第三章机械臂控制系统硬件设计
3.1机械臂控制系统概述
机械臂控制系统通常要满足如下几个基本的要求:
(1)控制系统的微型化、轻型化和模块化。
(2)控制系统的实时性。
(3)系统的稳定性和开放性。
该机械臂控制系统由主控制模块、电机驱动模块和电源模块组成,每个子模块的功能如下:
主控制模块:
作为该控制系统的核心,包括ARMCortex-M3内核和有关外围电路,主要负责完成PWM波(控制信号)的输出。
驱动模块:
负责机械臂各个关节的驱动,由舵机组成。
电源模块:
机械臂控制系统采用双电源供电模式,STM32单片机经过AMS1117-3.3V稳压芯片供电,舵机驱动模块采用7.2V可充电电池经LM2596DC-DC可调降压模块实现供电。
3.2微处理器选型
微控制器作为机械臂运动控制系统的核心,如下几个方面为重点进行微控制器的选择:
★系统时钟速度
★运算速度
★功能
★电机控制方式
★ROM及ROM的大小
★控制板的结构尺寸
经过反复比较,本设计采用意法半导体公司的STM32处理器,如图3.1所示。
STM32F103ZET6是基于32位ARMCortex-M3内核的微处理器,不但支持实时仿真,而且嵌入了512KB的高速闪存。
CPU的最高工作频率为72MHz,支持Thumb-2。
图3.1STM32
3.3主控制模块设计
该设计的主控制模块的硬件系统包括电源电路、复位电路、系统时钟电路以及JTAG调试电路四大组成部分。
3.3.1电源电路
在硬件电路的设计中,电源模块的设计是非常重要的,如果不能妥善处理,不但会使电路不能正常工作,严重的还可能烧毁电路。
因此,在设计电源时务必要注意如下几点:
(1)交流输入和直流输出尽可能保持更大的距离;
(2)地线要足够粗,单点和多点相结合,同时分离模拟地和数字地;
(3)散热要好,布局应合适;
图3.2电源电路图
如上图所示,开发板由7.2V接口供电。
板上的电源转换芯片将7.2V接口
输入的7.2V电源转换成5V的电源,然后转换成3.3V给处理器和相关外围电路供电。
3.3.2复位电路
图3.3复位电路图
如上图所示,B1为整个板的复位按钮,当按钮被按下时,STM32处理器、
TFT彩屏等都将复位。
3.3.3时钟电路
STM32的VBAT的供电是由外部电源完成的,在有外部电源(VCC3.3)的情况下,VBAT供电而由外部电源实现供电。
但是,当外部电源断开的情况下,RTC的走时以及后备寄存器的内容就会丢失。
相关电路如下:
图3.4时钟电路图
3.3.4JTAG调试电路
软件程序的编写通常是需要多次的修改才适用的,因此一些比较先进的调试手段便应运而生。
JTAG仿真调试手段作为其中的一种,是由ARM公司提出的。
本设计采用占用IO口资源少的SWD调试,只需JTAG仿真器上的4根线就能完成,如下图所示:
图3.5SWD调试电路图
通过SWD接口,我们可以烧录和调试程序,开发板的JTAG接口的硬件连接如上图所示,可以与目前主流的JLINKV8仿真器配合使用。
3.4驱动模块设计
通常对机械臂的驱动系统的要求有:
(1)驱动系统的质量不应太重,效率也应较高;
(2)响应速度快;
(3)动作灵活,位移偏差以及速度偏差均较小;
(4)安全可靠;
(5)操作和维护方便;
(6)经济合理,占地面积要尽可能的小。
基于上述驱动系统的特点和该机械臂驱动系统的设计要求,该设计选用直流伺服电机负责机械臂各个关节的驱动。
该设计选用的舵机型号为分别MG995,如图3.2、3.3,其参数如下:
MG995:
(1)尺寸:
40mm^20mmX36.5mm
(2)重量:
62g
(3)技术参数:
无负载速度0.17秒/60度(4.8V)、0.13秒/60度(6.0V)
(4)扭矩:
13KG(5)使用温度:
-30~~+60
摄氏度
(6)死区设定:
4微秒(7)工作电压:
3.0V-7.2V
图3.6MG995舵机
—般来说,舵机是由舵盘、减速齿轮组、位置反馈电位计、直流电机、控制电路板等几个重要部分组成的。
信号线把来自于微控制器的控制信号传输到舵机的控制电路板,控制电路板
根据相应的控制信号控制电机的转动,同时电机带动齿轮组随之转动,经减速机构减速后传动到输出舵盘。
由于舵机的输出轴和位置反馈电位计是连接在一起的,所以在舵盘转动的时候会带动位置反馈电位计,电位计根据当前位置将一个电压信号反馈到控制电路板,然后控制电路板根据电位计反馈回来的数据决定电机后续的转动方向和速度,从而使舵机运动到指定的位置后停止运动,可以实现对位置的精确控制
3.5电源模块设计
机械臂控制系统采用双电源供电模式,STM32单片机经过AMS1117-3.3V稳压芯片供电,舵机驱动模块采用7.2V可充电电池经LM2596DC-DC可调降压模块实现供电。
AMS1117是正向低压降的稳压器,在1A电流下产生1.2V的压降。
它的内部所集成有过热保护和限流电路,因此是电池供电和便携式计算机的最佳选择。
由AMS1117-3.3V芯片构成的3.3V稳压电路如图3.8所示。
图3.83.3V稳压电路
LM2596开关电压调节器是降压型电源管理单片集成电路,可以输出最高达3A的驱动电流,同时也有良好的线性和负载调节特性。
可调型的LM2596甚至可以输出低于37V的各种电压。
LM2596的特性如下:
输出电压可调,可调范围为1.2V〜37V,误差范围4%;输出特性有良好的线性,并且负载可以调节;驱动能力较强,输出电流可高达3A,输入电压可高达40V;采用150kHz的内部振荡频率,属于第二代开关电压调节器;功耗小、效率高,具有过热保护和限流保护功能等。
常用于高效率降压调节器,单片开关电压调节器,正、负电压转换器等。
由LM2596构成的5V稳压电路如图3.9所示
图3.95V稳压电路
第四章机械臂控制系统软件设计
4.1初始化模块设计
初始化模块主要负责完成如下工作:
系统时钟控制寄存器RCC的配置,
SysTick定时器,TIM定时器,通用输入输出接口GPIO,嵌套向量中断控
制器NVIC,PWM波输出,超声波传感器模块的初始化。
采用库函数进行编程。
4.1.1系统时钟控制
STM32CPU的时钟源可以来自内部高速振荡器(HSI)、外部高速振荡器(HSE)或者内部锁相环(PLL)。
锁相环需要以HSI或HSE作为时钟来源,两者的差别在于内部高速震荡器HSI不能产生稳定的8MHz的时钟频率。
为了获得最大的工作频率,都会通过锁相环配置出最大的72MHz频率,供给
Cortex-M3内核使用。
流程图如下:
图4.2系统时钟初始化流程图
4.1.2SysTick定时器
SysTick,即系统节拍时钟,它作为ARMCortex-M3内核的一个内设,和STM32微控制器之间并没有必然的联系。
SysTick的存在既能够提供必要的系统节拍,为实时操作系统的任务调度提供一个有节奏的“心跳”,进而提高可靠性,又方便了程序在不同器件间的移植。
系统初始化时,RCC通过AHB时钟(HCLK)8分频后作为Cortex系统定时器(SysTick)的外部时钟。
通过对SysTick控制与状态寄存器的设置,可选择上述时钟或Cortex(HCLK)时钟作为SysTick时钟。
系统嘀嗒校准值固定为9000,当系统嘀嗒时钟设定为9MHz(HCLK/8的最大值),产生1ms时间基准<
本部分的程序流程图如下:
'~~开始~~
设置Systick重装载时间
失能Systick定时器
I
设定中断函数,获取节拍
使能Systick定时器
ZTZ
结束
4.1.3TIM定时器
STM32微控制器具备高级定时器TIM1和TIM82个,通用定时器TIM2、TIM3、TIM4和TIM54个以及基本定时器TIM6和TIM72个,再加上RTC和Systick定时器,总数量达到了10个。
基本定时器可以为用户提供准确的时间参考;通用定时器不仅具备时间参考功能,还具有输入捕捉、输出比较、单脉冲输出、PWM输出功能和正交编码
器的特点;高级定时器更是加入了可以产生带死区控制的互补PWM信号、紧急制动、定时器同步等高级特征,并最多可以输出6路PWM信号,可谓是意法半导体赋予STM32的王牌。
本设计采用TIM2、TIM3的PWM输出功能和TIM4的计数功能。
本部分的程序流程图如下:
图4.4TIM定时器初始化流程图
4.1.4通用输入输出接口GPIO
GPIO可以说是STM32最常用的外设。
STM32F103ZET6提供多达112
个双向GPIO,分别分布在A~G这7个端口中。
每个端口又包括16个
GPIO,都可承受5V的压降。
GPIO可通过配置寄存器工作在如下8种模式:
浮空输入、带上拉电阻的输入、带下拉电阻的输入、模拟输入;开漏输出、推挽输出、复用推挽输出、复用开漏输出。
该设计中将PA0、PA1、PA2、PA3、PA6作为PWM波的输出口;PA4、
PA5作为LED显示接口;PA7、PA8作为超声波传感器信号的接收发送接口;
PB6、PB7分别作为串口的发送接收接口(人机交互)。
4.1.5超声波传感器模块
首先,STM32的PA7端口接超声波传感器的TRIG口,触发测距信号,
发出10us的高电平信号;然后,超声波发射器自动发送8个40KHZ的方波,
接收器检测返回信号;然后,PA8端口接的ECHO发给STM32微控制器个高电平,用TIM4来测量高电平的持续时间。
本部分的程序流程图如下:
图4.5超声波模块初始化流程图
总结
机械臂控制系统是当今社会的一项非常重要的研究课题,尽管其发展已经有了一段很长的历史,但是其发展并不完全成熟。
无论是学术界、工业还