網頁

3D印表機的XYZ的空間座標 基於Prusa i3

在這篇文章中,我會介紹3D印表機結構和空間座標的關係。不過在談Prusa i3結構的空間座標前,我想先聊一聊步進馬達與限位開關的關係。至於限位開關的電路怎麼接,我想有許多的文章都有教學,不清楚地可以拜讀一下這篇文章End Stop 電路介紹


首先我用幾篇自己讀起來覺得很不錯的文章,來跟大家解釋步進馬達的原理
步進馬達基本的構造與動作原理
5相步進馬達的構造
定子的構造
5相步進馬達的動作原理


看完上面4篇文章之後,相信大家對步進馬達也了解許多,而我們一般使用的步進馬達步進角普遍是1.8度,意思就是說步進馬達給一個訊號時它會轉動1.8度的角度。但問題是這個角度在3D印表機的控制來說,還是達不到足夠精密的程度,那這樣該怎麼辦呢?

這時候在步進馬達的驅動晶片上,就有了"微分"的功能,用講的不好講解,還是在看一下網站吧:微步級驅動的動作原理

步進馬達的驅動晶片透過電流比例的控制,將步進馬達一步1.8度,在劃分為許多的微步。舉例來說我使用的步進馬達驅動電路板A4988,它的微步細分可以達到1/16,意思就是說將每一步(1.8度)再細分為1.8/16=0.1125度左右,如此一來就能滿足3D印表機的精度需求了,然而在更進階的驅動晶片中,甚至可以看到更高的微步分割。

【A4988微步腳位】



如此一來透過微步劃分的技術後,就足夠應付3D印表機中的精度了!
但是限位開關在印表機中主要是要幹嘛呢?

在3D印表機中,限位開關通常被用來檢測和限制機器運動的範圍,以確保擠出機或熱床不會超出印表機的工作範圍。限位開關一般安裝在印表機的各個運動部件的兩端(min與max),它們可以檢測到物運動部件的範圍,並在碰觸到時向控制電路發送訊號,以緊急停止運動並防止損壞。

同時限位開關還可以在機器啟動或列印前進行檢測(Auto home),畢竟大多數的印表機步進馬達都是開迴路控制,也就是本身並不知道噴頭與熱床的位置在哪,而透過歸零校正的方式,可以確保印表機的正常運作。


開迴路的意思大概就是說,步進馬達雖然能精準地控制轉了幾度、移動了多少距離,但是它並不知道它的原點位置(Home)在哪,因此我們必須要在XYZ上各裝上一個限位開關,才能達到歸零的偵測動作。

從這張RAMPS的電路圖中可以看的出來,XYZ各需要一顆限位開關。
【RAMPS電路圖】

但為甚麼一般RAMPS都只接XYZ的min限位開關,而不接max的限位開關呢?
因為在切片程式內,在不失步或異常的狀況下,運動部件是不會跑超過屬於他的行程的,因此大多數的狀況下就不接了,因為以一般家用型3D印表機的步進馬達來說,就算出問題撞到max位置,也頂多卡住發生異音而已,是不太會出甚麼問題損壞機件的。


回歸正題,講了一大堆讓我們來聊聊空間座標吧。
首先3D印表機顧名思義就是印3D的東西,因此一定有所謂的XYZ座標。
而為了方便起見,3D印表機XYZ在G-clode中一律都是正的座標值。

【補充:G-code 是一種指令語言,用於控制3D列印機等自動化機械設備。G-code 中包含一系列指令,描述了噴頭及熱床在空間中的移動路徑、移動速度、擠出速率或溫度控制等。切片軟體的目的就是從3D模型中,轉換成機器讀的懂的語言使其運作】


先從Prusa i3的原理說起,它是熔融沉積造型(FDM)的技術,想像一下XY軸是一張圖畫紙,我們一層一層的疊上去(Z軸),就能做出一個模型出來了。而XY軸的圖畫紙就是我們的第一象限,而大家都知道第一象限的座標是(+,+),沒有負值的。(有些特殊用途的話例外,但在此不多做討論)

【第一象限】

這時讓我們加上Z軸,就是3D印表機的空間座標了。
也就是說紅色方塊的地方就是3D印表機所使用的座標系統。

【3D印表機座標系統】


這時候我們就想要了解,那Prusa i3的原點位置(Home)在哪呢?

這張圖是我對Prusa i3 3D印表機使用Auto home之後的歸零位置。

【Auto home】

由圖片中可以了解,Z軸的原點是噴頭與工作平台接觸的地方(怎麼調整請參考如何校正床台水平)。而XY軸的原點就是我上面圖片的第一象限的(0,0)的位置,如果由上往下拍的話大概如下圖中,紅色熱床的左下角的黑點所示。

【XY HOME位置(黑色圈圈處)】


至於限位開關要怎麼裝呢?下面依序展示各軸的限位開關:
【X END STOP】

【Y END STOP】

【Z END STOP】


我發現在3D印表機的論壇上,常常會有人將END STOP裝反,而出現如下圖的問題。

【顛倒問題(圖片來源Reprap.Taipei)】


為甚麼會這樣呢? 讓我們回顧一下上面的XY空間圖。
【XY座標】

如圖所示,當3D印表機今天要一層一層的畫圖的時候,必須要先回到空間原點(黑圈處),而噴頭就是我們的"鉛筆頭"。回歸原點的時候相對於機台,就是X軸的噴頭要往最左邊跑,而Y軸的熱床要往最上面跑。

不知道有沒有眼尖的網友發現,Y軸的加熱床邏輯上跟座標不太一樣,原因是相對於噴頭,如果要在圖紙上畫一條向上的箭頭,加熱床必須往下跑


也因為這個原因,許多網友在自行組裝3D印表機時就在這個地方卡住了,而將馬達的線顛倒過來插,並且將Y軸的END STOP裝在圖片的下方處。

如此一來3D印表機的工作原點變成在如下圖所示的黑點,因此會造成列印出來的工件呈現左右正確,但上下顛倒的狀況


讓我們看看Repetier-Host軟體所顯示的工作原點。大家可以發現在預覽的視窗中,它所指向的工作原點與我上圖的座標相符,因此才能順利打印。



最後要強調的是,XY軸的限位開關安裝距離並沒有這麼考究,因為我們只是要在一張圖紙上(加熱床)畫上工件,XY方向偏了一些也不要緊,頂多浪費了一點列印空間而已。

但是Z軸就不一樣了,因為關係到噴頭與加熱床的距離(這非常重要!!!),因此在Z軸的限位開關上才設計了一顆微調螺絲給我們調整,基本上列印第一層調整的好就成功一半了。

【Z軸微調螺絲】


還有一件事情勢需要去注意的。
當今天列印工作完畢時,切片軟體會執行下面的代碼(slic3r預設,其他切片軟體我就不太確定了)


M104 S0 ; turn off temperature (關閉加熱)
G28 X0 ; home X axis (X軸回歸原點)
M84 ; disable motors (關閉所有步進馬達)

從文章一開始的講解應該能理解,當步進馬達通電之後,它就是屬於"吸住"的狀態,因此除非你硬扳硬拉,不然XY軸是拖不動的,而打印結束後M84指令會讓所有馬達關閉(鬆開),因此就可以手動將加熱床給拖出來,並且取出你的工件了。這一個指令也類似於在LCD控制面板上的Disable Steppers選項。


20230310補充:
現在市售的3D印表機都已經組裝好,很少人需要在自己去了解空間座標以及限位開關了,甚至目前大部分的步進馬達驅動晶片中,都帶有電流感測的功能,也因此多半都是透過用碰撞的方式來歸回原點,如此一來在佈線上也精簡了許多。

比起以前真是幸福許多呢。