摘 要
:
为了降低机械手臂的设计开发难度
,
并使之尽早地投入应用
,
设计一种基于单片机和
Arduino
平台的六自由度可控机械手臂
。提出六自由度可控机械手臂的控制方案,
给出机械手臂控制系统的结构框图
。
详细设计六自由度可控机械手臂的硬件系统和软件系统,
给出关键参数的计算过程和计算结果
。
最后
,
设计制作可控机械手臂实物
,
并利用机械手臂书写
(
绘制
)
大写字母“M
”。
设计过程与实物应用效果表明
:
基于单片机和
Arduino
平台的六自由度机械手臂具有实际的应用价值
。
关键词
:
Arduino
平台
;
机械手臂
;
六自由度
;
单片机
;
实物制作
0 引 言
目前机械手臂是机器人技术领域的重要发展方向
,
也是得到最广泛实际应用的自动化机械装置。
机械手臂可用于汽车制造等自动化制造行业,
还可用于商业
、
农业
、
医疗
、
救援等各个领域
。但是,
因机械手臂的功能针对性强和售价高昂
,
使其很难应用于普通场合。
开源硬件的发展
,
尤其是
Arduino
技术平台的迅猛发展
,
使开发设计人员更容易进入机械电子学这个精彩的领域。
Arduino
是一款便捷、
灵活
、
容易使用的开源电子原型平台
,
它包含硬件
(
各种型号的 Arduino
板
)
和软件
(
Arduino IDE
)
。
Arduino
的硬件原理图、
电路图、
IDE 软件及核心库文件都是开源的
,
允许开发者根据自己的设计思想进行改进调整。
基于开源性硬件与软件的思想
,
本文综合
Arduino
、
单片机和机械臂的理论与技术,
设计制作基于
Arduino
平台的六自由度可控机械手臂。
通过对机械手臂各个关节的精确控制
,
实现机械手臂六个自由度的调整控制。
该可控机械手臂可以模仿人的手臂
,通过编程实现简单的动作,
可作为实验教学演示平台
,
或者在生活中应用 。
1 机械手臂控制方案设计
机械手臂是一种具有高度能动性和高度灵活性的自动化机器,
它是机电一体化设备的典型代表之一
。
因此
,
机械手臂由机械系统和电气系统两大部分组成。机械手臂的机械系统部分由机械连杆、
旋转关节等单元串联连接而成,
形成串联式开链结构
。
关节的作用是使相互联接的两个连杆产生相对运动。
机械手臂的各关节轴线相互平行或垂直
。机械手臂的电气系统部分就是其控制系统部分,
它由单片机系统、
舵机控制板
、
舵机系统等单元组成
,
如图
1
所示
。
单片机系统包括主控制器
、
复位电路
、
晶振电路
、
按键电路
、电源模块等部分,
负责发出机械手臂的控制命令
。
舵机控制板为采用
Arduino
平台的开源硬件电路板
,
可用于二次开发。
舵机控制板负责接收单片机系统发出的控制指令
,
并将信号放大以驱动各个舵机。舵机系统包括底座舵机、
肩关节舵机
、
肘关节
1
舵机
、
肘关节2 舵机
、
腕关节
1
舵机
、
腕关节
2
舵机等六个舵机
,
分别用于模拟执行机械手臂的动作。
舵机系统中的六个舵机可分别进行控制
,进而完成机械手臂六个自由度的调整控制。
2 机械手臂控制系统硬件设计
2. 1 控制系统硬件设计概述
机械手臂控制系统主要由主控制器系统
(
单片机系统
)
、
舵机控制板、
舵机系统等单元组成
。
其中
,
为充分发挥
Arduino
开源硬件电路板的技术开放优势和设计制造优势,
采用直接从
Arduino
平台开发公司购买基于 Arduino
平台的舵机控制板
。
在此基础上
,
进行二次开发设计,
因此本设计的主要内容集中于主控制器系统
(
单片机系统)
和舵机系统
。
2. 2 主控制器系统
主控制器系统模块由主控制器
(
单片机
)
、
复位电路
、
晶振电路、
按键电路
、
电源模块等部分组成
,
它是机械手臂控制系统的核心控制装置。
在本设计中
,
主控制器选用
80C51
型号的单片机
。
单片机的XTAL1、
XTAL2
端口之间接石英晶体振荡电路
;
RST
端口接复位电路;
P0. 0 ~ P0. 7
端口经上拉电阻接
LCD
显示器
LM016L
,
用于显示发送指令代码的内容。
2. 3 舵机控制板
舵机控制板用于接收单片机系统发出的控制指令
,
并将控制指令放大编码后控制舵机,
从而带动机械手臂产成相应的动作
。为充公发挥 Arduino
开源硬件电路板的技术开放优势和设计制造优势,
本设计采用直接从
Arduino
平台开发公司购买设计制作完成的舵机控制板。
舵机控制板是一个从机
,
即它只能接受命令
,
或者执行事先设置好的命令。
需要使用单片机给舵机控制板发送命令
,
从而通过舵机控制板来控制舵机。
图
2
所 示 为所购 买 的 舵 机 控制板。
舵 机 控 制板的右上角 RXD
、TXD、
GND
三个接口分 别 与 单 片 机的 TXD
、
RXD
、GND 三 个 端 口 相连,
用于接收单片机系 统 发 出 的 控制指 令。舵 机 控制板的 S1 ~ S32
组合端口分别用于连接
32
个舵机
,
每个组合端口中的 +
、
-
S三个端口分别用于连接每个舵机的电源正极、
电源负极、
信号控制极
。
2. 4 舵机系统
舵机系统共由六个舵机组成
,
分别控制机械手臂的六个自由度。
本设计采用的舵机型号为
LF - 20MG
,
如图
3
所示
。
该型号的舵机为直流电动机,
工作电压为直流
4. 8 V ~ 6. 6 V
。
该型号的舵机可以提供的扭矩范围为 1. 62 N
·
m ~ 1. 96 N
·
m
,
能够支持机械手臂完成相应动作所需要的扭矩。
3 机械手臂控制系统软件设计
3. 1 控制系统软件设计概述
机械手臂控制系统软件设计的主要任务是
:
根据机械手臂的实际动作要求,
单片机系统编写相应的动作指令
,
并将动作指令发送给舵机控制板,
通过舵机控制板控制各个舵机
,
进而完成机械手臂的相应动作。
现以机械手臂书写
(
绘制
)
大写字母
“
M
”
为例
,
机械手臂控制的程序流程为:
(
1
)
单片机上电初始化
。
(
2
)
设置单片机与舵机控制板之间通信端口的参数
。
(
3
)
计算机械手夹紧动作时各个舵机所需的旋转角度
,
设置并输出机械手夹紧动作组。
(
4
)
大写字母
“
M
”
的第
1
笔画为
“
右上长直线
”
,
计算书写(绘制
)
第
1
笔画时各个舵机所需的旋转角度
,
设置并输出机械手臂第 1
笔画动作组
。
(
5
)
大写字母
“
M
”
的第
2
笔画为
“
右下短直线
”
,
计算书写(绘制
)
第
2
笔画时各个舵机所需的旋转角度
,
设置并输出机械手臂第 2
笔画动作组
。
(
6
)
大写字母
“
M
”
的第
3
笔画为
“
右上短直线
”
,
计算书写(绘制
)
第
3
笔画时各个舵机所需的旋转角度
,
设置并输出机械手臂第 3
笔画动作组
。
(
7
)
大写字母
“
M
”
的第
4
笔画为
“
右下长直线
”
,
计算书写(绘制
)
第
4
笔画时各个舵机所需的旋转角度
,
设置并输出机械手臂第 4
笔画动作组
。
(
8
)
计算机械手释放动作时各个舵机所需的旋转角度
,
设置并输出机械手释放动作组。
3. 2 单片机串行通信端口的参数计算
在机械手臂控制系统中
,
主控制器
(
单片机
)
与舵机控制板之间采用串行通信方式。
通信协议规定为
:
TTL
电平
、
波特率9 600 bps、
无校验位
、8位数据位、1 位停止位。为完成上述的通信协议,
需要计算串行端口定时器初始值
,其计算公式为:
式中
X
为定时器初始值
;
n
为定时器的位数
;
Baud
为串行接口通讯的波特率;
SMOD
为串行端口控制寄存器
PCON
的最高位;
f
OSC
为单片机的时钟频率
。
当选择定时器为
8
位
、
串行端口通讯的波特率为
9 600 bps
、串行端口控制寄存器 PCON
的最高位为
1
、
单片机的时钟频率为11. 059 2 MHz 时
,
定时器初始值的计算结果为
:
3. 3 单片机串行通信端口的程序编制
编制的单片机串行通信端口初始化程序为
:
void UartInitialization
( )
{
SCON = 0x50
;
/ /8
位异步串行通信口
,
模式
1
PCON | = 0x80
;
/ / SMOD =
”
1
”
TMOD | = 0x20
;
/ /
定时器
1
,
模式
2
,
8
位重装
TH1 = 0xFA
;
/ /
定时器初始值高
8
位
TL1 = 0xFA
;
/ /
定时器初始值低
8
位
IE | = 0x90
;
/ /
允许串行中断
TR1 = 1
;
/ /
启动定时器
1
EA = 1
;
/ /
允许所有中断
}
3. 4 舵机角度控制设置值的计算
需要通过主控制器
(
单片机
)
设置舵机角度控制设置值
,
舵机角度控制设置值与舵机角度实际位置值之间的运算关系为:
式中
A
x
为舵机角度控制设置值
;
A
0
为舵机角度控制设置值的下限;
A
m
为舵机角度控制设置值的上限
;
N
x
为舵机角度实际位置值;
N
0
为舵机角度实际位置值的下限
;
N
m
为舵机角度实际位置值的上限。
当舵机角度控制设置值的下限和上限分别为
500
和
2 500
、舵机角度实际位置值的下限和上限分别为 0
度和
180
度时
,
若使舵机角度实际位置值为 90
度
,
则应在单片机程序软件中的舵机角度控制设置值的计算结果为:
3. 5 舵机角度控制设置值的程序编制
单片机需要通过舵机控制板来控制舵机的运动
。
在单片机中,
舵机角度控制设置值的编程格式为
(
以控制单个舵机为例
) :#1P1500T100 \r\n其中,
数据
1
是舵机的通道
;
数据
1 500
是舵机角度控制设置值(
表示舵机的旋转角度
) ,
其范围为
500 ~ 2 500
;
数据
100
是执行的时间,
其范围为
100 ms ~ 9 999 ms
。编制的单片机控制舵机角度的程序为:
void main
( )
{
UartInitialization
( ) ;
/ /
串行通信端口初始化
UartSendString
(
" #1P1500T100 \ r \ n"
) ;
/ / S1
号舵机在时间
100ms
内旋转
90
度
while
(
1
) ;
}
void UartSendString
(
uchar * pStr
)
/ /
串行通信端口发送一个
字符串
{
while
(
* pStr
!
= 0
)
{
SBUF = * pStr + +
;
while
(
TI = = 0
) ;
TI = 0
;
}
}
4 实物制作
为验证基于单片机和
Arduino
平台的六自由度可控机械手臂设计方案的正确性和可行性,
设计制作了六自由度可控机械手臂的实物。
基于单片机和
Arduino
平台的六自由度可控机械手臂的实物如图 4
所示
,
图中展示了利用该机械手臂书写
(
绘制
)
大写字母“M
”
的过程和结果。
5 结束语
为降低复杂机械手臂的设计难度和开发难度
,
快速开发设计简单高效的可控机械手臂,
本文设计一种基于单片机和
Arduino平台的六自由度可控机械手臂。
在该机械手臂控制方案中
,
通过购买基于 Arduino
平台的舵机控制板
,
充分发挥了
Arduino
开源硬件电路板的技术开放优势和设计制造优势。
在此基础上
,
利用单片机系统作为控制系统的控制核心,
快速完成六自由度可控机械手臂的方案设计、
硬件开发
、
软件编程和实物制作的全过程
。
特别地
,
为了验证可控机械手臂设计方案的正确性和可行性,
设计制作了基于单片机和
Arduino
平台的六自由度可控机械手臂的实物,
并利用该机械手臂实物书写
(
绘制
)
大写字母
“
M
”。设计过程与实物应用效果均表明: 基于单片机和 Arduino 平台设
计制作六自由度可控机械手臂,
可以降低机械手臂的设计开发难度,
达到快速应用机械手臂的目的
,
是一种有效的开发设计途径
。在校本科学生参与了可控机械手臂的设计过程和本论文的写作过程,
提高了学生将理论知识应用于实践开发的能力
,
也培养了学生的科技创新能力。