王偉
(陽煤集團(tuán)太原化工新材料有限公司,山西太原0330006)
機(jī)械手臂是一種應(yīng)用非常廣泛的自動(dòng)化機(jī)械裝置,且目前在自動(dòng)化制造、救援、醫(yī)療、農(nóng)業(yè)和商業(yè)等領(lǐng)域都得到了廣泛應(yīng)用。隨著開源硬件的研發(fā),設(shè)計(jì)人員進(jìn)入機(jī)械電子學(xué)領(lǐng)域的難度明顯降低。其中,以Arduino平臺(tái)的發(fā)展最為迅猛。它是一款涵蓋軟、硬件的開源電子原型平臺(tái),允許設(shè)計(jì)人員按需改進(jìn)調(diào)整核心庫文件、軟件、硬件原理圖及電路圖。據(jù)此,本文筆者設(shè)計(jì)一款基于單片機(jī)的六自由度機(jī)械手臂,并重點(diǎn)論述機(jī)械手臂控制系統(tǒng)的設(shè)計(jì)。
圖1所示是機(jī)械手臂控制系統(tǒng)的結(jié)構(gòu)圖。
圖1 機(jī)械手臂控制系統(tǒng)結(jié)構(gòu)圖
結(jié)合圖1,機(jī)械手臂是由機(jī)械系統(tǒng)、電氣系統(tǒng)組成。機(jī)械系統(tǒng)是由旋轉(zhuǎn)關(guān)節(jié)、機(jī)械連桿等串接而成的串聯(lián)式開鏈結(jié)構(gòu),其中關(guān)節(jié)的軸線存在相互垂直或平行的關(guān)系,能使相連連桿實(shí)現(xiàn)相對(duì)運(yùn)動(dòng)。電氣系統(tǒng)是機(jī)械手臂的控制系統(tǒng),具體由單片機(jī)、舵機(jī)及舵機(jī)控制板系統(tǒng)等組成。其中,單片機(jī)系統(tǒng)負(fù)責(zé)下發(fā)機(jī)械手臂的控制指令。舵機(jī)系統(tǒng)由6個(gè)舵機(jī)組成,用于完成機(jī)械手臂的具體動(dòng)作,以調(diào)控其六個(gè)自由度。舵機(jī)控制板是基于Arduino的開源硬件電路板,負(fù)責(zé)接收源自單片機(jī)系統(tǒng)的控制指令及以放大信號(hào)的方式驅(qū)動(dòng)各舵機(jī)。綜上設(shè)計(jì)方案,分別從軟、硬件的角度出發(fā),探討基于單片機(jī)的機(jī)械手臂控制系統(tǒng)設(shè)計(jì)[1-2]。
在機(jī)械手臂控制系統(tǒng)中,單片機(jī)系統(tǒng)是最為核心的控制裝置,其由單片機(jī)、電源模塊、按鍵電路、晶振電路及復(fù)位電路等組成。本設(shè)計(jì)選取80C51型單片機(jī)為主控制器,并將石英晶體振蕩電路接入單片機(jī)的XTAL1、2端口,將復(fù)位電路接入RST端口,將LCD顯示器LM016L接入P0.0-7端口,途徑上拉電阻,而其作用是顯示指令代碼[3]。
機(jī)械手臂的舵機(jī)系統(tǒng)由腕關(guān)節(jié)1與2舵機(jī)、肘關(guān)節(jié)1與2舵機(jī)、肩關(guān)節(jié)舵機(jī)及底座舵機(jī)等組成。本設(shè)計(jì)選取LF-20MG型舵機(jī),其是一種直流電動(dòng)機(jī),工作電壓4.8~6.6 V、扭矩范圍1.62~1.96 N·m,以向機(jī)械手臂提供動(dòng)作所需的扭矩[4]。
在機(jī)械手臂控制系統(tǒng)中,舵機(jī)控制板屬于從機(jī),即其僅可接受指令或執(zhí)行預(yù)設(shè)的命令。據(jù)此,舵機(jī)控制板先從單片機(jī)處獲得控制指令,再完成舵機(jī)控制。為了充分挖掘Arduino開源硬件電路板的優(yōu)勢,本設(shè)計(jì)決定從Arduino平臺(tái)直接購入舵機(jī)控制板,見圖2。
結(jié)合圖2,舵機(jī)控制板右上角的GND、TXD、RXD接口與單片機(jī)的GND、TXD、RXD端口對(duì)應(yīng)連接,負(fù)責(zé)接收源自單片機(jī)系統(tǒng)的控制指令;S1-32組合端口分別與32個(gè)舵機(jī)連接,且每一組合端口的S、+、-端口與每一舵機(jī)的信號(hào)控制極、電源正、負(fù)極對(duì)應(yīng)連接。
圖2 舵機(jī)控制板
對(duì)于機(jī)械手臂控制系統(tǒng),其軟件設(shè)計(jì)的任務(wù)是先由單片機(jī)系統(tǒng)按機(jī)械手臂的動(dòng)作要求編寫動(dòng)作指令,再發(fā)送至舵機(jī)控制板,然后由舵機(jī)控制板對(duì)舵機(jī)進(jìn)行控制,繼而實(shí)現(xiàn)機(jī)械手臂的具體動(dòng)作。例如,機(jī)械手臂在繪制“M”時(shí),首先,計(jì)算、設(shè)置通信端口的參數(shù);其次,計(jì)算每一舵機(jī)在機(jī)械手臂夾緊時(shí)的旋轉(zhuǎn)角度,并設(shè)置、輸出夾緊動(dòng)作組合;第三,依次計(jì)算每一舵機(jī)在機(jī)械手臂繪制“M”的第一筆畫(右上長直線)、第二筆畫(右下短直線)、第三筆畫(右上短直線)、第四筆畫(右上短直線)時(shí)的旋轉(zhuǎn)角度,并分別設(shè)置、輸出每一筆畫的動(dòng)作組合;第四,計(jì)算每一舵機(jī)在機(jī)械手臂釋放時(shí)的旋轉(zhuǎn)角度,并設(shè)置、輸出釋放動(dòng)作組合[5-6]。在整個(gè)過程中,需要注意下列要點(diǎn):
機(jī)械手臂控制系統(tǒng)的單片機(jī)采取串行方式與舵機(jī)控制板實(shí)現(xiàn)通信。依據(jù)通信協(xié)議,停止位1位、數(shù)據(jù)位8位、無校驗(yàn)位、TTL電平及波特率9 600 bps。據(jù)此,要求采取下列公式算得串行端口定時(shí)器的初始值X:
其中,n表示定時(shí)器位數(shù);SMOD表示串行端口控制寄存器的最高位;fOSC表示單片機(jī)時(shí)鐘的頻率;Baud表示串行接口通信的波特率。據(jù)此,倘若n=8位、Baud=9 600 bps、SMOD=1及fOSC=11.059 2 MHz,則X=250=FA,這是一個(gè)十六進(jìn)制數(shù)據(jù)。
對(duì)于單片機(jī)串行通信端口,其初始化程序如下:
viod artInitial ization()
{
SCON=0x50;//8位異步串行通信口,模式1
PDON|=0x80;//SMOD=“1”
TMOD|=0x20;//定時(shí)器1,模式2,8位重裝
TH1=OxFA;//定時(shí)器初始值高8位
TL1=OxFA;//定時(shí)器初始值低8位
IE|=0x90;//允許串行中斷
TR1=1;//啟動(dòng)定時(shí)器1
EA=1;//允許所有中斷
}
在機(jī)械手臂控制系統(tǒng)軟件設(shè)計(jì)中,要求通過單片機(jī)確定舵機(jī)角度控制的設(shè)置值,且其與舵機(jī)角度的位置值存在下列運(yùn)算關(guān)系:
式中:Ax表示舵機(jī)角度控制的設(shè)置值;Nx表示舵機(jī)角度位置值;Am、A0表示Ax的上限與下限;Nm、N0表示Nx的上限與下限。倘若Am、A0的數(shù)值分別是2500、500及Nm、N0的數(shù)值分別是180°、0°,則要想使Nx=90°,要求單片機(jī)程序軟件的Ax=1500。
舵機(jī)控制板是實(shí)現(xiàn)單片機(jī)控制舵機(jī)運(yùn)行的關(guān)鍵。例如,在控制單個(gè)舵機(jī)時(shí),舵機(jī)角度控制的設(shè)置值按#1P1500T100 的格式編程。其中,1表示舵機(jī)通道;1500表示舵機(jī)角度控制的設(shè)置值或指舵機(jī)旋轉(zhuǎn)的角度,一般在500~2500之間取值;100表示執(zhí)行時(shí)間,一般在100~9 999 ms之間取值。據(jù)此,單片機(jī)控制舵機(jī)角度的編程如下:
void main()
{
Uart Initialization();//串行通信端口初始化
Uart Send String(“#1P1500T100 ”);//S1號(hào)舵機(jī)在100 ms內(nèi)旋轉(zhuǎn)90°
while(1);
}
void Uart Send String(uchar*pStr)//串行通信端口發(fā)送一個(gè)字符串
{
while(*pStr!=0)
{
SBUF=*pStr++
while9=(T1=0);
T1=0;
}
}
1)通過設(shè)計(jì)制作的實(shí)物可知,文中提出的基于單片機(jī)的六自由度機(jī)械手臂設(shè)計(jì)方案具有可行性,且準(zhǔn)確度很高。對(duì)于基于單片機(jī)的六自由度機(jī)械手臂控制方案,直接從Arduino平臺(tái)上購入舵機(jī)控制板,可使Arduino開源硬件電路板的設(shè)計(jì)、制造與技術(shù)開放優(yōu)勢得以充分發(fā)揮。據(jù)此,機(jī)械手臂控制系統(tǒng)以單片機(jī)系統(tǒng)為控制核心,可以快速完成方案設(shè)計(jì)、實(shí)物制作、硬件開發(fā)及軟件編程。
2)單片機(jī)與Arduino平臺(tái)為六自由度機(jī)械手臂控制系統(tǒng)的設(shè)計(jì)提供了一種難度更低的開發(fā)設(shè)計(jì)思路,可快速完成機(jī)械手臂的設(shè)計(jì)制作。
[1]張濤,王炎.基于單片機(jī)和Arduino平臺(tái)的六自由度可控機(jī)械手臂[J].電氣自動(dòng)化,2016(6):97-99;107.
[2]林森,呂慶軍,李金欣.基于PLC控制的五自由度機(jī)械手臂驅(qū)動(dòng)電機(jī)研制[J].產(chǎn)業(yè)與科技論壇,2017(3):44-45.
[3]王偉.淺析機(jī)械式自動(dòng)噴霧手臂的原理及方法[J].科學(xué)咨詢,2013(1):51-52.
[4]盛磊,黃永根.基于PC和單片機(jī)的物料自動(dòng)提取裝置設(shè)計(jì)與實(shí)現(xiàn)[J].科技創(chuàng)新與應(yīng)用,2013(19):10-11.
[5]謝明江,韓建文.基于多路舵機(jī)的素描機(jī)械手臂設(shè)計(jì)[J].軟件,2013(4):88-89;108.
[6]盧建設(shè),陳兆陽.基于單片機(jī)的多自由度機(jī)械手臂設(shè)計(jì)[J].科技創(chuàng)新與應(yīng)用,2013(3):115.