羅永超,郭耿斌,黃世一,黃子朋,陳楷昀
(廣州城市理工學院電氣工程學院,廣東廣州,510800)
機械手與各項傳感器協(xié)同工作是智能機器人應用技術領域的重要發(fā)展方向之一,它是廣泛應用于實際生產(chǎn)的自動化機械裝置。
基于單片機的多軸機械手的功能開發(fā),可解決工業(yè)化生產(chǎn)中重復單一的簡單工作,減少人力資源,同時可以更加精確地控制生產(chǎn)節(jié)奏,在嚴峻的工作環(huán)境下也不會降低生產(chǎn)效率,提高經(jīng)濟效應,促進產(chǎn)業(yè)結構優(yōu)化升級。
本文設計的機械手控制系統(tǒng),它通過單片機產(chǎn)生的PWM信號對機械手上各舵機的控制,從而實現(xiàn)機械手的高精度、高自由度精確運動與抓取功能,如果將機械手末端抓取模塊進行更換,可改變其功能與用途,例如吸盤、噴涂等。該機械手控制系統(tǒng)允許開發(fā)者根據(jù)自己需求與設計思路進行調(diào)整,提高了對多軸機械手功能開發(fā)效率,使機械手能廣泛應用于工業(yè)生產(chǎn)控制中[2]。
機械手主要由機械爪、運動系統(tǒng)和控制系統(tǒng)組成,而本部分主要探究的是機械爪及其工作參數(shù)的說明[3]。
機械爪由運動元件、驅(qū)動元件、安裝底座和控制系統(tǒng)四大部分組成。
(1)運動元件指的是末端抓取物體的手指;
(2)驅(qū)動元件指的是驅(qū)動各個手指部位來實現(xiàn)對不同物體的抓取行為;
(3)安裝底座指的是用于和機械手臂進行安裝固定的借口部位;
(4)控制系統(tǒng)指的是每個手指通過傳感器接收和發(fā)送的信息與驅(qū)動文件的控制來做出相應的動作行為。本設計所研究的機械爪如圖1所示。
圖1 機械爪規(guī)格尺寸
機械爪的工作參數(shù)具體說明見表1。
表1 工作參數(shù)具體說明
1.2.1 舵機的組成
對于一套機械爪來說,一般需要多個舵機協(xié)同工作。通過單片機發(fā)送有效的PWM拓展模塊信號,以分時復用的方式輸出多個脈沖實現(xiàn)對舵機方向、角度、速度的轉(zhuǎn)換。一般來說舵機的組成結構分為舵盤、減速齒輪組、位置反饋檢測器、限位開關、直流伺服電機及控制電路板組成。由此本課題主要選用15kg*5+6kg*1串行總線智能舵機。
1.2.2 舵機的工作原理
舵機的運動系統(tǒng)是閉環(huán)反饋系統(tǒng)的一種,其原理可由圖2所示。
圖2 舵機的工作原理
舵機在工作時,控制電路會與輸入控制脈沖信號進行比較,此時生成的糾正脈沖會決定馬達轉(zhuǎn)動的方向,當齒輪組的輸出值與設定值匹配,舵機就會停止工作。
硬件電路是電路系統(tǒng)的重要組成部分,是實現(xiàn)機械手工作的基礎,也是整個設計的控制核心,硬件電路設計是否合理直接影響電路系統(tǒng)的性能。因此,根據(jù)本次設計的需求,決定采用STC15W系列單片機中的STC15W4K16S4作為控制核心[4]。
本設計利用STC15W4K16S4單片機加上外圍電路構成的小型開發(fā)板。
圖3
開發(fā)板上有USB燒錄電路、OLED顯示模塊、串口通信模塊、時鐘電路、復位電路等,通過開發(fā)板可對機械手上的舵機進行控制,從而控制機械手的運動。同時顯示部分參數(shù)。
(1)USB燒錄模塊:通過CH340G芯片實現(xiàn)USB轉(zhuǎn)TTL串口,將在PC端Keil軟件編寫的代碼燒錄到STC15W4K16S4單片機中,實現(xiàn)了方便、快捷地調(diào)試機械手,提高了機械手的開發(fā)效率。
圖4
(2)OLED顯示模塊:OLED屏幕因具備輕薄、省電、較為廉價、可顯示復雜圖形等特性,被廣泛運用于工業(yè)設備與日常家電中。通過外接OLED液晶顯示屏模塊,我們可以實時通過顯示的數(shù)據(jù)來觀察機械手的參數(shù)變化。
(3)串口通信模塊:單片機的串口行通過串口通信模塊與機械手的舵機進行連接,通過所編寫的程序控制單片機產(chǎn)生PWM信號控制機械手上6個不同的舵機分別執(zhí)行不同的指令,從而實現(xiàn)機械手的指向移動與抓取,同時也可以接受機械手上的各種傳感器返回數(shù)據(jù),進行反饋調(diào)整,時刻確定機械手的位置。
圖5
(4)時鐘電路:單片機的驅(qū)動信號是由時鐘電路產(chǎn)生的,而時鐘電路最重要的元器件是晶振,如果沒有晶振所產(chǎn)生的工作波形,單片機將無法正常工作,本設計采用單片機自帶的晶振作為時鐘源信號輸入,具有穩(wěn)定性高、靈活性強等特點。
圖6
(5)復位電路:復位電路的設計就是為了將單片機的特殊寄存器中的數(shù)據(jù)清除重置,恢復為默認數(shù)據(jù),以解決單片機不能正常運行的狀態(tài)。
模塊之間良好的協(xié)同運行才能保證機械手執(zhí)行工作的精確與高效性,模塊與單片機之間的關系如圖7所示。
隨著單片機的廣泛應用,各種編程語言的發(fā)展,現(xiàn)在比較常用的單片機編程語言大致分為三種,分別是BASIC語言、C語言以及匯編語言。其中,C語言是結構化語言,能夠以模塊為單位進行定時器程序、中斷程序、舵機運行程序的編寫,便于查錯與編寫,可讀性也被各路開發(fā)者認同,所以采用C語言進行程序編寫[5]。
2.2.1 控制系統(tǒng)主程序的設計
主程序的設計是整個多軸機械手自動化運行的關鍵。主程序在整體上起到協(xié)調(diào)各子函數(shù)運行,將各子函數(shù)聯(lián)系起來,調(diào)用子函數(shù)執(zhí)行某項功能與向子函數(shù)傳遞參數(shù)等作用。主程序的設計中主要包括中斷器函數(shù)、定時器函數(shù)、舵機的運行和調(diào)速函數(shù)程序的設計。主程序的任務主要執(zhí)行以下步驟:
(1)聲明全局變量,初始化各個舵機的占空比參數(shù),初始化定時器,初始化單片機各引腳,然后將引腳設置為推挽輸出,為舵機提供足夠的動力;
(2)設置定時器中斷,給定時器賦初值,定時器程序運行后主程序真正啟動,程序進入循環(huán)狀態(tài);
(3)在循環(huán)狀態(tài)中,單片機通過控制PWM輸出信號,來設置多軸機械手各個舵機的運行,從而實現(xiàn)循環(huán)機械手的運動和抓取動作。
2.2.2 舵機的運行和調(diào)速函數(shù)程序的設計
在程序的設計中,通過對舵機運動的速度進行定義,使舵機轉(zhuǎn)動的角度,分割為許多個點,這些點可根據(jù)實際需求精確度進行調(diào)整,通過控制舵機移動點的個數(shù)來定義舵機轉(zhuǎn)動的時間及角度。以下函數(shù)變量聲明省略。
(1)單舵機的控制函數(shù)為:
①參數(shù)id為所調(diào)用的舵機的編號;
②參數(shù)angle為舵機轉(zhuǎn)動的角度,5號舵機的范圍為0~270°,其他舵機的角度范圍為0~180°;
③參數(shù)time為舵機在一定范圍中轉(zhuǎn)動到指定角度所需的時間,如果為0則以最大速度運行。
而在實際操作中,經(jīng)常碰到機械手沒有復位的情況下,即舵機的角度都為0°的情況,就需要有一個讀取當前舵機角度的函數(shù)。
(2)舵機當前角度讀取函數(shù)為:
參數(shù)id為所調(diào)用的舵機的編號;
函數(shù)的返回值為0~180°的一個角度,S5舵機的返回值為0~270°;因此我們可以通過程序流程圖(如圖8)來理解函數(shù)對舵機的控制。
圖8 舵機的運行程序流程圖
實際操作中可以通過多次調(diào)用單個舵機的控制函數(shù)可實現(xiàn)多個舵機的不同角度運動所以設計了在單次時間內(nèi)同時控制全部舵機的函數(shù)。
(3)多舵機同時控制函數(shù)為:①參數(shù)S1~S6為機械手上對應舵機編號的轉(zhuǎn)動角度值,默認角度為0~180°,其中編號S5舵機的范圍為0~270°;
②參數(shù)time為一定范圍內(nèi),同時控制6個舵機運行的時間,如果為0則以最大速度運行。
本文設計是一款基于單片機的機械手控制系統(tǒng),介紹了機械手與舵機的結構與控制,工作參數(shù)、及其51單片機作為控制核心,利用產(chǎn)生的PWM信號對串行總線舵機進行驅(qū)動,以實現(xiàn)機械手的運動與抓取功能。還介紹了該裝置硬件結構設計、控制系統(tǒng)與程序設計等方面的技術,在設計過程中,機械手的優(yōu)勢如正文介紹,但是存在維護復雜,只能執(zhí)行對應的程序,無法做到智能化,這需要在實踐中積累經(jīng)驗,通過加裝傳感器,優(yōu)化算法等措施來減小機械手工作時的誤差。