RepRap Prusa i3 平臺自動補正
平臺校正不但費時,而且經(jīng)常失敗,時在是狠令人洩氣!期盼了好一陣子,Marlin終於將平臺自動補正的功能加進來了。∵@個功能將原本Z軸的Endstop,改裝到擠出頭的旁邊,讓Endstop直接接觸打印平臺,讓Marlin值接測量到平臺的實際位置。不但如此,Marlin會測量平臺上三個不同位置,然后計算出整個平臺傾斜的狀況,并依此補正打印空間的水平方向,讓打印做品跟著平臺一起傾斜,作品本身的三維維持垂直。如此一來,就不必每次打印前,都要耗費時間跟精神,手動做平臺校正工作。
硬體
伺服馬達我選用SG-90,比較輕巧,耗電也不多,可以直接使用RAMPS的5V電源而不至於讓RAMPS當(dāng)機。
i3用的伺服馬達支架,以及探針腳,我放在這邊:
http://www.thingiverse.com/thing:182889
探針的微動開關(guān),直接使用用Z軸的EndStop。不過走線比較長,要重新佈線。
探針的最低點,要比噴頭的最低點還低,但不要低過一公分,避免探測過程中發(fā)生碰撞。
伺服馬達接線如下圖所示:
韌體設(shè)定步驟
預(yù)先燒錄
將configuration.h中以下這幾行的註解符號刪去(行首的 "http://" 刪掉)
#define ENABLE_AUTO_BED_LEVELING // Delete the comment to enable (remove // at the start of the line)
#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
#define SERVO_ENDSTOPS {-1, -1, 0} // Servo index for X, Y, Z. Disable with -1
#define SERVO_ENDSTOP_ANGLES {0,0, 0,0, 165,60} // X,Y,Z Axis Extend and Retract angles
將 NUM_SERVOS 改為1
#define NUM_SERVOS 1 // Servo index starts with 0 for M280 command
將 Marlin 燒入 RAMPS
燒錄完畢后,伺服馬達會移動到60的位置。
使用M code "M280 P0 S{angle}"可以控制伺服馬達轉(zhuǎn)動到指定的位置(例如M280 P0 S60),找出探測時應(yīng)該要在幾度,收起探針應(yīng)該要幾度。假設(shè)找出來的度數(shù)分別是165度跟60度。
將找出來的度數(shù)填回"SERVO_ENDSTOP_ANGLES"。然后重新燒錄Marlin。
測量探針與擠出頭的相對位置
在打印臺中央做個小記號,然后移動擠出頭的位置,讓擠出頭正好碰觸記號。
用G code "G92 X0 Y0 Z0"讓 Marlin 把現(xiàn)在位置當(dāng)作原點。
用G code "G1 Z30" 把Z軸抬高。
用M code "M401",讓伺服馬達移動到探測的位置。
用控制軟體移動XY軸,讓探針接觸點在記號的正上方(這個步驟不必非常精確,位置大概對就好)。
用控制軟體,讓Z軸每次下降0.1mm,并檢查探針是否被觸發(fā)?梢杂肕 code "M119"來確認(rèn)是否觸發(fā)。這個步驟必須非常精確,要測量到探針剛好被觸發(fā)時Z軸的高度。
觸發(fā)后,使用M code "M114"讀回目前XYZ座標(biāo)。(如果有LCD,可以直接參考LCD上的數(shù)據(jù)。控制軟體上的XYZ座標(biāo)會有錯誤,請不要參考。)
讀出來的座標(biāo),乘以負一之后填入設(shè)定檔。假設(shè)M114讀回來的座標(biāo)是 X:24.3 Y:-31.4 Z:5.1,則在設(shè)定檔中,找到以下這三行,并且把數(shù)值如下填好。
#define X_PROBE_OFFSET_FROM_EXTRUDER -24.3
#define Y_PROBE_OFFSET_FROM_EXTRUDER 31.4
#define Z_PROBE_OFFSET_FROM_EXTRUDER -5.1
設(shè)定測量位置
這四個參數(shù)用來設(shè)定測量面的邊界,請依照機器XY工作范圍的邊界做縮減后,填入設(shè)定檔。如果手邊的機器是 Prusa i3,可以直接使用以下的數(shù)據(jù)。
#define LEFT_PROBE_BED_POSITION 30
#define RIGHT_PROBE_BED_POSITION 140
#define BACK_PROBE_BED_POSITION 140
#define FRONT_PROBE_BED_POSITION 30
測量過程中XY軸移動的速度,單位是mm/min,建議用預(yù)設(shè)值就好。
#define XY_TRAVEL_SPEED 6000
探測前抬高Z軸,避免探測腳與平臺相撞?梢韵仍O(shè)到50mm。如果有把握不會撞到,再回來改。
#define Z_RAISE_BEFORE_PROBING 10
探測過程中抬高Z軸。如果平臺沒有傾斜得狠厲害,探測過程中應(yīng)該是不會撞到平臺的。用預(yù)設(shè)值就狠安全了。
#define Z_RAISE_BETWEEN_PROBINGS 10
最后燒錄
相關(guān)設(shè)定都完成了,再燒錄一次Marlin,機器就具備平臺自動補正的功能了!
G-code Prefix修改
機器只會照著Gcode的指令工作,一般切片軟體產(chǎn)生出來的G code,并不會通知機器要做平臺自動補正。如果沒有加上自動補正的命令稿在 G code Prefix裡面,那就沒辦法享受到自動補正的功能,甚至還會造成機器的傷害。千萬要小心、耐心做好以下的步驟。
KISSlicer
M104 S2 開始加熱擠出頭
G92 Z02 目前的Z位置設(shè)為原點
G1 Z102 Z向上移10mm,避免探針放下時發(fā)生碰撞。
G28 Y2 Y軸歸零
G28 X2 X軸歸零
G1 X100 Y100 F60002 擠出頭位移到平臺中心
M4012 放下探針
G28 z2 Z軸歸零
G292 平臺補正偵測
G1 Z5 F3000 2 抬高Z軸
M109 S2 等待溫度到達工作溫度
M822 E軸使用絕對座標(biāo)
Slic3r
M104 S[first_layer_temperature]2 開始加熱擠出頭
G92 Z02 目前的Z位置設(shè)為原點
G1 Z102 Z向上移10mm,避免探針放下時發(fā)生碰撞。
G28 Y2 Y軸歸零
G28 X2 X軸歸零
G1 X100 Y100 F60002 擠出頭位移到平臺中心
M4012 放下探針
G28 z2 Z軸歸零
G292 平臺補正偵測
G1 Z5 F3000 2 抬高Z軸
M109 S[first_layer_temperature]2 等待溫度到達工作溫度
M822 E軸使用絕對座標(biāo)
修改好之后重新做切片,就可以開始測試平臺自動補正的功能了。
實際使用時Z軸高度可能還是會有些誤差,需要回頭微調(diào) Marlin 中的 Z_PROBE_OFFSET_FROM_EXTRUDER 參數(shù)。
參考資料
https://github.com/ErikZalm/Marlin
http://reprap.org/wiki/RAMPS_1.4
http://kisslicer.com/
http://slic3r.org/ |
|