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