基于STM32的机械臂运动控制分析设计

基于STM32的机械臂运动控制分析设计
基于STM32的机械臂运动控制分析设计

机器人测控技术

大作业课程设计

课程设计名称:基于STM32的机械臂运动控制分析设计专业班级:自动1302

学生姓名:张鹏涛

学号: 2

指导教师:曹毅

课程设计时间: 2016-4-28~2016-5-16

目录

摘要.............................................................................................................................. III 第一章运动模型建立................................................................................................ I V

1、1引言......................................................................................................... I V

1、2机器人运动学模型的建立....................................................................... I V

1、2、1运动学正解............................................................................... V I 第二章机械臂控制系统的总体方案设计.............................................................. VII

2、1机械臂的机械结构设计......................................................................... VII

2、1、1臂部结构设计原则................................................................. VII

2、1、2机械臂自由度的确定............................................................ VIII

2、2机械臂关节控制的总体方案................................................................ VIII

2、2、1机械臂控制器类型的确定.................................................... VIII

2、2、2机械臂控制系统结构............................................................... I X

2、2、3关节控制系统的控制策略....................................................... I X 第三章机械臂控制系统硬件设计............................................................................. X

3、1机械臂控制系统概述................................................................................ X

3、2微处理器选型............................................................................................ X

3、3主控制模块设计....................................................................................... X I

3、3、1电源电路................................................................................... X I

3、3、2复位电路................................................................................. XII

3、3、3时钟电路................................................................................. XII

3、3、4 JTAG调试电路 ..................................................................... XIII

3、4驱动模块设计........................................................................................ XIII

3、5电源模块设计........................................................................................ X IV 第四章机械臂控制系统软件设计......................................................................... X VI

4、1初始化模块设计.................................................................................... X VI

4、1、1系统时钟控制........................................................................ X VI

4、1、2 SysTick定时器.....................................................................XVII

4、1、3 TIM定时器 ........................................................................ XVIII

4、1、4通用输入输出接口GPIO ..................................................... X IX

4、1、5超声波传感器模块................................................................ X IX 总结............................................................................................................................ XX 参考文献................................................................................................................... X XI 附录A ......................................................................................................................XXII 附录B .................................................................................................................... XXIII

设计要求:

设计一个两连杆机械臂,具体参数自行设计,建立其运动学模型,然后在此基础上完成该机械臂两点间的路径规划,并给出仿真结果。

设计完成上述目标的控制系统,控制器可以自行选择(单片机,ARM,DSP,PLC等),其她硬件部分根据系统所需要完成的功能自行选择,基本要求要体现系统的输入,输出信号与人机交互界面,画出整个系统的硬件结构(电路模块,驱动模块,控制模块等)与软件部分。

摘要

由于机械臂在各行各业中得到了愈来愈广泛的应用,机械臂控制的多样化、复杂化的需要也随之日趋增多。作为当今科技领域研究的一个热点,提高机械臂的控制精度、稳定性、操作灵活性对于提高其应用水平有着十分重要的意义。

经过仔细的分析与研究之后,我选择的就是STM32单片机进行控制,而自由臂选择工业中常见的四自由臂进行设计与建模分析,运动的控制选用舵机进行控制。

首先根据机械臂系统的控制要求,整体上设计出单CPU 的系统控制方案,即通过控制主控制器输出的PWM 波的占空比实现对舵机转动的控制,进而实现各个关节的位置控制。在硬件方面,主要论述了如何以ARM 微处理器STM32F103ZET6、MG995舵机为主要器件,通过搭建硬件平台与设计软件控制程序构建关节运动控制系统。然后按照结构化设计的思想,依次对以上各部分的原理与设计方法进行了分析与探讨,给出了实际的原理图与电路图。在软件设计方面,按照模块化的设计思想将控制程序分为初始化模块与运行模块,并分别对各个模块的程序进行设计。

关键词:四自由度机械臂,STM32,运动模型,脉冲宽度调制

第一章运动模型建立

1、1引言

机器人运动学描述了机器人关节与组成机器人的各刚体之间的运动关系。机器人在工作时,要通过空间中一系列的点组成的三维空间点域,这一系列空间点构成了机器人的工作范围,此工作范围可通过运动学正解求得。此外,根据机器人末端执行器的位置与姿态要求,通过运动学逆解求得各个关节转角,可以实现对机器人进行运动分析、离线编程、轨迹规划等工作。

机器人控制的目的就在于它能快速确定位置,这使得机器人的运动学正逆解问题变得更为重要。只有计算与运动学正逆解问题相关的变换关系在尽可能短时间内完成,才能达到快速准确的目的。在运动学方程正解过程中,只体现在矩阵相乘关系上,相对简单。

1、2机器人运动学模型的建立

本文所研究的机器人由四个旋转关节与四个连杆组成,故为四自由度机器人,如图1、1所示。

图1、1

用齐次坐标来描述机器人各连杆相对于参考坐标系的空间几何关系;用4×4的齐次变换矩阵来描述相邻两杆的空间几何关系;从而推导出机器人手爪坐标系相对于参考坐标系的空间位姿关系,利用该法得到的D-H参数如表1所示。

图1、2机器人连杆坐标系

表1 机器人连杆的D-H参数

连杆变换表示连杆坐标系{i}相对于{i-1}的变换,根据连杆变换的通式:

(1) 其

中:

得到各连杆之间的变换矩阵

(2)

(3)

(4)

式中:s1,s2,s3,s4;c1,c2,cs3,c4分别表示sinθ1,sinθ2,sinθ3,sinθ4; cosθ1, cosθ2, cosθ3, cosθ4以下同。由矩阵(1)可知:连杆变换依赖于四个参数与,其中只有一个参数就是变化的,对于本文所研究的机器人,显然只有为变量,其余三个参数为常量。

1、2、1运动学正解

机器人运动学正解指:在已知机器人各关节变量θi(i=1,…,n)的基础上,求解出机器人末端执行器的位置矢量p与姿态矢量n,o,a的过程。将连杆变换矩阵(2)~(4)相乘,便得到了该机器人手爪的运动学方程

(5) 其中,机器人手爪姿态方程为

机器人手爪的位置方程为

为检验所得结果的正确性,取θ1=90°,θ2=0°,θ3=-90°,θ4=0°计算的值。结果为:

与图1所示机器人手爪的位姿完全一致,表明所得结果正确。这样只要知道关节变量θ1,θ2,θ3与,θ4的值,就可以完全确定机器人手爪的位置与姿态。

第二章机械臂控制系统的总体方案设计

2、1机械臂的机械结构设计

2、1、1臂部结构设计原则

作为机械臂的一个重要组成部分,手臂不仅起到支撑被抓物体、手爪与其她关节的作用,而且还可以驱动手爪抓取物体,并根据事先预定的位置将物体搬运到指定地点。

机械臂的结构形式必须基于其运动形式、动作自由度、抓取质量、受力情况与其她的因素来确定,整个系统的总质量比较大,受力也比较复杂,其运动部件的质量直接影响到机械臂的刚度与强度。所以,进行手臂的设计时,一般应注意下述要求:

(1)刚度要大。为了避免机械臂在运动过程中发生较大的形变,要合理选择手臂的截面形状。

(2)导向性要好。为了避免机械臂在运动过程中发生不必要的相对运动,臂杆最好设计成方形或就是花键等形式。

(3)偏重力矩要小。要尽可能减小机械臂运动部分的质量。

该设计根据机械臂的功能及搬运工作的任务的特点以及类型,为了使其在一定程度上具有操作的灵活性与运行性能的良好,经过多次的比较、讨论后,该设计选用多关节型的机械臂,它不仅具有动作的角度大的优点,还可以使机械臂在更大的空间内的运动。

2、1、2机械臂自由度的确定

机械臂的自由度就是一个非常重要的参数,取决于机械臂的类型及其结构,并且在很大程度上直接决定到机械臂能否完成预定的任务。

一般来说就是根据机械臂的用途来设计机械臂的自由度。自由度越多的机械臂,具有更大的运动的灵活性,通用性也越强,但结构较复杂,难以实现。

所设计的搬运机械臂采用四个自由度就可以完成设定的搬运任务。其中机械臂的手臂的旋转关节包括腰关节、肩关节、肘关节与腕关节四个关节以及末端手爪的开合。

2、2机械臂关节控制的总体方案

2、2、1机械臂控制器类型的确定

作为机械臂的心脏,机械臂控制器就是根据程序指令与从传感器获得的传感信息来控制机械臂完成事先预定的动作或任务的装置,控制器的性能决定了机械臂控制性能的好坏。从计算机结构、控制方式方面来划分,机械臂控制器大约可分为3种:单CPU 集中控制方式、多CPU 分布式控制方式、二级CPU 主从式控制方式。

(1)单CPU 集中控制方式:单CPU 集中控制系统必须就是一个强大的控制系统,它的全部控制功能就是用一台功能强大的计算机实现的。Hero-Ⅰ、Robot-Ⅰ等这些时代较早的机器人采用的就就是这种单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)系统的稳定性与开放性。

该机械臂控制系统由主控制模块、电机驱动模块与电源模块组成,每个子模块的功能如下:

主控制模块:作为该控制系统的核心,包括ARM Cortex-M3 内核与有关外围电路,主要负责完成PWM 波(控制信号)的输出。

驱动模块:负责机械臂各个关节的驱动,由舵机组成。

电源模块:机械臂控制系统采用双电源供电模式,STM32单片机经过

AMS1117-3、3V稳压芯片供电,舵机驱动模块采用7、2V可充电电池经LM2596 DC-DC 可调降压模块实现供电。

3、2微处理器选型

微控制器作为机械臂运动控制系统的核心,如下几个方面为重点进行微控制器的选择:

★系统时钟速度

★运算速度

★功能

★电机控制方式

★ROM及ROM的大小

★控制板的结构尺寸

经过反复比较,本设计采用意法半导体公司的STM32处理器,如图3、1所示。STM32F103ZET6就是基于32位ARM Cortex-M3内核的微处理器,不但支持实时仿真,而且嵌入了512KB的高速闪存。CPU 的最高工作频率为72MHz,支持Thumb-2。

图3、1 STM32

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、4 JTAG调试电路

软件程序的编写通常就是需要多次的修改才适用的,因此一些比较先进的调试手段便应运而生。JTAG 仿真调试手段作为其中的一种,就是由ARM 公司提出的。本设计采用占用IO口资源少的SWD调试,只需JTAG 仿真器上的4根线就能完成,如下图所示:

图3、5 SWD调试电路图

通过SWD接口,我们可以烧录与调试程序,开发板的JTAG接口的硬件连接如上图所示,可以与目前主流的JLINK V8仿真器配合使用。

3、4驱动模块设计

通常对机械臂的驱动系统的要求有:

(1)驱动系统的质量不应太重,效率也应较高;

(2)响应速度快;

(3)动作灵活,位移偏差以及速度偏差均较小;

(4)安全可靠;

(5)操作与维护方便;

(6)经济合理,占地面积要尽可能的小。

基于上述驱动系统的特点与该机械臂驱动系统的设计要求,该设计选用直流伺服电机负责机械臂各个关节的驱动。

该设计选用的舵机型号为分别MG995,如图3、2、3、3,其参数如下:

MG995:

(1)尺寸:40mm×20mm×36、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、6 MG995舵机

一般来说,舵机就是由舵盘、减速齿轮组、位置反馈电位计、直流电机、控制电路板等几个重要部分组成的。

信号线把来自于微控制器的控制信号传输到舵机的控制电路板,控制电路板根据相应的控制信号控制电机的转动,同时电机带动齿轮组随之转动,经减速机构减速后传动到输出舵盘。由于舵机的输出轴与位置反馈电位计就是连接在一起的,所以在舵盘转动的时候会带动位置反馈电位计,电位计根据当前位置将一个电压信号反馈到控制电路板,然后控制电路板根据电位计反馈回来的数据决定电机后续的转动方向与速度,从而使舵机运动到指定的位置后停止运动,可以实现对位置的精确控制。

3、5电源模块设计

机械臂控制系统采用双电源供电模式,STM32单片机经过AMS1117-3、3V

稳压芯片供电,舵机驱动模块采用7、2V可充电电池经LM2596 DC-DC 可调降压模块实现供电。

AMS1117就是正向低压降的稳压器,在1A电流下产生1、2V的压降。它的内部所集成有过热保护与限流电路,因此就是电池供电与便携式计算机的最佳选择。

由AMS1117-3、3V芯片构成的3、3V稳压电路如图3、8所示。

图3、8 3、3V稳压电路

LM2596开关电压调节器就是降压型电源管理单片集成电路,可以输出最高达3A的驱动电流,同时也有良好的线性与负载调节特性。可调型的LM2596甚至可以输出低于37V的各种电压。LM2596的特性如下:输出电压可调,可调范围为1、2V~37V,误差范围4%;输出特性有良好的线性,并且负载可以调节;驱动能力较强,输出电流可高达3A,输入电压可高达40V;采用150kHz的内部振荡频率,属于第二代开关电压调节器;功耗小、效率高,具有过热保护与限流保护功能等。常用于高效率降压调节器,单片开关电压调节器,正、负电压转换器等。

由LM2596构成的5V稳压电路如图3、9所示。

图3、9 5V稳压电路

第四章机械臂控制系统软件设计

4、1初始化模块设计

初始化模块主要负责完成如下工作:系统时钟控制寄存器RCC 的配置, SysTick 定时器,TIM 定时器,通用输入输出接口GPIO ,嵌套向量中断控制器NVIC, PWM 波输出,超声波传感器模块的初始化。采用库函数进行编程。

4、1、1系统时钟控制

STM32 CPU 的时钟源可以来自内部高速振荡器(HSI)、外部高速振荡器(HSE)或者内部锁相环(PLL)。锁相环需要以HSI 或HSE 作为时钟来源,两者的差别在于内部高速震荡器HSI 不能产生稳定的8MHz的时钟频率。为了获得最大的工作频率,都会通过锁相环配置出最大的72MHz频率,供给Cortex-M3内核使用。

流程图如下:

图4、2 系统时钟初始化流程图

4、1、2 SysTick定时器

SysTick ,即系统节拍时钟,它作为ARM Cortex-M3内核的一个内设,与

STM32微控制器之间并没有必然的联系。SysTick的存在既能够提供必要的系统节拍,为实时操作系统的任务调度提供一个有节奏的“心跳”,进而提高可靠性,又方便了程序在不同器件间的移植。

系统初始化时,RCC通过AHB时钟(HCLK)8分频后作为Cortex系统定时器(SysTick)的外部时钟。通过对SysTick控制与状态寄存器的设置,可选择上述时钟或Cortex(HCLK)时钟作为SysTick时钟。系统嘀嗒校准值固定为9000,当系统嘀嗒时钟设定为9MHz(HCLK/8的最大值),产生1ms时间基准。

图4、3 SysTick定时器初始化流程图

4、1、3 TIM定时器

STM32微控制器具备高级定时器TIM1与TIM8 2个,通用定时器TIM2、TIM3、TIM4与TIM5 4个以及基本定时器TIM6与TIM7 2个,再加上RTC 与Systick 定时器,总数量达到了10个。

基本定时器可以为用户提供准确的时间参考;通用定时器不仅具备时间参考功能,还具有输入捕捉、输出比较、单脉冲输出、PWM 输出功能与正交编码器的特点;高级定时器更就是加入了可以产生带死区控制的互补PWM 信号、紧急制动、定时器同步等高级特征,并最多可以输出6路PWM 信号,可谓就是意法半导体赋予STM32的王牌。

本设计采用TIM2、TIM3的PWM 输出功能与TIM4的计数功能。

本部分的程序流程图如下:

图4、4 TIM定时器初始化流程图

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来测量高电平的持续时间。

本部分的程序流程图如下:

相关主题
相关文档
最新文档