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

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

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

圖3 控制系統核心結構
彎曲度傳感器選用了Spectrasymbol公司的Flex22S傳感器,在手臂或手指伸直的情況下,此時的傳感器阻值為9KΩ。在定值電阻R的值為10 KΩ,Vcc取5V的情況下,Arduino檢測到的電壓值應該為2.63V。此時關節舵機應該處于0度的位置。同理,在電壓值為2.08V左右時,舵機應當處于90度位置;在1.56V時,對應的位置是180度處[6]。
壓力傳感器選用了Interlink Electronics公司生產的FSR400傳感器,可以把壓力-電壓函數圖像當成分段函數來處理,每兩個采樣點之間認為是線性變化的,從而得出相應的壓力-電壓函數表達式。壓力傳感器的壓力-電壓關系如圖4所示。

圖4 壓力傳感器壓力-電壓關系

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

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

圖7 腕關節運動檢測功能測試
圖8為肘關節運動檢測功能測試圖。當手臂彎曲時,安裝在肘關節處的彎曲度傳感器會發生彎曲,控制相應的舵機轉動到相應角度;當手臂伸直時,彎曲度傳感器不彎曲,舵機運轉,機械臂也隨之伸直。

圖8 肘關節運動檢測功能測試
圖9①為壓力顯示功能的測試圖。壓力傳感器被粘貼在了機械臂手夾的一根手指上。當機械臂手夾鉗住一盒訂書釘后,1602液晶顯示器能夠正確顯示壓力值。隨著夾持力大小的變化,顯示器上顯示的壓力值也會隨之變化,如圖9②所示。

圖9 壓力顯示功能測試圖
圖10為手指關節運動檢測功能測試圖。手指張開時,彎曲度傳感器不彎曲,機械臂手夾張開;當手握拳,彎曲度傳感器彎曲,機械臂手夾夾緊。

圖10 手指關節運動檢測功能測試
圖11為搖桿模擬肩關節功能測試圖。本設計中,使用搖桿一個方向上的輸出來控制機械臂肩關節的旋轉。當把搖桿往左扳動時,機械臂轉向右邊;當把搖桿扳向右邊時,機械臂會轉向左邊;搖桿自由豎直時,機械臂則會回到中間位置。

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