高紅紅,馬保吉,楊 恒,李志超
(西安工業(yè)大學機電工程學院,陜西西安 710032)
隨著計算機技術(shù)的快速發(fā)展,機器人技術(shù)應(yīng)用到多領(lǐng)域。機器人是一種仿人操作、自動控制、可重復(fù)編程、能在三維空間完成各種作業(yè)的機電一體化設(shè)備[1],可以代替人類在一些惡劣、危險的環(huán)境中工作[2],例如:焊接和自動噴漆,處理爆炸物和放射性物質(zhì)等。在工業(yè)生產(chǎn)中,機械手常用于批量生產(chǎn)和重復(fù)性工作場合,進行零件的搬運、分揀和裝配等,從而降低生產(chǎn)成本和工人的勞動強度,減少安全事故[3]。高精度的機械臂也可以應(yīng)用于一些控制較精密的行業(yè),如精密裝配等[4],減小人工隨機誤差,提高工作精度和產(chǎn)品質(zhì)量。機械臂的靈活性與其自由度密切相關(guān),多自由度機械臂要實現(xiàn)空間內(nèi)物體的準確抓取,很大程度上取決于控制系統(tǒng)的控制精度[5]。陳楊洋等設(shè)計了基于自定義總線控制的機械臂控制系統(tǒng),采用主從式控制實現(xiàn)了三自由度機械臂的控制,并利用三坐標測量儀對機械臂末端的三維坐標進行了測量,結(jié)果表明機械臂的末端誤差在4 mm以內(nèi)[6]。劉牧歌對五自由度搬運機械手關(guān)鍵技術(shù)進行了研究,通過PLC控制伺服電機驅(qū)動機械手動作,手腕回轉(zhuǎn)的點動控制精度為36°[7]。龍騰設(shè)計了一種以STM32F4為主控制器、陀螺儀傳感器為關(guān)節(jié)狀態(tài)檢測器,由舵機驅(qū)動的六自由度機械臂控制系統(tǒng),得到系統(tǒng)運動誤差的最大值為18 mm[8]。王緒全對六自由度機械手抓取定位精度進行研究,發(fā)現(xiàn)機械手雖然達到預(yù)期的控制目標,但抓取精度有待提高[9]。因此,提高機械手的控制精度是實際應(yīng)用中需要重點解決的問題。機械手的控制精度不僅與舵機本身的精度密切相關(guān),而且與機械結(jié)構(gòu)、控制電路和程序有關(guān)。
針對教學用自動化生產(chǎn)線實訓系統(tǒng)的人工上料環(huán)節(jié),擬配備機械手進行物料的抓取和放置。本文設(shè)計了以單片機IAP15W4K58S4為核心的機械臂控制系統(tǒng),主要包括電源接口電路、程序下載電路和無線信號收發(fā)電路的設(shè)計,以及部分程序模塊的編寫,實現(xiàn)PWM舵機驅(qū)動六自由度機械臂抓取料倉內(nèi)的物料并放到上料轉(zhuǎn)盤上。單片機輸出的PWM信號進入舵機內(nèi)部后,與舵機內(nèi)部的基準信號相比較,產(chǎn)生一個有大小和方向的壓差信號,該信號驅(qū)動減速齒輪和舵盤轉(zhuǎn)動,位置反饋電位器反饋相應(yīng)的電壓給控制系統(tǒng),使得電機旋轉(zhuǎn)一定的角度[10]。單片機編程使PWM信號的脈沖寬度實現(xiàn)μs級的變化,從而提高舵機的轉(zhuǎn)角精度,改善控制系統(tǒng)的控制精度。通過Proteus仿真PWM舵機的輸出結(jié)果,輔助分析程序的正確性以及預(yù)測舵機運行結(jié)果。因為各個關(guān)節(jié)的運動有交互影響,所以通過正交試驗測試機械臂末端中心的位置,與理論推測位置相比較,得到定位誤差。
常見機械臂的運動坐標形式有4種:直角坐標型、圓柱坐標型、極坐標型和多關(guān)節(jié)型,其中圓柱坐標型和多關(guān)節(jié)型在工業(yè)機械臂中最常見[11-12]。多關(guān)節(jié)型機械臂多用于小型空間、輕載和靈活性較高的場合。本設(shè)計中,物料分層放置于長方形料倉中,機械手固定在工作臺上,其中心位于料倉與上料臺之間,被抓取物料的質(zhì)量不超過0.5 kg,所以選擇多關(guān)節(jié)型機械臂。為了實現(xiàn)長方形料倉中上下、前后、左右物料的抓取,機械臂需要6個自由度,實現(xiàn)水平面內(nèi)的轉(zhuǎn)動,垂直俯仰和屈曲,手抓旋轉(zhuǎn)和開合[12],對應(yīng)機械臂的底座±90°旋轉(zhuǎn),大臂、小臂和手腕±90°屈曲,手抓±90°旋轉(zhuǎn)及±90°開合。因此,該關(guān)節(jié)型機械臂的6個轉(zhuǎn)動關(guān)節(jié)如圖1所示,其中,關(guān)節(jié)1實現(xiàn)機械臂底座在水平面內(nèi)的旋轉(zhuǎn),關(guān)節(jié)(2、3和4)分別實現(xiàn)大臂、小臂和手腕的屈曲,關(guān)節(jié)(5和6)分別實現(xiàn)手抓的旋轉(zhuǎn)和開合。由于舵機具有時間常數(shù)小、起步轉(zhuǎn)矩大、線性度好、反應(yīng)迅速等特點[13],本設(shè)計采用6個齒輪舵機驅(qū)動6個關(guān)節(jié)動作,通過精密電位器檢測舵機的轉(zhuǎn)角,實現(xiàn)料倉內(nèi)指定位置物料的抓取和放置。
圖1 六自由度機械臂示意圖
系統(tǒng)的最終控制對象是PWM舵機,其控制信號是占空比可調(diào)的PWM波。鑒于單片機編程較靈活,可以產(chǎn)生精度較高和較穩(wěn)定的PWM信號,所以本設(shè)計采用單片機作為主控芯片來控制PWM舵機。根據(jù)PWM波的產(chǎn)生和串行通信的方式,對單片機進行選型。STC的IAP15W系列單片機是一種寬電壓(2.5~5.5 V)、高速、高可靠性、低功耗的中央處理單元,有8路PWM,4組超高速異步串行通信口和1組高速同步串行通信端口SPI[14],可以滿足本設(shè)計的要求。因此,采用STC的IAP15W4K58S4單片機作為主控芯片,實現(xiàn)多個舵機的同時控制。
機械臂控制電路主要包括單片機IAP15W4K58S4最小系統(tǒng)、電源電路、程序下載電路、按鍵電路、無線信號收發(fā)電路等,如圖2所示。舵機和單片機有各自的電源電路,以保證輸出電壓穩(wěn)定在各自的電源范圍內(nèi),不受輸入電壓波動的影響。程序下載電路實現(xiàn)計算機與單片機之間的串行通信,用于計算機給單片機下載程序和發(fā)送控制指令。程序下載到單片機后,通過鍵盤電路的按鍵控制舵機的轉(zhuǎn)角。通過無線信號收發(fā)電路,實現(xiàn)手柄對舵機的遙控。
圖2 機械臂控制系統(tǒng)組成框圖
IAP15W4K58S4單片機雖然有片內(nèi)晶振和復(fù)位電路,但片內(nèi)晶振的精度不高,為了保證系統(tǒng)的工作時序和信號傳輸?shù)臏蚀_性,本設(shè)計增加片外晶振電路,如圖3所示。為了方便人為操作單片機系統(tǒng)從預(yù)先設(shè)定的起始狀態(tài)開始工作,增加按鍵復(fù)位電路,與上電復(fù)位電路一起作為外部復(fù)位電路,如圖4所示。
圖3 晶振電路
圖4 復(fù)位電路
機械臂控制系統(tǒng)中,舵機的工作電壓為6 V,單片機的工作電壓為5 V,無線通信芯片的工作電壓為3.3 V。為了使各個器件都能在對應(yīng)的工作電壓下正常工作,設(shè)計了具有不同輸出電壓的電源電路。系統(tǒng)電源采用2節(jié)18650鋰電池串聯(lián),得到7.4 V供電電壓。舵機電源電路采用XL4016開關(guān)降壓型DC-DC轉(zhuǎn)換芯片,將7.4 V供電電壓降為6 V并穩(wěn)壓(圖5);5 V電源電路采用AMS1117-5.0正向壓降穩(wěn)壓器,將7.4 V電壓降為5 V并穩(wěn)壓(圖6);3.3 V電源電路采用AMS1117-3.3正向穩(wěn)壓器,將5 V電壓再降為3.3 V并穩(wěn)壓(3.3 V與5 V電源電路的原理相似)。
圖5 舵機6 V電源電路
圖6 單片機5 V電源電路
IAP15W4K58S4單片機有4個全雙工異步串行口,計算機可以通過單片機的串行口實現(xiàn)程序的下載。計算機通過USB口連接到程序下載電路,如圖7所示,CH340G將計算機發(fā)來的USB電平信號轉(zhuǎn)換為TTL電平信號后,通過串口連接到單片機的RXD1和TXD1串行口,實現(xiàn)計算機給單片機下載程序的功能。
圖7 程序下載電路
目前有多種無線通訊模塊,如WiFi、藍牙、ZigBee等??紤]到手柄遙控距離不超過5 m,本設(shè)計選用2.4~2.48 GHz頻段的低功耗無線射頻收發(fā)芯片NRF24L01,其工作電壓為1.9~3.6 V(通過3.3 V穩(wěn)壓電路供電)[14-15],編程簡單,與無線信號收發(fā)電路的主控單片機STC12C5A60S2實現(xiàn)無線通信,如圖8所示,將NRF24L01的引腳3~8連接到STC12C5A60S2對應(yīng)的接口上,STC12C5A60S2將從NRF24L01接收到的信號進行處理后,再通過串行口TXD和RXD連接到IAP15W4K58S4的RXD2和TXD2,進行全雙工通信,實現(xiàn)對手柄遙控信號的收發(fā)。
圖8 無線信號收發(fā)電路
采用模塊化程序設(shè)計思路,控制程序由主程序、A/D轉(zhuǎn)換子程序、串口通信子程序、PWM舵機控制子程序、定時器中斷子程序及按鍵子程序等模塊組成。其中,A/D轉(zhuǎn)換子程序?qū)╇婋娫措妷哼M行實時監(jiān)測,如有異常通過蜂鳴器報警;串口通信子程序?qū)崿F(xiàn)IAP15W4K58S4和STC12C5A60S2之間的通信,從而接收遙控手柄的控制信號;PWM舵機控制子程序通過單片機的定時器控制PWM波高電平的輸出時間,從而改變PWM信號的占空比,達到控制舵機轉(zhuǎn)角的目的。
主程序中,先進行主函數(shù)全局變量和局部變量的聲明、子程序聲明、引腳設(shè)置(準雙向口工作模式)等。再進行舵機PWM初始化、A/D轉(zhuǎn)換初始化、串口初始化、定時器初始化、蜂鳴器初始化等。隨后開啟中斷,程序進入循環(huán)執(zhí)行狀態(tài),直到人為按鍵或斷電停止。主程序流程如圖9所示。
圖9 主程序流程
通過IAP15W4K58S4自帶的A/D轉(zhuǎn)換子程序獲得電源電壓值,并判斷電源電壓是否低于系統(tǒng)設(shè)定值7.2 V,若低于設(shè)定值,則啟動蜂鳴器報警,實現(xiàn)對鋰電池輸出電壓的監(jiān)測。
串口通信子程序中,串口初始化后執(zhí)行串口中斷程序,每次接收4個字節(jié)存入緩沖區(qū)。當串口接收完標志fUartRxComplete為1時,表示數(shù)據(jù)接收完畢,然后執(zhí)行Task_MCUHandle()函數(shù),實現(xiàn)手柄對舵機的控制。串口通信子程序流程如圖10所示。
圖10 串口通信子程序流程
舵機需要的PWM控制信號是周期為20 ms的方波,通過單片機的定時器輸出高電平時間在0.5~2.5 ms內(nèi)變化的PWM信號,驅(qū)動舵機在-90°~90°之間轉(zhuǎn)動。PWM舵機控制子程序中,首先對舵機控制變量和定時器0初始化,進入定時器0中斷程序后,判斷循環(huán)次數(shù)i的值,若i<12,則根據(jù)舵機初始位置數(shù)組值,對定時器0進行重裝;若i≥12,則將ServoPwmDutyHaveChange置1,說明6個舵機均已到達目標位置。PWM舵機控制子程序的流程如圖11所示。
圖11 PWM舵機控制程序流程
單片機可以給6路舵機同時發(fā)送PWM信號,實現(xiàn)6路舵機的同時運行,模擬實際中多個關(guān)節(jié)的協(xié)調(diào)運動。為了更直觀地觀察PWM程序控制舵機旋轉(zhuǎn)的角度,對PWM子程序進行軟件仿真。首先在Keil中編輯程序,經(jīng)編譯連接后生成hex文件,再將該文件下載到單片機。仿真時,舵機選用Proteus中的MOTOR-PWMSERVO,運行后得到Proteus仿真結(jié)果(圖12),每個舵機下方顯示的數(shù)字仿真結(jié)果對應(yīng)各自旋轉(zhuǎn)的角度。
圖12 Proteus電路仿真結(jié)果
Proteus自帶的虛擬示波器可以顯示仿真的PWM波形,據(jù)此初步判斷PWM控制程序和改變占空比時PWM波形的變化是否正確。PWM程序的示波器仿真結(jié)果如圖13所示,示波器輸出的PWM波形呈周期性矩形波,符合PWM舵機的控制要求,初步確定舵機能正常運行。
圖13 PWM波形仿真結(jié)果
將調(diào)試好的電路與機械臂的各個舵機連接,將前5個舵機的旋轉(zhuǎn)角度分別作為1個控制因素(第6個舵機控制的是手抓的開合),將每個舵機的旋轉(zhuǎn)角度(-90°~90°)等距設(shè)置為4個水平(-90°,-30°,30°,90°),開展5因素4水平的16組正交試驗,將所有舵機的初始位置調(diào)整到其可達范圍的中間(0°),通過程序控制5個舵機運動對應(yīng)的角度,測量機械臂末端中心(不含手抓)在空間3個方向的位置,并與理論計算的空間位置相比較,所得偏差即為定位誤差,得到3個方向的定位誤差均在-2~2 mm范圍內(nèi)。
本文主要對自動化生產(chǎn)線實訓系統(tǒng)上料環(huán)節(jié)的六自由度上料機械手的控制系統(tǒng)進行研究,所得主要結(jié)論如下:
(1)從機械臂的結(jié)構(gòu)形式和驅(qū)動形式出發(fā),確定采用關(guān)節(jié)型機械臂和齒輪傳動PWM舵機,通過改變PWM信號的占空比來控制各個關(guān)節(jié)舵機旋轉(zhuǎn)的角度。
(2)機械臂控制系統(tǒng)選擇IAP15WK458S4作為主控芯片,硬件電路采用模塊化設(shè)計,包括電源電路、單片機晶振電路、復(fù)位電路、程序下載電路、無線信號收發(fā)電路等,實現(xiàn)了不同電路模塊電源電壓的供給和監(jiān)測、計算機程序的下載、手柄遙控信號的傳輸?shù)裙δ堋?/p>
(3)采用模塊化程序設(shè)計思路,對機械臂控制程序進行了設(shè)計。主要包括主程序、A/D轉(zhuǎn)換子程序、串口通信子程序和PWM舵機控制子程序。利用Proteus對PWM舵機控制子程序進行了仿真,發(fā)現(xiàn)6路舵機可以按照指令要求同時協(xié)調(diào)工作。
(4)通過正交試驗測試機械臂末端中心在前5個關(guān)節(jié)舵機驅(qū)動下的定位誤差,多次實驗運行結(jié)果表明當負載在0.5 kg范圍內(nèi),機械臂末端中心3個方向的定位誤差都不超過2 mm。