2014年2月10日 星期一

[好文蒐集]RepRap 3D Printer 新手入門分享

自己動手做3D印表機的網友,分享了自己動手做的一些心得。
據說不久之後就會刪除文章,所以我轉錄過來我這。給大家參考。

RepRap 3D Printer 新手入門分享





適用對象 :
  • 不小心對 3dp 產生好奇心的人
  • 想了解 3dp 原理的人
  • 擔心這個又擔心那個 , 想要最好 , 但卻不行動的人
  • 有耐心的人 因為文太長 XD
我目前也只是一個剛玩沒多久的新手
因為好奇所以跟社團直接購買了一個 prusa i3 的套件 , 省掉一些找料上的時間損失
我的裝機經驗只有 prusa i3 但目前大多數RepRap 3dp 概念都跟 prusa i3 差不多
比較特別的應該是 Delta 吧
所以如果你是一個剛剛產生興趣 但還來不及完整了解 3dp 的人
你可以參考看看我的心得分享

如果你已經有一台機器
也成功印出過東西
我建議不要浪費時間往下看 !

大多數的文章 都偏向從 機器開始介紹
但是如果你打算無中生有的自己來
一定會有點不知所措 或是有一大堆的擔心
例如 : 可以用什麼材料? 可以印多大? 可以印多精細? 強度怎麼樣? 3D 軟體難不難?
原因是很多你擔心的問題 必須從觀念來討論
而不是選一台無敵的機器
先耐著性子 慢慢看完
你會發現 其實 機器不重要
(說實話90%的機器規格都差不多)
當然第一台還是建議你選用大多數人在玩的機器
避免出事沒人問的冏境



3D Printer 工作原理 :

在 wiki 上說得很清楚 目前 wiki : 3D 列印的技術
主要分為
選擇性雷射燒結(selective laser sintering,SLS)
直接金屬雷射燒結(Direct metal laser sintering,DMLS)
熔融沉積式(fused deposition modeling,FDM)
立體平版印刷(stereolithography,SLA)
數位光處理(DLP)
熔絲製造(Fused Filament Fabrication,FFF)
融化壓模式(Melted and Extrusion Modeling,MEM)
分層實體製造(laminated object manufacturing,LOM)
電子束熔化成型(Electron beam melting,EBM)
選擇性熱燒結(Selective heat sintering,SHS)
粉末層噴頭3D列印(en:Powder bed and inkjet head 3d printing,PP)
3D 列印的技術圖片的解說

而 RepRap 的機器目前都是採用 熔融沉積式(fused deposition modeling,FDM)
簡單說就是 把材料加熱到融化的狀態後 將它擠到列印的平面上 逐層的堆疊起來
YouTube : Prusa i3 printing

原理就是這樣的單純
  1. 加熱到材料融化
  2. 吐出來
  3. 1 ~ 2 不斷的循環
  4. 完成



3D Printer 工作路徑 :

如果你有看懂工作的原理 , 緊接著就應該會思考到
要怎樣才能讓機器畫出想要的形狀
目前採用 FDM 的機器 大多採用 G-code 的命令來執行要走的工作路徑 依照 wiki 的資料來說 , G-code 似乎不是 3D Printer 專用的東西 wiki : G-code
G-code 似乎早就被廣泛的應用在各種自動控制的機器當中
而 3D Printer 只是直接採用了這個標準

如何產生 G-code ? :
如果你有認真看過剛剛 wiki 的頁面
你會發現 G-code 所代表的命令有很多是 3D Printer 用不到的指令
例如 : M07 M08 M09 跟 "冷卻液" 有關的命令
所以我們就需要一些專門 替 3D Printer 產生 G-code 的軟體了
目前大家都俗稱這些為 切片軟體

G-code 的流程是這樣
  1. 準備好你的 3D 檔案
    基本上你用任何 3D 軟體都可以 , 因為在進行切片的時候
    切片軟體並不會管你用的是哪一套 3D 軟體
    你只要能夠輸出成切片軟體看得懂的通用格式就可以了
    以圖片來說 就類似 JPG 檔案這樣
  2. 將 3D 檔案轉換成 切片軟體看得懂的格式
    目前我的經驗 比較常用的格式是 STL 檔案
    所以你只須要確定你用的 3D 軟體 可以幫你輸出成 STL 就可以了
    輸出講白一點 就是另存新檔這樣而已
    例如 WORD 另存成 PDF
    中間沒有太多技術的困難度
  3. 將 3D 檔案匯入到切片軟體中
  4. 執行切片
    因為 FDM 的生成原理 是採用 逐層的堆疊的
    所以假設我們1層只能吐出0.2mm的材料
    而你的模型高度是10mm
    那就需要有 50層的路徑
    切片軟體的工作就是幫你把模型 每0.2mm切成一片 並產生每一片需要的工作路徑
  5. 完成並生成 G-code 檔案

產生完的 G-code 可能長這樣
G1 是命令的代碼 後面就是要執行的工作內容
G1 X101.000 Y55.000 E1.003
G1 Z0.5
G1 X0.000 Y0.000 E2.006
翻譯成中文就是
X軸 前進到座標101mm的位置
Y軸 前進到座標55mm的位置
E軸 捲動到 1.003 mm (E軸在 3D Printer 是負責吐材料的)
Z軸 抬高到0.2mm的位置
X軸 前進到座標0mm的位置
Y軸 前進到座標0mm的位置
E軸 捲動到 2.006 mm (E軸在 3D Printer 是負責吐材料的)
若你把這3行丟到 3D Printer 當中 你就可以得到這個只有 0.5 mm 高的 線條模型

就是這樣不斷的 移動 吐料 就能夠完成 3D 列印了

看一看模擬的圖片


所以這邊我想應該能釐清一個概念
我們需要打造一台 可以乖乖執行 G-code 的機器來完成列印
而不是打造一台機器 看看可以用哪一種 G-code
如果你從機器開始思考 你就會不知道 目標是什麼 怎樣動? 怎樣跑?
但從 G-code 開始思考 就很清楚了 , 讓機器能照做就好了

至於 G-code 是怎樣產生的原理
說白了就是一堆數學公式
但那是天才專屬的領域
不是我可以學會的 XD ~ 無法分享

3D 軟體 與 切片 的資源與建議 會放在最下面
現在先別急這一塊 喝口水忍耐一下繼續聽我亂講



3D Printer 步進馬達 移動的控制 與 列印精細度的關係 :

很無奈? 或是很訝異?
3D Printer 的原理其實就這樣子 沒有了...
不過原理本來就是很簡單的東西
困難的部分在於如何實做了 XD

首先我們已經知道 要能夠讓機器 依照 G-code 來運作
我們需要可以控制 X軸 Y軸 Z軸 的移動
和 E軸的吐料 加溫 等等

整個機器架構中 負責讓 X Y Z E 趴趴走的東西
我們叫它 步進馬達 RepRap : Stepper motor
簡單說明它的工作原理就是
給它1次電 它就會轉1次 , 給它10次 它就轉10次
當然原理並沒有那麼簡單 有興趣的話 就 google 吧
步進馬達跟一般常見的馬達如 四驅車用的那種
主要的差別是在 你每一次給它電時 它都會很精準地轉動一個固定的角度
以 prusa i3 的規格來說 是採用 1.8度的步進馬達 並做 1/16 微步進
也就是說 prusa i3 你給一次電 它會旋轉 0.1125 度
如果步進馬達轉一圈 360度 , 代表它動了 3200 步
如果步進馬達轉一圈 360度 , 能夠帶動皮帶移動 能夠帶動皮帶 400mm (40公分) , 代表步進馬達動1步可以只移動移動 0.125 mm

重點來啦 !!
步進馬達可以造成移動的最小單位是 0.125mm
這就表示在移動的控制上你的精細度可以到0.125mm

很多新手很關心 你那台機器可以印多細 它那台機器可以印多細
其實 可以多細的問題 是看你裝的馬達有多變態
市面上是買的到 0.9 度 1/16 微步進的馬達唷!!

但就如強調的文字 這是在移動的控制上的細緻程度
後面還有別的變數 ~ 會引響細緻的程度
所以暫時不需要積極的去尋找變態的馬達 , 1.8度 的就不錯用了

而另一個重點是 G-code 可以走多遠??
G1 X100000 可以嗎
結論是 可以的
只要你的機器可以移動的範圍有多大 就可以印多大

很多新手也關心列印的尺寸問題
尺寸的問題 跟電子零件無關 跟列印程式也無關 跟切片軟體也無關
而是你的機器結構 , 所以你只要讓 你想印多寬 就讓 X的桿子有多寬就可以了
當然 你要考慮結構堅固的問題嚕!!

PS. 我說的 給一次電 是簡單的講法 , 其實並不是真的讓它通電1次
這邊的電也不是直接給步進馬達的電
而是給驅動晶片的一個訊號
prusa i3使用的是 2相的步進馬達 它有2組線圈 , 要完成一次步進轉動其實需要 ... ...
有興趣去查原理吧 我不信我這邊亂講你聽得懂 XD
因為到現在 我也沒有很懂 !!



3D Printer 擠出頭 與 列印精細度的關係 :

我猜想 X Y Z 的移動 透過上面的那個影片 加上 簡單的說明
應該已經很容易做一個想像或是理解了
E (擠出材料)的部分 可能沒看過實機的人會比較難想像

我們回到你每天起床要做的第一件事 刷牙
如果要你在牙刷上漂亮的擠出 1mm 厚的牙膏
你會怎樣做
  1. 保持牙膏根牙刷之間固定的距離
  2. 施加固定的力道擠出牙膏
  3. 緩慢地用固定的速度移動你的牙膏
  4. 完成
盜圖來源 http://www.istockphoto.com/stock-photo-11929591-green-toothpaste.php?st=dd96663
沒錯 ~ 你每天都在幹的事情 , 就是 3D Printer 在幫你做的事
再來看一次 X Y Z E 幫你執行的動作
  1. 移動 Z 軸 保持 擠出頭 與列印平台的距離
  2. E軸用固定的速度 推擠線材擠出材料
  3. X Y 軸用固定的速度移動擠出頭
  4. 完成
基本上精細度的部分還是靠 X Y Z E 的步進馬達再控制
但是能擠出的最小量 則是靠擠出頭的孔徑大小
目前常見的線材約是 1.75mm 或是 3mm 的線材
因為材料很硬 所以不可能被擠出來
必須透過擠出頭的加熱 讓它變成熔融的狀態才能被擠出



目前我看過的擠出頭 有0.3 , 0.4 , 0.5mm的
代表在沒有干擾的情況下 , 你擠出的材料的直徑 可以細到 0.3 mm
(當然不可能沒有干擾)

擠出頭的設計很多 , 大多數的問題都在解決 過熱 溢料 卡料 等等長時間列印所發生的物理問題
而不是解決精細度的問題
別騙我 0.3 mm 還不夠你用 = =

很多是有多多?? 這麼多 RepRap : Extruders
我自己目前用的是 RepRap : J Head Nozzle
社群上也有很多人在自己研發 設計
因為我也只用過 J Head , 這邊無法給予更多的心得分享啦



3D Printer 電子控制板 :

了解了執行的過程 和 影響品質的原因
最麻煩的就是 倒底怎樣才能控制阿
這部分就是很麻煩的一堆問題了
畢竟大學就要花4年以上(考慮重修)教你資訊工程
然後教完後也沒幾個人真的寫得出東西
所以這真的是很困難的一個領域

不過好就好在 Open Source 這個瘋狂的概念
一堆天才等級的人們 一堆善良的瘋子
把做好的東西放在網路上 我們只要拿來用就可以了

目前以 Prusa i3 來說 需要用到的電子控制版有

Arduino Mega 2560
這是 3D Printer 的大腦 , 它負責處理你產生的 G-code , 去產生訊號給負責動作的零件
Arduino 也是 Open Source 的資源 , 你心情好也可以自己買零件做一個一樣的 , 官網都有電路圖可以抓
另外一提 ~ 雖然官網上的標價看起來很可怕 , 但在他們國家那是它們的消費水平 並沒有要把你當凱子
你可以在露天 或 光華商場找到其他廠商開發的 , 功能與規格都一模一樣 , 且"應該"都算合法的
當然如果你願意支持原廠 , 購買他們的產品會給它們更多的原力 XD

Ramps 1.4
這是 3D Printer 的??肌肉吧 XD , 它負責接收到大腦送來的訊號 , 然後共給負責動作的零件需要的電力
這個好像沒有官方的版本 , 因為如果你認真看 , 它其實在教你怎樣自己做一張 , 而不是告訴你去哪買

步進馬達驅動晶片
這是 3D Printer 的??我也不知道怎樣講了 XD , 因為步進馬達需要更細膩的工作 Arduino Mega 2560 能力不足 , 所以幫它裝個外掛
印象中如果純粹要讓步進馬達轉 光靠 Arduino Mega 2560 是可以辦到的
但因為 3D Printer 需要的街腳很多 Arduino Mega 2560 不夠用 , 加上需要更細緻的控制而需要 (這行我可能講的是錯的)
目前 Prusa i3 使用的是 A4988 的步進馬達驅動晶片 , X Y Z E 各需要 1 片 , 如果你想要做雙擠出頭 E 就要再多一片

The RepRapDiscount Smart Controller
如果你希望不接電腦就能列印 就另外需要一個 LCD 螢幕 , LCD螢幕野蠻多種的
這種好像比較多人用

不管你的機器長什麼樣子 , 只要是 RepRap 的架構下 用到的電子零件都是一樣的(應該啦 ~ )

電子電路的控制原理 就沒辦法多講了
有興趣的人可以去查詢 Arduino 的教學 , 大多數的教學文章都是用 Arduino Uno
Arduino Uno 跟 Arduino Mega 2560 主要的差別在
Arduino Uno 只有14隻IO腳
Arduino Mega 2560 只有54隻IO腳
簡單說就是 Uno 只能控制 14個開關 Mega 2560 可以控制 54個開關
但工作原理與程式寫法 是一模一樣的



3D Printer 韌體 程式 :

最後了 ~ 終於
我們準備好了電子零件
重點就是程式咧!!
當然有人寫好的啦
RepRap : Marlin 這邊是在介紹它有多偉大 ~ 開玩笑的
Github : Marlin 這邊是真的可以拿到它的程式的地方
你可以在 Github : Marlin 下方看到一大堆的 G-code
這邊就是我們 3D Printer 主要會用到的 G-code 了

把 Marlin 抓下來後
需要打開 Configuration.h 檔案
慢慢地逐行用 google 翻譯慢慢看
把需要設定的地方 調整成跟你機器一樣就可以了

最後上傳到 Arduino Mega 2560 讓大腦擁有智慧
就可以了



機器! 給我一台機器! :

很無奈的 如果你已經看到這一行
我並不打算給予任何機器的推薦
如果你有認真地看完文章
你會發現 機器用哪一台根本不重要
RepRap : Family Tree 這邊有上百種的 RepRap 家族機器
哪一台比較好??
精細度主要看的是步進馬達
吐料的細緻度是看噴嘴
列印最大尺寸是看你的桿子有多長
電子零件大家都一樣
哪一台比較好??
你看的喜歡就好 XD

機器的組裝
金屬零件 列印零件的採買
已經有太多人熱心分享了

我主要只是提供想嘗試的新手
先理解整個基本觀念
然後挑一台喜歡的造型來開始玩
不需要東擔心一下西擔心一下 這樣 ~

如果有按照 RepRap 精神所設計的機器
你都可以在 RepRap 找到所有詳細的資料
以 prusa i3 舉例 How to build Prusa i3
以 delta 舉例 GUS Simpson
以 Smartrap mini 舉例 Smartrap Build Manual
你可以看到每一台機器 都把所以需要的零件乖乖列出來
需要的 3D 列印零件 也都有檔案可以下載 , 你可以請社群有空的人幫你印 , 請記得付材料費與一些時間成本
因為幫你印的時間 , 它就不能玩了 XD

另外很多人會看到別人的機器有某些零件
很想要卻找不到檔案
那可能是因為是自己設計的不想要分享

或是在網路上找列印零件 常常都只找到 某一軸 , 都找不到完整的整套零件
因為在韌體上 X Y Z E 軸都是獨立工作的
所以往往大家改變設計都是一次改一個軸
但別擔心 X軸用A設計 , Y軸用B設計 只要設定正確 都是可以正常工作的

目前台灣也有越來越多的 工作坊
很多熱愛分享的玩家都在那邊聚集
也有工具可以當場借用
不過我都沒去過就是了 /_\
總之我想說 ~ 裝一台機器 資源很多不用擔心裝不起來
要勇敢!!



不能不貼的連結 :
3D印表機 DIY 建構筆記 : 太多教學了! 其實我也只看這邊的文章而已 XD
RepRapRepRap官網 : 英文不親切 輸 3D印表機 DIY 建構筆記 排第2也是理所當然 , 但耐心用google翻譯慢慢看 這邊有所有的資料與教學!
thingiverse3D 模型分享網站



因為如同我一直強調的 ~ 我只玩過 Prusa i3 XD
我比較著重在玩 韌體程式 和學習電子控制 , 沒有在玩列印
RepRap 的概念都一樣 暫時應該也不想玩別的機器

8 則留言:

  1. 有這番見解,真是厲害!

    回覆刪除
  2. gcode本來是用在cnc加工母機上所使用的(如車铣床)
    不過演變到現在,幾乎電腦控制的機械都變成用gcode了...

    大大您的筆記真的幫了我大忙!
    我打算自己動手做一台3D印表機,本來還苦無資源

    期待您有更多文章!

    回覆刪除
  3. 您好,請問您知道Marlin最大列印體積的限制是在哪裡更改呢?
    我的z軸都只走到200mm就停下來了,繼續送信號他也不理...找了很久似乎沒看到(可能是我漏了)苦腦中

    回覆刪除
    回覆
    1. #define X_MAX_POS 205
      #define X_MIN_POS 0
      #define Y_MAX_POS 205
      #define Y_MIN_POS 0
      #define Z_MAX_POS 200
      #define Z_MIN_POS 0

      刪除
  4. 寫得很詳細,大大借分享!!

    謝謝 :)

    回覆刪除
  5. 感謝!
    分享是最偉大的智慧,在這篇文章學習很多知識。

    回覆刪除