王偉
(陽煤集團太原化工新材料有限公司,山西太原0330006)
機械手臂是一種應用非常廣泛的自動化機械裝置,且目前在自動化制造、救援、醫療、農業和商業等領域都得到了廣泛應用。隨著開源硬件的研發,設計人員進入機械電子學領域的難度明顯降低。其中,以Arduino平臺的發展最為迅猛。它是一款涵蓋軟、硬件的開源電子原型平臺,允許設計人員按需改進調整核心庫文件、軟件、硬件原理圖及電路圖。據此,本文筆者設計一款基于單片機的六自由度機械手臂,并重點論述機械手臂控制系統的設計。
圖1所示是機械手臂控制系統的結構圖。

圖1 機械手臂控制系統結構圖
結合圖1,機械手臂是由機械系統、電氣系統組成。機械系統是由旋轉關節、機械連桿等串接而成的串聯式開鏈結構,其中關節的軸線存在相互垂直或平行的關系,能使相連連桿實現相對運動。電氣系統是機械手臂的控制系統,具體由單片機、舵機及舵機控制板系統等組成。其中,單片機系統負責下發機械手臂的控制指令。舵機系統由6個舵機組成,用于完成機械手臂的具體動作,以調控其六個自由度。舵機控制板是基于Arduino的開源硬件電路板,負責接收源自單片機系統的控制指令及以放大信號的方式驅動各舵機。綜上設計方案,分別從軟、硬件的角度出發,探討基于單片機的機械手臂控制系統設計[1-2]。
在機械手臂控制系統中,單片機系統是最為核心的控制裝置,其由單片機、電源模塊、按鍵電路、晶振電路及復位電路等組成。本設計選取80C51型單片機為主控制器,并將石英晶體振蕩電路接入單片機的XTAL1、2端口,將復位電路接入RST端口,將LCD顯示器LM016L接入P0.0-7端口,途徑上拉電阻,而其作用是顯示指令代碼[3]。
機械手臂的舵機系統由腕關節1與2舵機、肘關節1與2舵機、肩關節舵機及底座舵機等組成。本設計選取LF-20MG型舵機,其是一種直流電動機,工作電壓4.8~6.6 V、扭矩范圍1.62~1.96 N·m,以向機械手臂提供動作所需的扭矩[4]。
在機械手臂控制系統中,舵機控制板屬于從機,即其僅可接受指令或執行預設的命令。據此,舵機控制板先從單片機處獲得控制指令,再完成舵機控制。為了充分挖掘Arduino開源硬件電路板的優勢,本設計決定從Arduino平臺直接購入舵機控制板,見圖2。
結合圖2,舵機控制板右上角的GND、TXD、RXD接口與單片機的GND、TXD、RXD端口對應連接,負責接收源自單片機系統的控制指令;S1-32組合端口分別與32個舵機連接,且每一組合端口的S、+、-端口與每一舵機的信號控制極、電源正、負極對應連接。

圖2 舵機控制板
對于機械手臂控制系統,其軟件設計的任務是先由單片機系統按機械手臂的動作要求編寫動作指令,再發送至舵機控制板,然后由舵機控制板對舵機進行控制,繼而實現機械手臂的具體動作。例如,機械手臂在繪制“M”時,首先,計算、設置通信端口的參數;其次,計算每一舵機在機械手臂夾緊時的旋轉角度,并設置、輸出夾緊動作組合;第三,依次計算每一舵機在機械手臂繪制“M”的第一筆畫(右上長直線)、第二筆畫(右下短直線)、第三筆畫(右上短直線)、第四筆畫(右上短直線)時的旋轉角度,并分別設置、輸出每一筆畫的動作組合;第四,計算每一舵機在機械手臂釋放時的旋轉角度,并設置、輸出釋放動作組合[5-6]。在整個過程中,需要注意下列要點:
機械手臂控制系統的單片機采取串行方式與舵機控制板實現通信。依據通信協議,停止位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;//允許所有中斷
}
在機械手臂控制系統軟件設計中,要求通過單片機確定舵機角度控制的設置值,且其與舵機角度的位置值存在下列運算關系:

式中: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;
}
}
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.