最近相當火紅的開放原始碼專案 - 3D Printing,自從RepRap Machine被設計以來,一直不斷有各類型的延伸版本出現。例如最有名的Maker Bot Industries,就是按照RepRap的原型設計改良成Thing-O-Matic,其他還有Ultimaker等3D Printing。
這些所謂的3D Printing,在早期被稱之為快速成型技術(Rapid Prototyping,RP),現今因為Arduino的開放硬體,許多DIY玩家自行研究如何轉換複雜的G Code到機器上的步進馬達,製作出一台又一台DIY 3D Printing。
3D Printing的Open hardware
DIY 3D Printing在早期發展時,用來產生G Code的軟體相當簡陋,有很多bug無法順利使用,與硬體之間的溝通也沒有很多感測器可供監控,需要半自動的清理噴嘴流出的ABS塑料,甚至需要自行判斷噴嘴溫度是否已達標準,使用上相當麻煩。
另外在產生G Code的同時,有許多參數需要進行調整,有些甚至需花上3到6個月時間自行調教各項軟硬體參數。對於剛入門的使用者來說,不易上手,且容易感到挫敗而放棄使用。
直到近年,Arduino MEGA 2560支援更大容量的記憶體空間,更多的I/O數量,配合多種開放原始碼的程式庫,讓上述的問題減少許多。以最為熱門的MakerBot Replicator設計為例,歷經了8代改版,從早期的CupCake(MK4)到Thing-O-Matic(MK7),由單一噴嘴到雙頭噴嘴系統,全自動化的操作模式,讓家庭式3D Printing不再是遙遠的夢想。
或許你會問, DIY 3D Printing能不能更加簡單好用?
在2012 Comptuex Taipei中,威盛電子與帝凱科技(decade.tw)相互合作,發表一款整合MakerBot Thing-O-Matic與VE-900的「個人雲端3D印表機」。
此機器以Thing-O-Matic的硬體外觀作為設計藍圖,往下延伸出一個獨立空間,此空間置放了一台標準的PC主機板(VE-900),搭配SATA硬碟、電源供應器、USB連接線與VGA螢幕輸出,與一個觸控顯示介面相連,完美整合成一台可獨立運作的個人3D印表機。
其最大的挑戰在於軟體介面的重新設計。大多數的3D Printing過去都是使用ReplicatorG這套開放原始碼軟體,此軟體對於初學者來說還是不容易立即上手。因此,我們根據一般人使用的習慣,重新思考一台印表機必要的步驟有哪些,最後賦予新介面三個重要關鍵因素:開啟檔案、預覽列印、列印進度查看。
開啟檔案方面設計了兩個重要功能,一是直接讀取USB隨身碟內的檔案,另一方面可從Dropbox或Google Drive直接下載模型檔案。在下載或開啟的STL檔案進行輸入後,可直接在此介面預覽3D 模型,透過觸控方式,直接在觸控螢幕上做旋轉、放大、移動等操作,對於初次使用者相當方便。
3D Printing的難題
實際列印的時候,與一般噴墨印表機或雷射印表機不同,3D Printing是用堆疊方式一層一層把立體的樣貌打造出來,這是如何做到的呢?
首先,3D Printing如同它的名稱一樣,屬於立體式空間,因此需要X、Y、Z三個軸向,X與Y軸在此負責移動一個加熱平台,平台上方的噴嘴除了負責加熱到一定溫度,還需透過一顆步進馬達緩慢地將ABS塑料融化後噴出,而Z軸就是負責每一層的高度,每完成一層就上升一小段高度,使立體模型順利完成需要的樣貌。
相信讀者會想問,3D模型是否可以任意設計?任意設計的結果是否會造成印製上的困難?
在我們的測試過程中,也碰到許多類似的問題。例如模型的設計不能底部為懸空狀態,也就是不能設計沒有支撐點的模型,若要設計此類的造型,必須縝密考量到噴嘴行走速度與送料的關連性,任一種情況都可能容易造成模型製作失敗。
另一個案例發生於使用Sketch up軟體製作時,沒有考慮到噴嘴走動的路徑設計。路徑設計不良會讓機器往返走動的速度過短,軸向錯位,導致模型噴出時容易印製錯誤。為了避免這樣的情形發生,ReplicatorG裡有一個預覽功能,可在產生G Code後一層層檢視噴嘴走動的路徑。
不僅模型設計需要考量很多因素,目前3D Printing共同的問題在於加熱噴嘴使用的壽命,以我們測試的Thing-O-Matic MK7噴嘴系統為例,常因ABS塑料材質加熱過後所產生的硬化膠質,慢慢會累積在噴嘴四周,必須不斷的定時清除周邊殘留物,以免噴嘴因為殘留物堵塞細小的噴嘴出口,導致無法射出成形。
最好的解決方式是每當不使用機器的最後,趁噴嘴溫度尚有200度以上的高溫時,使用鑷子將噴嘴周邊清除乾淨,或是用軟體去控制馬達擠出一小段塑料,保持噴嘴為暢通狀態,在下次使用時就能確保噴嘴出口沒有任何異物卡住。
DIY 3D Printing設計解密
開放硬體的3D Printing,大多數採用Arduino作為控制晶片,其負責的功能分為兩個部分:一是負責接受從電腦端的PC或MAC軟體送過來的G Code,然後由一塊Arduino Mega 2560進行資料分析,並透過RS485的傳送介面,遞送給另一塊Arduino UNO控制噴嘴溫度與加熱平台。
此外,Arduino Mega 2560還負責控制3D Printing上的四顆步進馬達,這些馬達分別扮演X、Y、Z以及Extuder的角色,相互協調彼此之間的運作。
為了讓3D Printing更具人性化,較新型的3D Printing還具有額外的自動化套件,像是自動化模型送出平台(Automated Build Platform),可讓印製完成的3D模型自動從加熱平台上輸送出來,如此就可達到自動連續印製的效果。
另外也有安全機制的套件設計,可當溫度過高時自動關閉噴嘴的加熱,以免溫度過高使機器受損。另外也有X、Y、Z三個軸運作時的最大限度保護,避免馬達持續走動而碰到機構邊界,此一功能只需透過簡單的觸動開關就能輕易完成。
因此,自己設計一個簡單的3D Printing其實並不複雜,這些基礎動作我們可以從一些簡單的Arduino實驗上就能學習到,像是步進馬達的控制就可從一般電子材料行買到小顆的步進馬達,透過兩相四線式的控制,使步進馬達正反轉向特定的步數,就能達成X、Y軸的移動。
3D Printing的延伸設計 - eggBot
國外有一群玩家,利用Makerbot的開放硬體概念,延伸設計Thing-O-Matic,將其簡化成一台可在蛋殼上面繪製彩色圖樣的小型機器-eggBot,透過電腦繪製好需要的樣式,自行換上麥克筆作為畫筆,即可畫出有趣的彩蛋圖樣,在復活節時顯得特別有趣!
eggBot的設計原理如同3D Printing,利用兩個步進馬達完成,一個步進馬達負責蛋殼的旋轉角度;另一個馬達負責往返繪製蛋殼上的曲面。較困難的地方在於畫筆的力度控制,eggBot設計團隊想出了一個簡單的方式解決。
關鍵在於利用麥克筆本身的重量,因為筆尖施壓在蛋殼上力度剛剛好,因此只需在畫筆上的支撐關節改為活動式,再藉由一個伺服馬達撐起這個活動關節,讓畫筆自然地抬起與放下,如此就像一個人的手腕一樣,可自動提筆與放下,相當完美。
圖三 : 從Google Sketch up軟體所繪製的3D模型檔案 |
|
開放硬體後的新思維
在這波開放硬體的浪潮中,我們應該思考前人所貢獻的寶貴資料如何善加利用,也許在這些開放資源中就能找到的獨特改良方式,不需仰仗別人的相關資源,也能幫助產業提昇競爭力。
對於客戶與使用者來說,此類開放硬體的好處在於不需太多的解釋,大多數有興趣購買的使用者多半已對此設計有一定程度的理解能力,只需將完整的安裝說明以及使用說明公開在網路上,建立一個可以溝通的社群管道,很快這樣的開放硬體社群就能發展起來,研發的意見也能從社群中取得,進而針對產品做正確的修正,更臻完美。
(作者為帝凱科技創辦人及Arduino.TW站長,對於開放硬體運動的推動一直不遺餘力)