Prusa i3 自動調平設定—Marlin 設定與校正

先瞧下個人所錄製關於使用電感式近接開關的自動調平影片。

關於硬體與電路安裝部分,已於:Prusa i3 自動調平設定—硬體與電路部分 一文分享。

從硬體、電路至 Marlin 設定,國外這一篇文章寫得甚好:Enable Auto Leveling for your 3D Printer with an inductive sensor (Marlin Firmware)

Marlin 設定

關於 Marlin 韌體 (firmware)的版本,這裡我是採用國內先進熱心所修改之繁體中文版 Marlin-1.1.0-RC8 (繁體中文+雷射控制顯示)。當然要先在 PC 上安裝 Arduino IDE (我都是下載最新版本使用),並連接 USB 線至 3D印表機,然後編輯修改 Marlin 設定後再上傳至 Arduino Mega 2560 + RAMPS1.4 主板上。

基本安裝與簡單設定可參考:Arduino IDE 1.0.6 安裝使用 及 Marlin Configuration.h 預覽;關於 Marlin 的設定說明,可參考:Marlin 固件的配置說明

這裡我只針對個人關於自動調平設定的摘記。


Configuration.h
=======================================================

//set to true to invert the logic of the endstop.
#define Z_MIN_PROBE_ENDSTOP_INVERTING false
 
#define DEBUG_LEVELING_FEATURE
#define FIX_MOUNTED_PROBE  ;inductive probe
 
// The Z_MIN_PIN will then be used for both Z-homing and probing.
#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
// Enable Z Probe Repeatability test to see how accurate your probe is
#define Z_MIN_PROBE_REPEATABILITY_TEST
 
// If true, axis won't move to coordinates less than HOME_POS.
//設定為 fasle,否則無法讓噴頭往下。寫入韌體後可再設回 true,以保護噴頭。
#define min_software_endstops false
 
//Probe several points in a grid.
#define AUTO_BED_LEVELING_BILINEAR
 
  // Set the boundaries for probing (where the probe can reach).
  // 這是近接開關偵測時會移動至底床的位置,需要自行測量,以免開關超出底床外
  #define LEFT_PROBE_BED_POSITION 43
  #define RIGHT_PROBE_BED_POSITION 195
  #define FRONT_PROBE_BED_POSITION 24
  #define BACK_PROBE_BED_POSITION 194
 
//Enable detailed logging of G28, G29, M48, etc.
#define DEBUG_LEVELING_FEATURE
 
// - Prevent Z homing when the Z probe is outside bed area.
#define Z_SAFE_HOMING
 
#define EEPROM_SETTINGS  ;開啟後才可以將設定儲存至 EEPROM

Z軸位移校正

將修改後的 Marlin 上傳至控制主板,重新啟動,再來就是要調整近接開關與噴嘴上下間距的位移 (offset),這點相當重要。可參考:Z-Probe 近接開關距離調整 - inductive proximity sensor (接近開關) Part II

這裡我是利用 Reptier-Host 遠端控制 Prusa i3 的運作。其實就是透落一連串 G-Code 的指令來操作控制。關於 G-Code 指令的分類說明,也可參考此篇:DNE G Code in Marlin

只要每次移動到我的 Prusa i3,我就會重新再次校正調整位移數值,並寫入至 EEPROM 內。下列所有 G-Code 指令均是透過 Reptier-Host 操作的。

// 先初始化 Offset 距離為0

M851 Z0  ;reset to Z0
M500 ;save to EEPROM
G28 ;Home all axes

我現在歸零的位置是在底床的中間位置,並且當噴嘴歸零後會自動上升Z軸10mm,以保護噴嘴移動時不會碰觸平台。所以需要透過 Reptier-Host 讓Z軸再往下移動 10mm 真正回到 Z0 的位置。

此時噴嘴是無法再往下位移的,除非透過 G92 指令設定目前的位置,可參考:3DP-近接開關距離與靭體設定調整

G92 Z10  ;設定目前 Z0 位置為 Z10,但電機馬達並不會移動,需另行下指令使其移動。

再來就是利用 Reptier-Host 的Z軸移動操作,每次調整我是以 0.1mm 粗調、0.01mm 微調,目的是在往下移動過程中,逐漸讓噴嘴接近平台約1張A4紙距離,使其可穿進去,然後來回抽動時會有些卡卡的感覺,這就是 Offset 位移的距離。觀察 Reptier-Host Z軸的移動距離,例如現在顯示 9.02mm,而原來是 10mm,Offset 位移就是: 9.02- = -0.98。

M851 Z-0.98  ;噴嘴下降了 0.98mm (Offset)
M500  ; save to EEPROM

好了,重新啟動,直接下達:

G28  ;Home all axes
G29  ;Auto bed leveling

此時就會如同影片那樣歸零後會啟始自動底床調平程序,噴嘴往九個點動態偵測位移距離。

目前我是把自動調平的指令 (G29)寫入至切片軟體 (如 Cura or Simplify3D)的啟始Script內容。如下是我目前 Simplify3D 內的 Starting Script:

G28 ; Home
G29 ; Auto Bed Leveling
G1 Y+3.0 X152 F1500.0 ; move out of print volume
G1 Z0.3 ; move z to 0.3mm to avoid scraping bed
G1 X152.0 E9 F500.0 ; start purge
G1 X112 E12.5 F500.0 ; finish purge line

對於這類切片軟體的參數與相關設定,個人仍是持續學習與摸索中,並非是最佳化的設定。例如我會希望先啟動自動調平程序後回到左上角位置,然後再行加熱到指定的溫度才開始打印的程序,免得時常會在熱床各處位置上留下「鼻涕」。後續再來研究如何達成上述的期望,目前就是先能用就好。

文章導覽

   

共有 6 則迴響

  1. 你好,
    我是新手,對軟體一竅不通,想請問大哥 “// Set the boundaries for probing (where the probe can reach).”這指的是什麼?如何測量?是指噴頭在加熱板內可移動的距離嗎?感謝你抽空回答。

  2. 還沒有收到哦!CoreXY Hypercube 結構材料我也準備好了也是我下一目標。https://www.facebook.com/groups/reprap.taipei/?multi_permalinks=1340941002610155&ref=notif&notif_t=like&notif_id=1493863533290997

  3. 還沒有收到哦!CoreXY Hypercube 結構材料我也準備好了也是我下一目標。

  4. Prusa i3這台跟你一樣改的遠程進料及使用電感式接近關閉,使用了Marlin-1.1.0-RC8修改了Configuration.h列印位置一直都在平台上10CM左右一直下不來,有參考過你發表文章中的設定方式一直下不來,不知那有問題?你是否可以提供你的Marlin-1.1.0-RC8給我參考那,搞一星期了

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *