蔡 燕 唐澤俊 王冬林 黃曉成 許 鵬
(南通大學(xué)電子信息學(xué)院,江蘇 南通 226019)
機械臂是一種自動化設(shè)備,它可以模仿人類手臂執(zhí)行各種的動作[1]。隨著機械臂技術(shù)的不斷發(fā)展,如今機械臂早已被用在各個行業(yè)。機械臂最初的成功應(yīng)用是八十年代的汽車工業(yè)[2]。如今,除了主要用于工業(yè)制造上,機械臂還被廣泛應(yīng)用在商業(yè)農(nóng)業(yè)、醫(yī)療救援、娛樂服務(wù)、軍事保全甚至在太空探索等領(lǐng)域[3]。
本文介紹的手臂運動檢測是一種全新的機械臂控制方法。在設(shè)計中,將使用開源的Arduino微控制器對安裝在手臂上的傳感器采集的數(shù)據(jù)進行分析,并控制機械臂做出和手臂一樣的動作。設(shè)計中使用的傳感器包括了安裝在肘關(guān)節(jié)和手指上,用來檢測肘關(guān)節(jié)和手指運動的彎曲度傳感器;安裝在手掌根部,用來檢測腕關(guān)節(jié)旋轉(zhuǎn)和翻轉(zhuǎn)的三軸加速度傳感器;安裝在機械臂指部,用來反饋夾持力的壓力傳感器。肩關(guān)節(jié)的運動則通過搖桿來控制。
本文介紹的基于Arduino的手臂運動檢測器通過USB和PC機進行通信,獲得電力和程序[3]。各種傳感器檢測的模擬量信息送入微控制器內(nèi),微控制器通過RS232接口和舵機控制器進行串行通信,控制機械臂工作。該系統(tǒng)的總體結(jié)構(gòu)框圖如圖1所示。
圖1 手臂運動檢測器的硬件電路總體機構(gòu)框圖
對于彎曲度傳感器和壓力傳感器,其基本部分可等效為可變電阻[4]。利用Arduino提供的10bit精度的模數(shù)轉(zhuǎn)換器和圖2所示的電壓檢測電路圖,使Arduino采樣到模擬電壓值;再依據(jù)傳感器采集的物理量和自身電阻值的函數(shù)關(guān)系式,經(jīng)過轉(zhuǎn)換運算,最終把Arduino所采集到的電壓值轉(zhuǎn)換為傳感器實際采集的物理量。
圖2 變阻式傳感器與Arduino連接原理圖
在獲得傳感器傳出的原始數(shù)據(jù)后,處理器將對數(shù)據(jù)進行處理。在本設(shè)計中,模擬-數(shù)字轉(zhuǎn)換器(ADC)的參考電壓使用5V,可以通過analogRead()函數(shù)返回ADC得到的原始數(shù)據(jù)[5]。對于搖桿,在其自由豎直時,對應(yīng)的是手臂向前伸直的姿態(tài)。此時其對應(yīng)的底座舵機應(yīng)該轉(zhuǎn)過90度。當轉(zhuǎn)動搖桿,其輸出電壓在0V到5V之間變化,對應(yīng)的底座舵機轉(zhuǎn)動角度從0度到180度之間變化。圖3顯示了整套系統(tǒng)對原始數(shù)據(jù)的處理流程。
圖3 控制系統(tǒng)核心結(jié)構(gòu)
彎曲度傳感器選用了Spectrasymbol公司的Flex22S傳感器,在手臂或手指伸直的情況下,此時的傳感器阻值為9KΩ。在定值電阻R的值為10 KΩ,Vcc取5V的情況下,Arduino檢測到的電壓值應(yīng)該為2.63V。此時關(guān)節(jié)舵機應(yīng)該處于0度的位置。同理,在電壓值為2.08V左右時,舵機應(yīng)當處于90度位置;在1.56V時,對應(yīng)的位置是180度處[6]。
壓力傳感器選用了Interlink Electronics公司生產(chǎn)的FSR400傳感器,可以把壓力-電壓函數(shù)圖像當成分段函數(shù)來處理,每兩個采樣點之間認為是線性變化的,從而得出相應(yīng)的壓力-電壓函數(shù)表達式。壓力傳感器的壓力-電壓關(guān)系如圖4所示。
圖4 壓力傳感器壓力-電壓關(guān)系
圖5 加速度傳感器受力分析
圖6 舵機執(zhí)行模塊流程圖
至于加速度傳感器MMA7361L,將其安裝在手掌處。當手腕轉(zhuǎn)動時,對其進行受力分析,如圖5所示。本設(shè)計中,加速度傳感器的gselect設(shè)置在了1.5g,對應(yīng)的精確度就是800mV/g,對應(yīng)的角度θ為
舵機控制器的命令格式為D
設(shè)計中,為使舵機控制器能夠正常連續(xù)執(zhí)行指令,Arduino在發(fā)送指令的時候遵循如下要求:設(shè)置一個全局角度變量last_A。當新指令(轉(zhuǎn)動到新的角度A)過來后,系統(tǒng)首先判斷新角度和上次的角度last_A的相對位置,如果比last_A小,則舵機在上次的位置上慢慢回轉(zhuǎn),直到到達新角度A為止,反之亦然。流程圖如圖6所示。
本次設(shè)計的系統(tǒng)有如下功能:壓力傳感器安裝在機械臂指部,能感測手指捏合壓力大小,并且在1602液晶顯示器上顯示出來;彎曲傳感器安裝在手背手指處和肘關(guān)節(jié)處,感測手指彎曲和肘關(guān)節(jié)彎曲程度,控制舵機02和舵機05執(zhí)行相應(yīng)動作;加速度傳感器安裝在手掌根部,使用x和y兩個維度來感測手腕旋轉(zhuǎn),控制舵機03和舵機04執(zhí)行相應(yīng)動作;搖桿控制舵機00,模擬肩關(guān)節(jié)的旋轉(zhuǎn)和翻轉(zhuǎn)。這樣可以控制機械臂的五臺舵機。本設(shè)計所用的機械臂具有6個自由度(6臺舵機),從下到上,舵機編號依次為00-05。
圖7為腕關(guān)節(jié)運動檢測功能測試圖。按圖中示意固定好加速度傳感器之后,使用x和y這兩個方向上的輸出值就能夠感測出手腕的運動。當手腕左右旋轉(zhuǎn),加速度傳感器的y軸方向感測出加速度變化,軟件會將該加速度的變化轉(zhuǎn)化為角度的變化,控制舵機工作;同理當手腕上下翻動,加速度傳感器的x軸方向感測出加速度變化,軟件將其轉(zhuǎn)化為角度的變化,控制舵機工作。
圖7 腕關(guān)節(jié)運動檢測功能測試
圖8為肘關(guān)節(jié)運動檢測功能測試圖。當手臂彎曲時,安裝在肘關(guān)節(jié)處的彎曲度傳感器會發(fā)生彎曲,控制相應(yīng)的舵機轉(zhuǎn)動到相應(yīng)角度;當手臂伸直時,彎曲度傳感器不彎曲,舵機運轉(zhuǎn),機械臂也隨之伸直。
圖8 肘關(guān)節(jié)運動檢測功能測試
圖9①為壓力顯示功能的測試圖。壓力傳感器被粘貼在了機械臂手夾的一根手指上。當機械臂手夾鉗住一盒訂書釘后,1602液晶顯示器能夠正確顯示壓力值。隨著夾持力大小的變化,顯示器上顯示的壓力值也會隨之變化,如圖9②所示。
圖9 壓力顯示功能測試圖
圖10為手指關(guān)節(jié)運動檢測功能測試圖。手指張開時,彎曲度傳感器不彎曲,機械臂手夾張開;當手握拳,彎曲度傳感器彎曲,機械臂手夾夾緊。
圖10 手指關(guān)節(jié)運動檢測功能測試
圖11為搖桿模擬肩關(guān)節(jié)功能測試圖。本設(shè)計中,使用搖桿一個方向上的輸出來控制機械臂肩關(guān)節(jié)的旋轉(zhuǎn)。當把搖桿往左扳動時,機械臂轉(zhuǎn)向右邊;當把搖桿扳向右邊時,機械臂會轉(zhuǎn)向左邊;搖桿自由豎直時,機械臂則會回到中間位置。
圖11 搖桿模擬肩關(guān)節(jié)功能測試
本論文通過傳感器和Arduino平臺對一種常見的六自由度關(guān)節(jié)型機械臂進行了控制實驗,使其達到了檢測手臂運動的目的。根據(jù)要求,首先分析了手臂運動、機械臂、傳感器等的原理。在深入了解了原理的基礎(chǔ)上,通過分析各種資料,逐漸構(gòu)建出了整套系統(tǒng)的硬件平臺,并完成了軟件設(shè)計,使該套機械臂控制系統(tǒng)可以根據(jù)檢測到的手臂運動,控制機械臂執(zhí)行精準的操作。
[1]唐和業(yè).一種兩自由度并聯(lián)機械手教學(xué)演示平臺數(shù)控系統(tǒng)的研究與開發(fā)[D].天津:天津大學(xué),2007.
[2]湯勇.機械手臂在汽車玻璃企業(yè)的運用[J].上海建材,2012:22-24.
[3]孫駿榮,吳明展,盧聰勇.Arduino 一試就上手[M].北京:科學(xué)出版社,2013.
[4]于欣龍,郭浩赟.愛上 Arduino[M].北京:人民郵電出版社,2012.
[5]侯忠坤.六自由度教學(xué)機器人手臂系統(tǒng)研究[D].成都:西南交通大學(xué),2011.
[6]Harold Timmis.Practical Arduino Engineering[M].CA:APress,2011.
[7]Oxer Jonathan.Practical Arduino Cool Projects for Open Source Hardware[M].CA:APress,2010.