文/位明先(技職教育老師)、胡哲瑋(機器人設計工程師)
近年來臺灣的自造者運動漸趨活躍,而在熱情的高雄港都也有一群自造者們會不定期舉辦活動聚會。在一次的因緣際會中,因為我們同時對開放原始碼設計的meArm 機器手臂感到興趣,因此開始合作一同製作這個meArm 機器手臂。由於meArm 採開放式設計, 所以不管任何人都可以在網路上找到它的設計檔,其結構非常簡單,配上現今多元的結構製作方式, 如果再搭配Arduino 控制器, 便可當作機器手臂的實驗器材。但在實際使用後,仍有許多需要改善的空間。
像是組成結構的零件是將螺絲與壓克力直接絞合,鎖得太鬆會讓手臂在移動時產生晃動, 太緊則容易卡死。不只是難以調整,當使用一段時間之後,壓克力上的螺紋也容易磨損使螺絲滑牙。下方轉動底盤的穩定度也不佳,當手臂伸長後會傾斜變得不易轉動。此外,夾爪在夾取物品的設計上仍需改良, 原先所用之SG-90 伺服機扭力過低,種種問題都會使手臂的應用範圍受到限制。因此經過一番討論後,我們決定分別負責機構的改善以及電控的設計,再邀請葛士冬同學分擔製作的工作, 就這樣開始進行meArm 的改造專題(照片1)。
(照片1) 改造後的meArm 機器手臂。
改善機構
若要讓機器手臂能用得更久, 首先要改善鬆散的結構,我們在原本壓克力骨架的連接處, 加裝垂直連接件(照片2),用螺絲直接鎖在結構上(照片3),以提高結構強度與穩定度。
原來機構上的活動關節則改用自鎖螺帽,以便之後進行旋緊或放鬆的調整,保留零件的連接公差(照片4)。同時因為壓克力不用再負擔螺絲的應力,也不會在長時間的使用後產生滑牙的問題。不過在修改時需注意原本鎖螺絲的孔, 其孔徑大小要再加大3mm ,才能讓螺絲順利穿過。
(照片2) 垂直連接件。(照片3) 用螺絲鎖好結構。(照片4) 活動關節則改用自鎖螺帽,以便之後進行旋緊或放鬆的調整。
迴轉底盤的部分則著重於增加轉動的穩定度,並加強前移與抬升機構的進程,讓手臂伸展到極限時,仍能維持順暢的動作(照片5、照片6)。
(照片5) 迴轉底盤。(照片6) 迴轉底盤。
原本的夾爪馬達有效角度大約只有30 度,一旦轉動超過其限制便會卡住無法轉動,對馬達造成損傷。再者,若只用USB 來供電, 也會導致USB 電源保護斷電。便決定將夾爪連桿結構重新設計以便解決這個問題(照片7),不僅增加轉動的角度,也不會再有卡死的情況出現。同時我們也針對驅動夾爪的齒輪組做了些更動,藉由改變齒輪的形狀,增加整個轉動過程中齒輪咬合的面積,讓動作更穩定且不晃動,也可以減少夾取物體時的間隙。
(照片7) 防鎖死夾爪。
建議使用CNC 雕刻機進行加工,能進一步減少齒輪間隙的公差,讓夾爪的動作更精確。
最後,則是使用扭力更強的伺服機(GS-9025MG)(照片8),同時使用外加直流電源供應,確保在伸長手臂之後,還能有足夠的抬升力量,也不會因為馬達負載電流過大造成USB 自動斷電。
(照片8) GS-9025MG 伺服機。
改造伺服機
改良機器手臂後,接著就能開始加上學習(Self Learning) 功能, 讓指導者能直接抓著手臂移動來記錄動作,再讓手臂重複做出一模一樣的動作。要達成此功能,必須將一連串的伺服機位置資料記錄在記憶體中。等到要重播動作時,再將資料取出來,好讓伺服機得以依照順序來移動。
若要取得伺服機的位置資料,除了可選擇同步外接角度感測器外,比較簡便的方法則是取出伺服機內部可變電阻的電壓值,再透過Arduino 的類比數位轉換功能,將取得的電壓值轉換成角度。不過, 要取得伺服機的VR 電壓就則必須改造在伺服機的內部稍作修改。首先將伺服機外殼固定螺絲轉拆開(照片9),接著並從在控制電路板上面找到VR 可變電阻的3 個接點(分別是電源、接地與VR 電壓)。
一般來說,仔細觀察電路板便可以發現很容易可以找到這3 個接點,焊點比較大的就是了;而在排在中間的點,通常就是VR 代表的電壓接點腳。如果要再進一步確認,可以將伺服機接上電源,再利用以數位三用電表測量接點與接地點端的電壓,如果轉動伺服機時,電壓會隨著成依比例改變,那麼這個接點即為電壓接腳。
(照片9) 將伺服機外殼固定螺絲轉拆開。
用烙鐵將一條導線焊到電壓接腳上(照片10),便能取得馬達轉動時的電壓變化。不過,還得要在外殼上鑽一個小孔讓導線通過外殼(請依所用導線粗細來選擇鑽孔大小)(照片11)。最後將改造過後的伺服機裝到手臂上(照片12、照片13)。
(照片10) 將導線焊到電壓接腳上。(照片11) 在外殼上鑽一個小孔讓導線通過。
(照片12) 改造完成的伺服機。(照片13) 將改造過後的伺服機裝到手臂上。
取得電壓後, 將伺服機接上電源,再將電壓輸出端接到Arduino 的類比數位轉換腳位上(照片14)。經實際的測量,伺服機由0 度轉動到180 度時, 其數值則會由117 變化到557。因此,可推得兩者的轉移函數為:
角度=((AD轉換值-117)*180)/440
這樣就能得到伺服機相對應的位置資料了。
(照片14) 取得電壓後連接到AD 轉換輸入。
學習功能的另一個關鍵則是要把設定好的手臂位置儲存起來,以便教導手臂後可反覆取出,控制手臂的動作。Arduino 可使用SD 卡或內部的EEPROM 來儲存資料,為了方便,我們使用了I2C 介面的EEPROM 當作儲存元件,因為它可以在電源拔取後移給另一個手臂讀取同樣的動作,價格也比SD 卡便宜。硬體的改造就到此告一段落,下次會針對電路與程式設計的部分做介紹。
文章原文刊載於《ROBOCON》國際中文版2015/9月號