基于单片机的机械手臂控制系统设计
2018-01-30王伟
王伟
(阳煤集团太原化工新材料有限公司,山西太原0330006)
引言
机械手臂是一种应用非常广泛的自动化机械装置,且目前在自动化制造、救援、医疗、农业和商业等领域都得到了广泛应用。随着开源硬件的研发,设计人员进入机械电子学领域的难度明显降低。其中,以Arduino平台的发展最为迅猛。它是一款涵盖软、硬件的开源电子原型平台,允许设计人员按需改进调整核心库文件、软件、硬件原理图及电路图。据此,本文笔者设计一款基于单片机的六自由度机械手臂,并重点论述机械手臂控制系统的设计。
1 设计方案
图1所示是机械手臂控制系统的结构图。
图1 机械手臂控制系统结构图
结合图1,机械手臂是由机械系统、电气系统组成。机械系统是由旋转关节、机械连杆等串接而成的串联式开链结构,其中关节的轴线存在相互垂直或平行的关系,能使相连连杆实现相对运动。电气系统是机械手臂的控制系统,具体由单片机、舵机及舵机控制板系统等组成。其中,单片机系统负责下发机械手臂的控制指令。舵机系统由6个舵机组成,用于完成机械手臂的具体动作,以调控其六个自由度。舵机控制板是基于Arduino的开源硬件电路板,负责接收源自单片机系统的控制指令及以放大信号的方式驱动各舵机。综上设计方案,分别从软、硬件的角度出发,探讨基于单片机的机械手臂控制系统设计[1-2]。
2 硬件设计
2.1 单片机系统
在机械手臂控制系统中,单片机系统是最为核心的控制装置,其由单片机、电源模块、按键电路、晶振电路及复位电路等组成。本设计选取80C51型单片机为主控制器,并将石英晶体振荡电路接入单片机的XTAL1、2端口,将复位电路接入RST端口,将LCD显示器LM016L接入P0.0-7端口,途径上拉电阻,而其作用是显示指令代码[3]。
2.2 舵机系统
机械手臂的舵机系统由腕关节1与2舵机、肘关节1与2舵机、肩关节舵机及底座舵机等组成。本设计选取LF-20MG型舵机,其是一种直流电动机,工作电压4.8~6.6 V、扭矩范围1.62~1.96 N·m,以向机械手臂提供动作所需的扭矩[4]。
2.3 舵机控制板
在机械手臂控制系统中,舵机控制板属于从机,即其仅可接受指令或执行预设的命令。据此,舵机控制板先从单片机处获得控制指令,再完成舵机控制。为了充分挖掘Arduino开源硬件电路板的优势,本设计决定从Arduino平台直接购入舵机控制板,见图2。
结合图2,舵机控制板右上角的GND、TXD、RXD接口与单片机的GND、TXD、RXD端口对应连接,负责接收源自单片机系统的控制指令;S1-32组合端口分别与32个舵机连接,且每一组合端口的S、+、-端口与每一舵机的信号控制极、电源正、负极对应连接。
图2 舵机控制板
3 软件设计
对于机械手臂控制系统,其软件设计的任务是先由单片机系统按机械手臂的动作要求编写动作指令,再发送至舵机控制板,然后由舵机控制板对舵机进行控制,继而实现机械手臂的具体动作。例如,机械手臂在绘制“M”时,首先,计算、设置通信端口的参数;其次,计算每一舵机在机械手臂夹紧时的旋转角度,并设置、输出夹紧动作组合;第三,依次计算每一舵机在机械手臂绘制“M”的第一笔画(右上长直线)、第二笔画(右下短直线)、第三笔画(右上短直线)、第四笔画(右上短直线)时的旋转角度,并分别设置、输出每一笔画的动作组合;第四,计算每一舵机在机械手臂释放时的旋转角度,并设置、输出释放动作组合[5-6]。在整个过程中,需要注意下列要点:
3.1 通信端口参数的计算与编程
机械手臂控制系统的单片机采取串行方式与舵机控制板实现通信。依据通信协议,停止位1位、数据位8位、无校验位、TTL电平及波特率9 600 bps。据此,要求采取下列公式算得串行端口定时器的初始值X:
其中,n表示定时器位数;SMOD表示串行端口控制寄存器的最高位;fOSC表示单片机时钟的频率;Baud表示串行接口通信的波特率。据此,倘若n=8位、Baud=9 600 bps、SMOD=1及fOSC=11.059 2 MHz,则X=250=FA,这是一个十六进制数据。
对于单片机串行通信端口,其初始化程序如下:
viod artInitial ization()
{
SCON=0x50;//8位异步串行通信口,模式1
PDON|=0x80;//SMOD=“1”
TMOD|=0x20;//定时器1,模式2,8位重装
TH1=OxFA;//定时器初始值高8位
TL1=OxFA;//定时器初始值低8位
IE|=0x90;//允许串行中断
TR1=1;//启动定时器1
EA=1;//允许所有中断
}
3.2 舵机角度控制设置值的计算与编程
在机械手臂控制系统软件设计中,要求通过单片机确定舵机角度控制的设置值,且其与舵机角度的位置值存在下列运算关系:
式中:Ax表示舵机角度控制的设置值;Nx表示舵机角度位置值;Am、A0表示Ax的上限与下限;Nm、N0表示Nx的上限与下限。倘若Am、A0的数值分别是2500、500及Nm、N0的数值分别是180°、0°,则要想使Nx=90°,要求单片机程序软件的Ax=1500。
舵机控制板是实现单片机控制舵机运行的关键。例如,在控制单个舵机时,舵机角度控制的设置值按#1P1500T100 的格式编程。其中,1表示舵机通道;1500表示舵机角度控制的设置值或指舵机旋转的角度,一般在500~2500之间取值;100表示执行时间,一般在100~9 999 ms之间取值。据此,单片机控制舵机角度的编程如下:
void main()
{
Uart Initialization();//串行通信端口初始化
Uart Send String(“#1P1500T100 ”);//S1号舵机在100 ms内旋转90°
while(1);
}
void Uart Send String(uchar*pStr)//串行通信端口发送一个字符串
{
while(*pStr!=0)
{
SBUF=*pStr++
while9=(T1=0);
T1=0;
}
}
4 结论
1)通过设计制作的实物可知,文中提出的基于单片机的六自由度机械手臂设计方案具有可行性,且准确度很高。对于基于单片机的六自由度机械手臂控制方案,直接从Arduino平台上购入舵机控制板,可使Arduino开源硬件电路板的设计、制造与技术开放优势得以充分发挥。据此,机械手臂控制系统以单片机系统为控制核心,可以快速完成方案设计、实物制作、硬件开发及软件编程。
2)单片机与Arduino平台为六自由度机械手臂控制系统的设计提供了一种难度更低的开发设计思路,可快速完成机械手臂的设计制作。
[1]张涛,王炎.基于单片机和Arduino平台的六自由度可控机械手臂[J].电气自动化,2016(6):97-99;107.
[2]林森,吕庆军,李金欣.基于PLC控制的五自由度机械手臂驱动电机研制[J].产业与科技论坛,2017(3):44-45.
[3]王伟.浅析机械式自动喷雾手臂的原理及方法[J].科学咨询,2013(1):51-52.
[4]盛磊,黄永根.基于PC和单片机的物料自动提取装置设计与实现[J].科技创新与应用,2013(19):10-11.
[5]谢明江,韩建文.基于多路舵机的素描机械手臂设计[J].软件,2013(4):88-89;108.
[6]卢建设,陈兆阳.基于单片机的多自由度机械手臂设计[J].科技创新与应用,2013(3):115.