劉遠(yuǎn)法++周屹
摘要:解魔方機(jī)器人課題為了適應(yīng)對(duì)機(jī)器人智能化的要求,選擇競(jìng)技類機(jī)器人作為研究對(duì)象,研究設(shè)計(jì)了解三階魔方機(jī)器人,能夠?yàn)樘岣吒?jìng)技類機(jī)器人的智能化水平做出貢獻(xiàn)。本設(shè)計(jì)基于Android 平臺(tái),顏色傳感器作為顏色識(shí)別系統(tǒng),機(jī)械手臂作為操縱設(shè)備,完成對(duì)任意魔方狀態(tài)的初始還原。機(jī)械控制作為解魔方機(jī)器人的神經(jīng)中樞,是機(jī)械結(jié)構(gòu)執(zhí)行算法的紐帶。
關(guān)鍵詞:Arduino單片機(jī);電機(jī)驅(qū)動(dòng);電機(jī)控制;步進(jìn)電機(jī)
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)07-0171-03
The Robot Can Restore A Rubik's Cube Based on Arduino Microcontroller — The Control Module
LIU Yuan-fa, ZHOU Yi
(Yunnan Normal University, Kunming 650092, China)
Abstract: The robot can restore a rubik's cube in order to adapt to the requirements of intelligent robot, athletic robot as the research object, research and design about third-order Rubik's cube robot can contribute to improve the intelligent level of athletic robot. The design based on the Android platform, the color sensor as the color recognition system, the mechanical arm as control equipment, the reduction is done for any state of Rubik 's cube initial. If the algorithm is the brain of the Rubik's cube robot, then mechanical control is the central nervous system (CNS) is link mechanical structure of the implementation of the algorithm. This paper will discuss from the mechanical control part.
Key words: Arduino microcontroller; motor drive; motor control; step motor
進(jìn)人21世紀(jì)以來(lái),人類科學(xué)技術(shù)取得突飛猛進(jìn)的發(fā)展,在發(fā)展了半個(gè)世紀(jì)的現(xiàn)代機(jī)器人中,仿生機(jī)器人作為熱門(mén)研究課題,是機(jī)器人學(xué)研究的一個(gè)重點(diǎn)。通過(guò)模仿動(dòng)物的各種生物功能及人類大腦思維功能從而全面提升機(jī)器人的自主能力及智能水平是仿生機(jī)器人學(xué)研究的一個(gè)重要內(nèi)容[1]。解魔方機(jī)器人課題為了適應(yīng)對(duì)機(jī)器人智能化的要求,選擇競(jìng)技類機(jī)器人作為研究對(duì)象,研究設(shè)計(jì)了解三階魔方機(jī)器人,能夠?yàn)樘岣吒?jìng)技類機(jī)器人的智能化水平做出貢獻(xiàn),具有科學(xué)性強(qiáng)、創(chuàng)意豐富、創(chuàng)新點(diǎn)鮮明的特點(diǎn),并有良好的經(jīng)濟(jì)及社會(huì)應(yīng)用價(jià)值[2]。
本設(shè)計(jì)將完成既可以用于教育行業(yè)作為典型的機(jī)器人教學(xué)教具,也可用于娛樂(lè)業(yè)作為展示用和表演用機(jī)器人,還能產(chǎn)生一定經(jīng)濟(jì)效益。該解魔方機(jī)器人運(yùn)用顏色識(shí)別、步進(jìn)電機(jī)精確控制等科學(xué)技術(shù)。對(duì)于解魔方機(jī)器人,控制系統(tǒng)就如同人的神經(jīng)中樞,它起著承接算法與機(jī)械結(jié)構(gòu)的作用。本文將從機(jī)械控制部分進(jìn)行論述。
1 解魔方機(jī)器人控制系統(tǒng)研究現(xiàn)狀
世界各國(guó)的很多公司及魔方愛(ài)好者已經(jīng)設(shè)計(jì)出了解魔方機(jī)器人,目前還原魔方最快的機(jī)器人CubeStormer 3由ARM的兩位工程師完成,以驚人的3.253s還原了一個(gè)三階魔方,打破了機(jī)器人還原魔方的世界紀(jì)錄。它的機(jī)械控制采用的是4個(gè)LEGO的Mindstorms NXT藍(lán)牙機(jī)器人配套的伺服電機(jī)作為機(jī)械臂動(dòng)力,用NXT主控器直接驅(qū)動(dòng)。這款伺服電機(jī)轉(zhuǎn)速很快,定位精準(zhǔn),力矩也大,但是價(jià)格昂貴。
也有部分國(guó)內(nèi)外的魔方愛(ài)好者設(shè)計(jì)了基于PC上位機(jī)的解魔方機(jī)器人,運(yùn)用電腦作為上位機(jī),攝像頭作為顏色識(shí)別,用四個(gè)步進(jìn)電機(jī)作為機(jī)械臂控制。此類解魔方機(jī)器人需用PC機(jī)進(jìn)行還原計(jì)算,還原一個(gè)三階魔方需要1分鐘以上。對(duì)于機(jī)械控制部分,一共采用8個(gè)步進(jìn)電機(jī)進(jìn)行控制。每一只機(jī)械臂由1個(gè)電機(jī)控制機(jī)械臂前進(jìn)與后退,另一個(gè)控制機(jī)械臂轉(zhuǎn)動(dòng)。
隨著以上這些及魔方機(jī)器人的出現(xiàn),各界人士研究解魔方機(jī)器人的也越來(lái)越多。由于它具有趣味性和可觀賞性,出于對(duì)解魔方機(jī)器人工作原理的好奇,綜合應(yīng)用所學(xué)知識(shí)自己制作解魔方機(jī)器人。
2 前期設(shè)計(jì)分析
從各類解魔方機(jī)器人來(lái)看,大部分的解魔方機(jī)器人都需要較高的成本費(fèi)用,或過(guò)于笨重,制作困難等。本設(shè)計(jì)是一款小型、簡(jiǎn)單、成本低的解魔方機(jī)器人。以Android作為主控平臺(tái),顏色傳感器作為顏色識(shí)別裝置,用一只機(jī)械臂和一個(gè)可旋轉(zhuǎn)的底座實(shí)現(xiàn)魔方的翻轉(zhuǎn)與旋轉(zhuǎn)各面或整體旋轉(zhuǎn)(圖1)??刂撇糠钟脙蓚€(gè)電機(jī)分別控制底座和機(jī)械臂,Arduino通過(guò)控制電機(jī)驅(qū)動(dòng)間接控制電機(jī),實(shí)現(xiàn)算法動(dòng)作與機(jī)械動(dòng)作的結(jié)合。
對(duì)于解魔方機(jī)器人而言,控制是一個(gè)很重要的部分,如果機(jī)械控制不精確,那么算法再優(yōu)秀也無(wú)法實(shí)現(xiàn),所以精確控制機(jī)械結(jié)構(gòu)精準(zhǔn)定位是實(shí)現(xiàn)魔方還原的關(guān)鍵。而控制的速度則是還原效率的一個(gè)重要的考察點(diǎn)。
3 Arduino單片機(jī)
Arduino是一個(gè)基于開(kāi)放原始碼的軟硬件平臺(tái),具有使用類似Java、C語(yǔ)言的Processing/Wiring開(kāi)發(fā)環(huán)境。并且Arduino自帶很多庫(kù)函數(shù),程序編寫(xiě)簡(jiǎn)單方便。
3.1 Arduino UNO
Arduino UNO是Arduino USB接口系列的最新版本,作為Arduino平臺(tái)的參考標(biāo)準(zhǔn)模板[3]。UNO具有14路數(shù)字輸入/輸出口(其中6路可作為PWM輸出),6路模擬輸入,一個(gè)16MHz晶體振蕩器,一個(gè)USB口,一個(gè)電源插座,一個(gè)ICSP header和一個(gè)復(fù)位按鈕。
3.2 Arduino Mega2560
Arduino Mega2560也是采用USB接口的核心電路板,它最大的特點(diǎn)就是具有多達(dá)54路數(shù)字輸入輸出,特別適合需要大量IO接口的設(shè)計(jì)。Arduino Mega2560也能兼容為Arduino UNO設(shè)計(jì)的擴(kuò)展板。
根據(jù)Arduino UNO和Arduino Mega2560特點(diǎn),由于Arduino UNO數(shù)字接口較少,最終選用Arduino Mega2560作為主控板。
3.3 Arduino IDE
Arduino IDE是Arduino的開(kāi)放源代碼的集成開(kāi)發(fā)環(huán)境,語(yǔ)法簡(jiǎn)單以及能方便地下載程序,使得Arduino的程序開(kāi)發(fā)變得非常便捷 [4]。
Arduino編程由setup和loop兩個(gè)函數(shù)組成,setup在程序流程中只會(huì)執(zhí)行一次,用于定義所需要設(shè)定、初始化的參數(shù)和函數(shù)或是引腳功能指定等。Loop是主程序的執(zhí)行內(nèi)容。
4 電機(jī)選型
電機(jī)是解魔方機(jī)器人最主要的驅(qū)動(dòng)設(shè)備,是否合理地選擇電機(jī)將嚴(yán)重影響本設(shè)計(jì)項(xiàng)目的效果。本設(shè)計(jì)電機(jī)應(yīng)結(jié)合轉(zhuǎn)速,扭矩,精確度等參數(shù)進(jìn)行選擇。
4.1 直流電機(jī)
直流電機(jī)(direct current machine)能將直流電能轉(zhuǎn)換成機(jī)械能[5]。直流電機(jī)的轉(zhuǎn)動(dòng)直接驅(qū)動(dòng)于電流的輸入,一般使用在持續(xù)運(yùn)轉(zhuǎn)的情況下,只依靠PWM信號(hào)來(lái)改變轉(zhuǎn)速的快慢。不適合應(yīng)用在比較精密的角度轉(zhuǎn)動(dòng)。
4.2 步進(jìn)電機(jī)
步進(jìn)電機(jī)是將電脈沖信號(hào)轉(zhuǎn)變?yōu)榻俏灰苹蚓€位移的開(kāi)環(huán)控制元件[6]。步進(jìn)電機(jī)具有較好的起停和反轉(zhuǎn)響應(yīng),不會(huì)積累誤差,以實(shí)現(xiàn)轉(zhuǎn)動(dòng)位置的精準(zhǔn)。但難以運(yùn)轉(zhuǎn)到較高的轉(zhuǎn)速,難以獲得較大的轉(zhuǎn)矩[7]。
4.3 舵機(jī)
舵機(jī)(英文叫Servo):它由直流電機(jī)、減速齒輪組、傳感器和控制電路組成的一套自動(dòng)控制系統(tǒng)[8]。通過(guò)發(fā)送信號(hào),指定輸出軸旋轉(zhuǎn)角度。普通直流電機(jī)無(wú)法反饋轉(zhuǎn)動(dòng)的角度信息,而舵機(jī)可以。但舵機(jī)的旋轉(zhuǎn)角度只在一定角度之間。
結(jié)合項(xiàng)目特點(diǎn)要求電機(jī)可以精確控制魔方旋轉(zhuǎn)90度、180度,由于直流電機(jī)控制精確度不高,而舵機(jī)只可在一定角度內(nèi)旋轉(zhuǎn),故本設(shè)計(jì)驅(qū)動(dòng)電機(jī)選擇步進(jìn)電機(jī)。
步進(jìn)電機(jī)有步距角(涉及相數(shù))、靜轉(zhuǎn)矩、及電流等要素,本設(shè)計(jì)主要考慮,轉(zhuǎn)速、轉(zhuǎn)矩、精確度及市場(chǎng)銷售四個(gè)要素,最終選用的步進(jìn)電機(jī)為“寶雞航天華科出品的42步進(jìn)電機(jī)帶伺服反饋”,步進(jìn)電機(jī)規(guī)格:42*42*37.8MM、步進(jìn)角:1.8度、引線:兩項(xiàng)四線、驅(qū)動(dòng)電壓12V、驅(qū)動(dòng)電流0.8A、扭矩2.5Kg/cm左右,價(jià)格:12.8元/個(gè)。
5 電機(jī)驅(qū)動(dòng)設(shè)計(jì)
5.1 L298N
L298N是ST公司生產(chǎn)的一種高電壓、大電流電機(jī)驅(qū)動(dòng)芯片[9]。它具有耐壓值高,工作電流大的特點(diǎn),最大可承受46V的電壓;電流最大可達(dá)3A,持續(xù)工作電流可達(dá)2A,可以用來(lái)驅(qū)動(dòng)兩臺(tái)直流電機(jī)或一臺(tái)步進(jìn)電動(dòng)機(jī);L298N有兩個(gè)使能端,采用標(biāo)準(zhǔn)邏輯電平信號(hào)控制,可以采用這兩個(gè)使能端對(duì)直流電機(jī)進(jìn)行PWM控制。
5.2 ULN2003
ULN2003由七個(gè)硅NPN 復(fù)合晶體管組成,耐高壓、大電流;最大電流可達(dá)50V,最大電流可達(dá)500mA。
結(jié)合兩個(gè)電機(jī)驅(qū)動(dòng)參數(shù)及所選步進(jìn)電機(jī)參數(shù)決定選用L298N作為本設(shè)計(jì)步進(jìn)電機(jī)驅(qū)動(dòng),驅(qū)動(dòng)模塊設(shè)計(jì)與制作原理圖,采用eagle軟件進(jìn)行PCB設(shè)計(jì),經(jīng)過(guò)裁板、熱轉(zhuǎn)印、腐蝕、打孔、元器件焊接等步驟制作出實(shí)物(如圖2)。
6 電機(jī)驅(qū)動(dòng)程序設(shè)計(jì)
6.1 步進(jìn)電機(jī)工作原理
步進(jìn)電機(jī)是通過(guò)時(shí)序來(lái)控制的,當(dāng)按照一定順序給步進(jìn)電機(jī)線圈通電時(shí),步進(jìn)電機(jī)就可按照時(shí)序轉(zhuǎn)動(dòng)。以兩相步進(jìn)電機(jī)為例。
按照一定的順序,依次給每一相進(jìn)行供電,可實(shí)現(xiàn)步進(jìn)電機(jī)的轉(zhuǎn)動(dòng)。兩相步進(jìn)電機(jī)的工作方式有單四拍,雙四拍、八拍三種工作方式。其中以單雙八拍方式控制精度最高,是單四拍和雙四拍的一倍[10]。
6.2 電機(jī)程序設(shè)計(jì)
經(jīng)過(guò)測(cè)試電機(jī)采用簡(jiǎn)單的雙四拍工作方式已有足夠的力矩驅(qū)動(dòng)機(jī)械臂和底座,故采用雙四拍工作方式進(jìn)行程序編寫(xiě)。本次選用的步進(jìn)電機(jī)旋轉(zhuǎn)一周需要200步,控制底座電機(jī)運(yùn)行50步為順時(shí)針旋轉(zhuǎn)90度,機(jī)械臂電機(jī)初始位置為機(jī)械臂固定魔方位置,順時(shí)針旋轉(zhuǎn)80步后恢復(fù)可拉動(dòng)魔方翻轉(zhuǎn),逆時(shí)針旋轉(zhuǎn)36步可移開(kāi)機(jī)械臂。
6.3 算法動(dòng)作到機(jī)械動(dòng)作的轉(zhuǎn)換
算法計(jì)算完魔方的還原動(dòng)作為固定魔方的中心塊位置,每一面順時(shí)針旋轉(zhuǎn)90度,逆時(shí)針旋轉(zhuǎn)90度或旋轉(zhuǎn)180度,轉(zhuǎn)換為機(jī)械步驟時(shí)可將要旋轉(zhuǎn)的面先通過(guò)機(jī)械臂拉動(dòng)翻轉(zhuǎn)到底面,再進(jìn)行旋轉(zhuǎn),完成后再講魔方還原原來(lái)狀態(tài)。各個(gè)面轉(zhuǎn)換流程如圖3。
7 總結(jié)
本文闡述述了解魔方機(jī)器人的控制部分,從Arduino單片機(jī)選型,電機(jī)型號(hào)選擇,電機(jī)驅(qū)動(dòng)設(shè)計(jì),算法到機(jī)械控制的轉(zhuǎn)換方面進(jìn)行了分析設(shè)計(jì)和總結(jié),希望可以為廣大智能機(jī)器人設(shè)計(jì)愛(ài)好者提供研究支持和參考。
參考文獻(xiàn):
[1] 蔡睿妍.Arduino的原理及應(yīng)用[C].北京: 科學(xué)出版社,2012: 23-27.
[2] 鄭振杰,江衍煊,游德智.單片機(jī)結(jié)合ULN2003驅(qū)動(dòng)步進(jìn)電機(jī)[J].電機(jī)技術(shù),2010,2(6):18-19.
[3] 安靜宇,王黨樹(shù),鄭琪.研究和探討數(shù)控直流電源[J].硅谷,2008,32(3):65-67.
[4] 鄭振杰,江衍煊,游德智.單片機(jī)結(jié)合ULN2003驅(qū)動(dòng)步進(jìn)電機(jī)的應(yīng)用[J].電機(jī)技術(shù),2010,54(9):77-78.
[5] 賴若麒,劉竹林.基于步進(jìn)電機(jī)的位置隨動(dòng)系統(tǒng)的設(shè)計(jì)[J].信息技術(shù),2012,34(2):78-80.
[6] 惠特.Arduino技術(shù)內(nèi)幕 (2013年版) [M].北京:人民郵電出版社,2013: 10-16.
[7] 孫駿榮,吳明展.Arduino一試就上手[M].2版.北京:科學(xué)出版社,2012: 56-58.
[8] 趙津,朱三超.基于Arduino 單片機(jī)的智能避障小車設(shè)計(jì)[C].北京:科學(xué)出版社,2013: 65-69.
[9] 郭力峰,揭宗昌,蔡澤輝.基于XC886 單片機(jī)的魔方機(jī)器人設(shè)計(jì)[J].電腦知識(shí)與技術(shù),2011,24(8):25-28.
[10] 董海陽(yáng),魏巍.類人四軸解魔方機(jī)器人的設(shè)計(jì)[D].北京:北京國(guó)家圖書(shū)館,2013.