RepRap Prusa i3 平臺(tái)自動(dòng)補(bǔ)正
平臺(tái)校正不但費(fèi)時(shí),而且經(jīng)常失敗,時(shí)在是狠令人洩?dú)猓∑谂瘟撕靡魂囎樱琈arlin終於將平臺(tái)自動(dòng)補(bǔ)正的功能加進(jìn)來(lái)了!!這個(gè)功能將原本Z軸的Endstop,改裝到擠出頭的旁邊,讓Endstop直接接觸打印平臺(tái),讓Marlin值接測(cè)量到平臺(tái)的實(shí)際位置。不但如此,Marlin會(huì)測(cè)量平臺(tái)上三個(gè)不同位置,然后計(jì)算出整個(gè)平臺(tái)傾斜的狀況,并依此補(bǔ)正打印空間的水平方向,讓打印做品跟著平臺(tái)一起傾斜,作品本身的三維維持垂直。如此一來(lái),就不必每次打印前,都要耗費(fèi)時(shí)間跟精神,手動(dòng)做平臺(tái)校正工作。
硬體
伺服馬達(dá)我選用SG-90,比較輕巧,耗電也不多,可以直接使用RAMPS的5V電源而不至於讓RAMPS當(dāng)機(jī)。
i3用的伺服馬達(dá)支架,以及探針腳,我放在這邊:
http://www.thingiverse.com/thing:182889
探針的微動(dòng)開(kāi)關(guān),直接使用用Z軸的EndStop。不過(guò)走線比較長(zhǎng),要重新佈線。
探針的最低點(diǎn),要比噴頭的最低點(diǎn)還低,但不要低過(guò)一公分,避免探測(cè)過(guò)程中發(fā)生碰撞。
伺服馬達(dá)接線如下圖所示:
韌體設(shè)定步驟
預(yù)先燒錄
將configuration.h中以下這幾行的註解符號(hào)刪去(行首的 "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
燒錄完畢后,伺服馬達(dá)會(huì)移動(dòng)到60的位置。
使用M code "M280 P0 S{angle}"可以控制伺服馬達(dá)轉(zhuǎn)動(dòng)到指定的位置(例如M280 P0 S60),找出探測(cè)時(shí)應(yīng)該要在幾度,收起探針應(yīng)該要幾度。假設(shè)找出來(lái)的度數(shù)分別是165度跟60度。
將找出來(lái)的度數(shù)填回"SERVO_ENDSTOP_ANGLES"。然后重新燒錄Marlin。
測(cè)量探針與擠出頭的相對(duì)位置
在打印臺(tái)中央做個(gè)小記號(hào),然后移動(dòng)擠出頭的位置,讓擠出頭正好碰觸記號(hào)。
用G code "G92 X0 Y0 Z0"讓 Marlin 把現(xiàn)在位置當(dāng)作原點(diǎn)。
用G code "G1 Z30" 把Z軸抬高。
用M code "M401",讓伺服馬達(dá)移動(dòng)到探測(cè)的位置。
用控制軟體移動(dòng)XY軸,讓探針接觸點(diǎn)在記號(hào)的正上方(這個(gè)步驟不必非常精確,位置大概對(duì)就好)。
用控制軟體,讓Z軸每次下降0.1mm,并檢查探針是否被觸發(fā)。可以用M code "M119"來(lái)確認(rèn)是否觸發(fā)。這個(gè)步驟必須非常精確,要測(cè)量到探針剛好被觸發(fā)時(shí)Z軸的高度。
觸發(fā)后,使用M code "M114"讀回目前XYZ座標(biāo)。(如果有LCD,可以直接參考LCD上的數(shù)據(jù)。控制軟體上的XYZ座標(biāo)會(huì)有錯(cuò)誤,請(qǐng)不要參考。)
讀出來(lái)的座標(biāo),乘以負(fù)一之后填入設(shè)定檔。假設(shè)M114讀回來(lái)的座標(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è)定測(cè)量位置
這四個(gè)參數(shù)用來(lái)設(shè)定測(cè)量面的邊界,請(qǐng)依照機(jī)器XY工作范圍的邊界做縮減后,填入設(shè)定檔。如果手邊的機(jī)器是 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
測(cè)量過(guò)程中XY軸移動(dòng)的速度,單位是mm/min,建議用預(yù)設(shè)值就好。
#define XY_TRAVEL_SPEED 6000
探測(cè)前抬高Z軸,避免探測(cè)腳與平臺(tái)相撞。可以先設(shè)到50mm。如果有把握不會(huì)撞到,再回來(lái)改。
#define Z_RAISE_BEFORE_PROBING 10
探測(cè)過(guò)程中抬高Z軸。如果平臺(tái)沒(méi)有傾斜得狠厲害,探測(cè)過(guò)程中應(yīng)該是不會(huì)撞到平臺(tái)的。用預(yù)設(shè)值就狠安全了。
#define Z_RAISE_BETWEEN_PROBINGS 10
最后燒錄
相關(guān)設(shè)定都完成了,再燒錄一次Marlin,機(jī)器就具備平臺(tái)自動(dòng)補(bǔ)正的功能了!
G-code Prefix修改
機(jī)器只會(huì)照著Gcode的指令工作,一般切片軟體產(chǎn)生出來(lái)的G code,并不會(huì)通知機(jī)器要做平臺(tái)自動(dòng)補(bǔ)正。如果沒(méi)有加上自動(dòng)補(bǔ)正的命令稿在 G code Prefix裡面,那就沒(méi)辦法享受到自動(dòng)補(bǔ)正的功能,甚至還會(huì)造成機(jī)器的傷害。千萬(wàn)要小心、耐心做好以下的步驟。
KISSlicer
M104 S2 開(kāi)始加熱擠出頭
G92 Z02 目前的Z位置設(shè)為原點(diǎn)
G1 Z102 Z向上移10mm,避免探針?lè)畔聲r(shí)發(fā)生碰撞。
G28 Y2 Y軸歸零
G28 X2 X軸歸零
G1 X100 Y100 F60002 擠出頭位移到平臺(tái)中心
M4012 放下探針
G28 z2 Z軸歸零
G292 平臺(tái)補(bǔ)正偵測(cè)
G1 Z5 F3000 2 抬高Z軸
M109 S2 等待溫度到達(dá)工作溫度
M822 E軸使用絕對(duì)座標(biāo)
Slic3r
M104 S[first_layer_temperature]2 開(kāi)始加熱擠出頭
G92 Z02 目前的Z位置設(shè)為原點(diǎn)
G1 Z102 Z向上移10mm,避免探針?lè)畔聲r(shí)發(fā)生碰撞。
G28 Y2 Y軸歸零
G28 X2 X軸歸零
G1 X100 Y100 F60002 擠出頭位移到平臺(tái)中心
M4012 放下探針
G28 z2 Z軸歸零
G292 平臺(tái)補(bǔ)正偵測(cè)
G1 Z5 F3000 2 抬高Z軸
M109 S[first_layer_temperature]2 等待溫度到達(dá)工作溫度
M822 E軸使用絕對(duì)座標(biāo)
修改好之后重新做切片,就可以開(kāi)始測(cè)試平臺(tái)自動(dòng)補(bǔ)正的功能了。
實(shí)際使用時(shí)Z軸高度可能還是會(huì)有些誤差,需要回頭微調(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/ |
|