2015年5月17日 星期日

3DP : 近接開關距離與靭體設定調整

我的 3D printer 安裝了電容式近接開關以後,可能因為安裝的位置及方法的問題,並不太穩定,後來大部份時間還是以沒拆掉的微動開關在當限位開關。最近調整喉管散熱風扇的位置,本來安裝在前方的近接開關架會卡到風扇固定架,只好拆掉,重新做了一個放在右側的新架子,也好好的研究如何不動近位開關的安裝位置而能讓噴頭在最佳位置的方法。改用 Marlin 靭體中的「Z_PROBE_OFFSET_FROM_EXTRUDER」,它可以用來設定 Z-min 限位開關被觸發時, Z 軸的座標要修正的高度 (零減掉這個設定值),這比去轉動精度沒有很高的螺帽方便多了!


一般我們在進行三軸歸零的指令(G-codes 中的 G28),Z-min 的限位開關被觸發後,馬達不會再繼續往下動,而該高度也會被記錄為 Z軸的最低點「0」,之後 Z 軸的移動操作,照說都不會比該點要低。

在 Marlin 「Bed Auto Leveling」的設定參數中有個「Z_PROBE_OFFSET_FROM_EXTRUDER」,這個參數可以用來設定 Z 軸感應器觸發時,印表機噴頭距離列印平台有多遠,當我們在進行完「HOME」(G-codes 中的 G28) 以後,它會幫我們自動設定目前 Z 的座標為 「Z_PROBE_OFFSET_FROM_EXTRUDER」乘以負一的高度。這樣一來,感應開關被觸發時,Z 不再是「0」了,下一次執行移動 Z 軸的 G-codes (例如:「G1」)時,Z軸位置就會參考這個值,讓噴頭可以由最佳的高度開始列印。

如何找出最佳的「Z_PROBE_OFFSET_FROM_EXTRUDER」設定值呢?當然不可能拿尺量囉!我是用底下的方法找的:

調整感應開關位置


首先要調整 Z-min 的感應開關 (本文中用的是電容式近接開關) 安裝位置,讓感應器觸發時,印表機的噴頭是高於平台,接近但沒碰到列印平台。

HOME (G28)

接著先執行一次 X、Y、Z 的 HOME (G-code : 「G28」),讓三軸歸零。


更改 Z 位置 (G29)

然後,我們必須使用到「G92」的 G-code,因為在歸零後,噴頭已經在最低的位置( 0 ),我們無法以一般移動指令讓噴頭更低。但是「G92」可以讓我們設定噴頭目前到底是在哪兒(這個 G-code 只會改數字,不會轉動任何馬達),只要目前的 Z軸座標大於零,我們又可以繼續用移動的指令來轉動步進馬達,移動噴頭了 (嗯~機器果然很好騙,只認數字的)。

例如送出底下的 G-code 給印表機:

G92 Z10

假設使用的單位是 mm ,印表機就認定目前噴頭在 Z 軸高度 10mm ,雖然在執行上面的「G92」G-code 之前, Z 軸高度是零,執行完已經變成 10,這樣子,即使 Z-min 限位開關已觸發了,噴頭仍然可以繼續往下移動。

調整噴頭移至最佳高度

再來,我們就可以利用列印程式的「手動模式」或是 G-codes,慢慢調低噴頭高度,搭配「A4 影印紙」或是個人習慣的調整方式,找出印表機噴頭的最佳高度。找到後,計算的工作就可以登場了。

計算 Z_PROBE_OFFSET_FROM_EXTRUDER

以前面「G92 Z10」的例子來說,我們是由「10mm」當基礎,往下找到最佳的高度,如果此時 Z 軸的高度是 9.67mm (可以看印表機的 LCD 或是執行「M114」的 G-code 來查詢) ,計算一下目前的高度減掉原來的高度:

9.67 - 10 = -0.33

上面的計算結果「-0.33」就是 Marlin 「Bed Auto Leveling」的「Z_PROBE_OFFSET_FROM_EXTRUDER」應該填入的值。

最後我們在 Marlin Configuratiion.h 中找到「Z_PROBE_OFFSET_FROM_EXTRUDER」,修改為計算完的最佳值,重新編譯並 upload 到印表機裡。上載完畢就可以準備進行測試列印囉!

測試

修改完的靭體會有什麼變化呢?

印表機在執行完 HOME (G-code 「G28」) 以後,如果查看 LCD 的畫面上,或是執行 G-code 「M114」並觀察回應的各軸座標訊息,都可以看到 Z 並不是 0 ,而是 「Z_PROBE_OFFSET_FROM_EXTRUDER」設的定值乘以負一。以前面的例子來說,可以看到 Z 為「0.33」。所以,當我們執行底下的 G-code 指令:

G1 Z0

因為狀態上,限位開關觸發點的 Z 座標是 0.33,而「G1 Z0」是要移到較低的座標 0 ,所以噴頭會往下移動 0.33mm 才停止。再次觀察LCD畫面 (或是執行 G-code M114),原本  Z 的 0.33 變成新的座標 0 了。

這個方法讓噴頭可以修正到最佳的位置,又不用調開關位置調到快抓狂,不由的又再度佩服設計這個功能的人了。

Q & A

  • Q : 列印平台上有那麼多點,要找哪一點來「計算」「Z_PROBE_OFFSET_FROM_EXTRUDER」?
    A:如果平台是平的,找哪一點都沒問題,像我的印表機是中央稍高,周圍略低,而平常大多用中間在列印,因此,就將噴頭先移到列印平台中央,才開始找最佳高度。主要是要計算噴頭和開關觸點的差距,其它各點應該差不多。
  • Q : 硬體的部份,為什麼要讓噴頭比平台略高?
    A : 比平台高主要是不希望歸零(HOME)時,噴頭去撞平台。所以在 Marlin 「Z_PROBE_OFFSET_FROM_EXTRUDER」的註解中就說「-below (always!)」,開關的觸發點時,噴頭是高於平台的。「墜機」可是不好玩的!
  • Q : 感應器(開關) 上沒有 LED 顯示,怎麼知道「觸發」了沒?
    A : 可以使用 G-code 「M119」來查詢,如果顯示「TRIGGERED」表示已觸發,顯示狀態為「open」則是未觸發。

本文使用的 G-codes

  • G28 : 讓各軸歸零。各軸的馬達會轉動,直到觸發限位開關才停止。
  • M114 : 查詢目前的位置。馬達不會有任何動作。
  • M119 : 查詢各限位開關的觸發狀態。馬達不會有任何動作。
  • G92 : 設定目前的位置,後面可以指定要設定哪一軸的位置。馬達不會有任何動作。
  • G1 : 轉動馬達,將噴頭移動到指定的位置。後面可以接 Xn Zn Yn (n 為座標)。

相關文章



5 則留言:

  1. 我剛好在做平台自動校正設定,碰到一些問題,剛好爬文看到你的分享.希望你不吝賜教.Z Probe我是設了,但有點想不通,你用紙將噴頭歸零後,再設G92 Z10在平台上,但是真實上你怎麼還能調低 Z 軸低於平台?
    為了避免撞車平台,我用#define MANUAL_Z_HOME_POS 設短40mm, 所以零點高於平台40mm, 但我觀察LCD數據, Z軸竟跑到-20mm,我要設哪裡使它不會低於零. 我現在最頭痛是 Z-Probe都不會擺下來做測試,LCD Z= - 20,在我的Z Offset 4.2時都沒擺下來. 我要改哪裡? 因為我試過那些Offset 值,但是都是-20, -26, -16....我會繼續試試.只是有人指導會快些. 謝謝!

    回覆刪除
    回覆
    1. Mark 您好:
      建議您檢查一下 Z_PROBE_OFFSET_FROM_EXTRUDER , 如果 HOME 以後, LCD 顯示的 Z 值是 -20 , 表示有設了 Z_PROBE_OFFSET_FROM_EXTRUDER, 因為 Z=-20 , 開始列印時, 噴頭會先擡高 20 , 反之, 如果顯示的 Z 為正值, 噴頭會下壓。

      刪除
  2. 謝謝你的回覆! 我是用這版固件https://github.com/RichCattell/Marlin
    我設了:
    // Z-Probe variables
    // Start and end location values are used to deploy/retract the probe (will move from start to end and back again)
    #define Z_PROBE_OFFSET {-31, -10, -3.4, 0} // X, Y, Z, E distance between hotend nozzle and deployed bed leveling probe.
    #define Z_PROBE_DEPLOY_START_LOCATION {20, 50, 30, 0} // X, Y, Z, E start location for z-probe deployment sequence
    #define Z_PROBE_DEPLOY_END_LOCATION {5, 50, 30, 0} // X, Y, Z, E end location for z-probe deployment sequence
    #define Z_PROBE_RETRACT_START_LOCATION {50, 60, 20, 0} // X, Y, Z, E start location for z-probe retract sequence
    #define Z_PROBE_RETRACT_END_LOCATION {50, 60, 10, 0} // X, Y, Z, E end location for z-probe retract sequence
    因為我的Z-Probe比噴頭低3.4mm, 但是執行自動校正時,LCD顯示-20, 而噴頭確實低於零點20mm.我會再試調其他參數看能否調高此值.
    我還是頭痛,Z-Probe部會放下來. 我看程式,它有deploy的命令但Z Probe卻不放不知是哪個參數影響它的作動時間?

    回覆刪除
    回覆
    1. Mark 您好:
      哈~ 這一版的 firmware 參數我也沒搞懂, 後來放棄。我的 Kossel Mini 型的用較舊的 firmware :
      https://github.com/jcrocholl/Marlin

      而 Prusa i3 則用
      https://github.com/MarlinFirmware/Marlin

      本文的筆記是 Prusa i3 的。

      刪除
    2. 謝謝你的回覆!我發現每個版本都有一些問題,compiled 時都有一些coding問題以致無法完成compile. 我再試試看或找找其他版本!謝謝你的幫助!

      刪除

 
© 2009. Design by Pocket