蔡 燕 唐澤俊 王冬林 黃曉成 許 鵬
(南通大學(xué)電子信息學(xué)院,江蘇 南通 226019)
機(jī)械臂是一種自動(dòng)化設(shè)備,它可以模仿人類手臂執(zhí)行各種的動(dòng)作[1]。隨著機(jī)械臂技術(shù)的不斷發(fā)展,如今機(jī)械臂早已被用在各個(gè)行業(yè)。機(jī)械臂最初的成功應(yīng)用是八十年代的汽車工業(yè)[2]。如今,除了主要用于工業(yè)制造上,機(jī)械臂還被廣泛應(yīng)用在商業(yè)農(nóng)業(yè)、醫(yī)療救援、娛樂服務(wù)、軍事保全甚至在太空探索等領(lǐng)域[3]。
本文介紹的手臂運(yùn)動(dòng)檢測(cè)是一種全新的機(jī)械臂控制方法。在設(shè)計(jì)中,將使用開源的Arduino微控制器對(duì)安裝在手臂上的傳感器采集的數(shù)據(jù)進(jìn)行分析,并控制機(jī)械臂做出和手臂一樣的動(dòng)作。設(shè)計(jì)中使用的傳感器包括了安裝在肘關(guān)節(jié)和手指上,用來檢測(cè)肘關(guān)節(jié)和手指運(yùn)動(dòng)的彎曲度傳感器;安裝在手掌根部,用來檢測(cè)腕關(guān)節(jié)旋轉(zhuǎn)和翻轉(zhuǎn)的三軸加速度傳感器;安裝在機(jī)械臂指部,用來反饋夾持力的壓力傳感器。肩關(guān)節(jié)的運(yùn)動(dòng)則通過搖桿來控制。
本文介紹的基于Arduino的手臂運(yùn)動(dòng)檢測(cè)器通過USB和PC機(jī)進(jìn)行通信,獲得電力和程序[3]。各種傳感器檢測(cè)的模擬量信息送入微控制器內(nèi),微控制器通過RS232接口和舵機(jī)控制器進(jìn)行串行通信,控制機(jī)械臂工作。該系統(tǒng)的總體結(jié)構(gòu)框圖如圖1所示。

圖1 手臂運(yùn)動(dòng)檢測(cè)器的硬件電路總體機(jī)構(gòu)框圖
對(duì)于彎曲度傳感器和壓力傳感器,其基本部分可等效為可變電阻[4]。利用Arduino提供的10bit精度的模數(shù)轉(zhuǎn)換器和圖2所示的電壓檢測(cè)電路圖,使Arduino采樣到模擬電壓值;再依據(jù)傳感器采集的物理量和自身電阻值的函數(shù)關(guān)系式,經(jīng)過轉(zhuǎn)換運(yùn)算,最終把Arduino所采集到的電壓值轉(zhuǎn)換為傳感器實(shí)際采集的物理量。

圖2 變阻式傳感器與Arduino連接原理圖
在獲得傳感器傳出的原始數(shù)據(jù)后,處理器將對(duì)數(shù)據(jù)進(jìn)行處理。在本設(shè)計(jì)中,模擬-數(shù)字轉(zhuǎn)換器(ADC)的參考電壓使用5V,可以通過analogRead()函數(shù)返回ADC得到的原始數(shù)據(jù)[5]。對(duì)于搖桿,在其自由豎直時(shí),對(duì)應(yīng)的是手臂向前伸直的姿態(tài)。此時(shí)其對(duì)應(yīng)的底座舵機(jī)應(yīng)該轉(zhuǎn)過90度。當(dāng)轉(zhuǎn)動(dòng)搖桿,其輸出電壓在0V到5V之間變化,對(duì)應(yīng)的底座舵機(jī)轉(zhuǎn)動(dòng)角度從0度到180度之間變化。圖3顯示了整套系統(tǒng)對(duì)原始數(shù)據(jù)的處理流程。

圖3 控制系統(tǒng)核心結(jié)構(gòu)
彎曲度傳感器選用了Spectrasymbol公司的Flex22S傳感器,在手臂或手指伸直的情況下,此時(shí)的傳感器阻值為9KΩ。在定值電阻R的值為10 KΩ,Vcc取5V的情況下,Arduino檢測(cè)到的電壓值應(yīng)該為2.63V。此時(shí)關(guān)節(jié)舵機(jī)應(yīng)該處于0度的位置。同理,在電壓值為2.08V左右時(shí),舵機(jī)應(yīng)當(dāng)處于90度位置;在1.56V時(shí),對(duì)應(yīng)的位置是180度處[6]。
壓力傳感器選用了Interlink Electronics公司生產(chǎn)的FSR400傳感器,可以把壓力-電壓函數(shù)圖像當(dāng)成分段函數(shù)來處理,每?jī)蓚€(gè)采樣點(diǎn)之間認(rèn)為是線性變化的,從而得出相應(yīng)的壓力-電壓函數(shù)表達(dá)式。壓力傳感器的壓力-電壓關(guān)系如圖4所示。

圖4 壓力傳感器壓力-電壓關(guān)系

圖5 加速度傳感器受力分析

圖6 舵機(jī)執(zhí)行模塊流程圖
至于加速度傳感器MMA7361L,將其安裝在手掌處。當(dāng)手腕轉(zhuǎn)動(dòng)時(shí),對(duì)其進(jìn)行受力分析,如圖5所示。本設(shè)計(jì)中,加速度傳感器的gselect設(shè)置在了1.5g,對(duì)應(yīng)的精確度就是800mV/g,對(duì)應(yīng)的角度θ為
舵機(jī)控制器的命令格式為D
設(shè)計(jì)中,為使舵機(jī)控制器能夠正常連續(xù)執(zhí)行指令,Arduino在發(fā)送指令的時(shí)候遵循如下要求:設(shè)置一個(gè)全局角度變量last_A。當(dāng)新指令(轉(zhuǎn)動(dòng)到新的角度A)過來后,系統(tǒng)首先判斷新角度和上次的角度last_A的相對(duì)位置,如果比last_A小,則舵機(jī)在上次的位置上慢慢回轉(zhuǎn),直到到達(dá)新角度A為止,反之亦然。流程圖如圖6所示。
本次設(shè)計(jì)的系統(tǒng)有如下功能:壓力傳感器安裝在機(jī)械臂指部,能感測(cè)手指捏合壓力大小,并且在1602液晶顯示器上顯示出來;彎曲傳感器安裝在手背手指處和肘關(guān)節(jié)處,感測(cè)手指彎曲和肘關(guān)節(jié)彎曲程度,控制舵機(jī)02和舵機(jī)05執(zhí)行相應(yīng)動(dòng)作;加速度傳感器安裝在手掌根部,使用x和y兩個(gè)維度來感測(cè)手腕旋轉(zhuǎn),控制舵機(jī)03和舵機(jī)04執(zhí)行相應(yīng)動(dòng)作;搖桿控制舵機(jī)00,模擬肩關(guān)節(jié)的旋轉(zhuǎn)和翻轉(zhuǎn)。這樣可以控制機(jī)械臂的五臺(tái)舵機(jī)。本設(shè)計(jì)所用的機(jī)械臂具有6個(gè)自由度(6臺(tái)舵機(jī)),從下到上,舵機(jī)編號(hào)依次為00-05。
圖7為腕關(guān)節(jié)運(yùn)動(dòng)檢測(cè)功能測(cè)試圖。按圖中示意固定好加速度傳感器之后,使用x和y這兩個(gè)方向上的輸出值就能夠感測(cè)出手腕的運(yùn)動(dòng)。當(dāng)手腕左右旋轉(zhuǎn),加速度傳感器的y軸方向感測(cè)出加速度變化,軟件會(huì)將該加速度的變化轉(zhuǎn)化為角度的變化,控制舵機(jī)工作;同理當(dāng)手腕上下翻動(dòng),加速度傳感器的x軸方向感測(cè)出加速度變化,軟件將其轉(zhuǎn)化為角度的變化,控制舵機(jī)工作。

圖7 腕關(guān)節(jié)運(yùn)動(dòng)檢測(cè)功能測(cè)試
圖8為肘關(guān)節(jié)運(yùn)動(dòng)檢測(cè)功能測(cè)試圖。當(dāng)手臂彎曲時(shí),安裝在肘關(guān)節(jié)處的彎曲度傳感器會(huì)發(fā)生彎曲,控制相應(yīng)的舵機(jī)轉(zhuǎn)動(dòng)到相應(yīng)角度;當(dāng)手臂伸直時(shí),彎曲度傳感器不彎曲,舵機(jī)運(yùn)轉(zhuǎn),機(jī)械臂也隨之伸直。

圖8 肘關(guān)節(jié)運(yùn)動(dòng)檢測(cè)功能測(cè)試
圖9①為壓力顯示功能的測(cè)試圖。壓力傳感器被粘貼在了機(jī)械臂手夾的一根手指上。當(dāng)機(jī)械臂手夾鉗住一盒訂書釘后,1602液晶顯示器能夠正確顯示壓力值。隨著夾持力大小的變化,顯示器上顯示的壓力值也會(huì)隨之變化,如圖9②所示。

圖9 壓力顯示功能測(cè)試圖
圖10為手指關(guān)節(jié)運(yùn)動(dòng)檢測(cè)功能測(cè)試圖。手指張開時(shí),彎曲度傳感器不彎曲,機(jī)械臂手夾張開;當(dāng)手握拳,彎曲度傳感器彎曲,機(jī)械臂手夾夾緊。

圖10 手指關(guān)節(jié)運(yùn)動(dòng)檢測(cè)功能測(cè)試
圖11為搖桿模擬肩關(guān)節(jié)功能測(cè)試圖。本設(shè)計(jì)中,使用搖桿一個(gè)方向上的輸出來控制機(jī)械臂肩關(guān)節(jié)的旋轉(zhuǎn)。當(dāng)把搖桿往左扳動(dòng)時(shí),機(jī)械臂轉(zhuǎn)向右邊;當(dāng)把搖桿扳向右邊時(shí),機(jī)械臂會(huì)轉(zhuǎn)向左邊;搖桿自由豎直時(shí),機(jī)械臂則會(huì)回到中間位置。

圖11 搖桿模擬肩關(guān)節(jié)功能測(cè)試
本論文通過傳感器和Arduino平臺(tái)對(duì)一種常見的六自由度關(guān)節(jié)型機(jī)械臂進(jìn)行了控制實(shí)驗(yàn),使其達(dá)到了檢測(cè)手臂運(yùn)動(dòng)的目的。根據(jù)要求,首先分析了手臂運(yùn)動(dòng)、機(jī)械臂、傳感器等的原理。在深入了解了原理的基礎(chǔ)上,通過分析各種資料,逐漸構(gòu)建出了整套系統(tǒng)的硬件平臺(tái),并完成了軟件設(shè)計(jì),使該套機(jī)械臂控制系統(tǒng)可以根據(jù)檢測(cè)到的手臂運(yùn)動(dòng),控制機(jī)械臂執(zhí)行精準(zhǔn)的操作。
[1]唐和業(yè).一種兩自由度并聯(lián)機(jī)械手教學(xué)演示平臺(tái)數(shù)控系統(tǒng)的研究與開發(fā)[D].天津:天津大學(xué),2007.
[2]湯勇.機(jī)械手臂在汽車玻璃企業(yè)的運(yùn)用[J].上海建材,2012:22-24.
[3]孫駿榮,吳明展,盧聰勇.Arduino 一試就上手[M].北京:科學(xué)出版社,2013.
[4]于欣龍,郭浩赟.愛上 Arduino[M].北京:人民郵電出版社,2012.
[5]侯忠坤.六自由度教學(xué)機(jī)器人手臂系統(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.