RepRap Prusa i3 平台自動補正
平台校正不但費時,而且經常失敗,時在是很令人洩氣!期盼了好一陣子,Marlin終於將平台自動補正的功能加進來了!!這個功能將原本Z軸的Endstop,改裝到擠出頭的旁邊,讓Endstop直接接觸列印平台,讓Marlin值接測量到平台的實際位置。不但如此,Marlin會測量平台上三個不同位置,然後計算出整個平台傾斜的狀況,並依此補正列印空間的水平方向,讓列印做品跟著平台一起傾斜,作品本身的三維維持垂直。如此一來,就不必每次列印前,都要耗費時間跟精神,手動做平台校正工作。
硬體
伺服馬達我選用SG-90,比較輕巧,耗電也不多,可以直接使用RAMPS的5V電源而不至於讓RAMPS當機。
i3用的伺服馬達支架,以及探針腳,我放在這邊:
http://www.thingiverse.com/thing:182889
探針的微動開關,直接使用用Z軸的EndStop。不過走線比較長,要重新佈線。
探針的最低點,要比噴頭的最低點還低,但不要低過一公分,避免探測過程中發生碰撞。
伺服馬達接線如下圖所示:
韌體設定步驟
預先燒錄
· 將configuration.h中以下這幾行的註解符號刪去(行首的 "//" 刪掉)
#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}"可以控制伺服馬達轉動到指定的位置(例如M280 P0 S60),找出探測時應該要在幾度,收起探針應該要幾度。假設找出來的度數分別是165度跟60度。
· 將找出來的度數填回"SERVO_ENDSTOP_ANGLES"。然後重新燒錄Marlin。
測量探針與擠出頭的相對位置
· 在列印台中央做個小記號,然後移動擠出頭的位置,讓擠出頭正好碰觸記號。
· 用G code "G92 X0 Y0 Z0"讓 Marlin 把現在位置當作原點。
· 用G code "G1 Z30" 把Z軸抬高。
· 用M code "M401",讓伺服馬達移動到探測的位置。
· 用控制軟體移動XY軸,讓探針接觸點在記號的正上方(這個步驟不必非常精確,位置大概對就好)。
· 用控制軟體,讓Z軸每次下降0.1mm,並檢查探針是否被觸發。可以用M code "M119"來確認是否觸發。這個步驟必須非常精確,要測量到探針剛好被觸發時Z軸的高度。
· 觸發後,使用M code "M114"讀回目前XYZ座標。(如果有LCD,可以直接參考LCD上的數據。控制軟體上的XYZ座標會有錯誤,請不要參考。)
· 讀出來的座標,乘以負一之後填入設定檔。假設M114讀回來的座標是 X:24.3 Y:-31.4 Z:5.1,則在設定檔中,找到以下這三行,並且把數值如下填好。
#define X_PROBE_OFFSET_FROM_EXTRUDER -24.3
#define Y_PROBE_OFFSET_FROM_EXTRUDER 31.4
#define Z_PROBE_OFFSET_FROM_EXTRUDER -5.1
設定測量位置
· 這四個參數用來設定測量面的邊界,請依照機器XY工作範圍的邊界做縮減後,填入設定檔。如果手邊的機器是 Prusa i3,可以直接使用以下的數據。
#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,建議用預設值就好。
#define XY_TRAVEL_SPEED 6000
· 探測前抬高Z軸,避免探測腳與平台相撞。可以先設到50mm。如果有把握不會撞到,再回來改。
#define Z_RAISE_BEFORE_PROBING 10
· 探測過程中抬高Z軸。如果平台沒有傾斜得很厲害,探測過程中應該是不會撞到平台的。用預設值就很安全了。
#define Z_RAISE_BETWEEN_PROBINGS 10
最後燒錄
· 相關設定都完成了,再燒錄一次Marlin,機器就具備平台自動補正的功能了!
G-code Prefix修改
機器只會照著Gcode的指令工作,一般切片軟體產生出來的G code,並不會通知機器要做平台自動補正。如果沒有加上自動補正的命令稿在 G code Prefix裡面,那就沒辦法享受到自動補正的功能,甚至還會造成機器的傷害。千萬要小心、耐心做好以下的步驟。
KISSlicer
M104 S<TEMP>; 開始加熱擠出頭
G92 Z0; 目前的Z位置設為原點
G1 Z10; Z向上移10mm,避免探針放下時發生碰撞。
G28 Y; Y軸歸零
G28 X; X軸歸零
G1 X100 Y100 F6000; 擠出頭位移到平台中心
M401; 放下探針
G28 z; Z軸歸零
G29; 平台補正偵測
G1 Z5 F3000 ; 抬高Z軸
M109 S<TEMP>; 等待溫度到達工作溫度
M82; E軸使用絕對座標
Slic3r
M104 S[first_layer_temperature]; 開始加熱擠出頭
G92 Z0; 目前的Z位置設為原點
G1 Z10; Z向上移10mm,避免探針放下時發生碰撞。
G28 Y; Y軸歸零
G28 X; X軸歸零
G1 X100 Y100 F6000; 擠出頭位移到平台中心
M401; 放下探針
G28 z; Z軸歸零
G29; 平台補正偵測
G1 Z5 F3000 ; 抬高Z軸
M109 S[first_layer_temperature]; 等待溫度到達工作溫度
M82; E軸使用絕對座標
修改好之後重新做切片,就可以開始測試平台自動補正的功能了。
實際使用時Z軸高度可能還是會有些誤差,需要回頭微調 Marlin 中的 Z_PROBE_OFFSET_FROM_EXTRUDER 參數。
參考資料
https://github.com/ErikZalm/Marlin
http://reprap.org/wiki/RAMPS_1.4
38 則留言:
可以把Z-STOP 和探針並聯在一起嗎?
回覆:如果你的End-Stop是使用Normal Open的設定,那就可以並連兩個微動開關一起使用。否則不行
提问:那NC用串的應該可以吧
回覆:如果使用NC,是可以串連。但是控制板得韌體會需要修改。問一下自動校正後底部會變薄這是甚麼原因 用Slic3r
提问:問一下自動校正後底部會變薄這是甚麼原因 用Slic3r
回覆:歸零後擠出頭的位置仍然太低。Z_PROBE_OFFSET_FROM_EXTRUDER 再微調看看吧~,Z軸的誤差容許直很小,要花很多時間校正。如果懶得重新燒Marlin,也可以直接在Slic3r的Printer Settings -> General -> Size and cooldinates -> Z offset做微調。
提问:問一下設原點時要比平台鎖到底嗎
回覆:探針的最低點,要比噴頭的最低點還低,但不要低過一公分,避免探測過程中發生碰撞。
提问:問一下你按列印時不會原點復歸嗎? 我好像都未圓點復歸 可以取消嗎?
回覆:G-code Prefix修改 要記得做呀~,我設計的G-code Prefix做完不會回去原始的原點,應該也沒必要。擠出頭會停留在第三個偵測點那邊。
回覆
應該說一開始先原點復歸 然後再自動定位^^a
G-code Prefix 有修改 KISSlicer
請教~我是用I2 也可以照你上列步驟使用嗎?? 或者要修改哪裡呢?? 謝謝!!?
回覆
回覆
軟體的部分一樣,硬體就見招拆招囉~
我軟體已設定好 硬體也安裝了 但是 他只會在 X0. Y0. 的地方原地校正四次 是哪裡有錯誤?? 測量面的邊界??
"設定測量位置" 這個步驟檢查看看有沒有正確~
回覆
請問你伺服馬達和跟你探頭列印機是怎麼連接的?我找了好多地方都找不到那麼細的螺絲。
回覆
回覆
是探針腳,寫錯,不好意思。
M2螺絲
我已經有製做另一個版本的自動校正了,感覺新的方法比較容易而且精確。不過中文的說明還沒撰寫,英文的版本請參考這邊:
http://www.thingiverse.com/thing:273805
哦,那個我研究好久,但是一直搞不懂它的原理
回覆
好玩!如果沒看錯,是把 Z 軸的限位開關拿來用,本來是設定常開改成常閉,開關和 X 軸一起上下跑。當擠出頭壓下降直到被玻璃基板頂起後開路觸發限位。這和舊的比起來降低擠出頭負擔但反過來擠出頭會和玻璃基板接觸到,故校正前擠出頭清潔應該滿重要的?
回覆
回覆
沒錯,列印前最好先預熱擠出頭,然後把殘料清除再讓機器做歸零。要不然殘料確實會影響Z軸歸零的結果。
回覆
可以分享Prusa i3平台自動補正的KISSlicer設定組態檔案嗎?
回覆
回覆
不好意思,設定值千變萬化,我給出我的設定值,在你的機器一定一定行不通。所以還是自己花時間研究一下各設定的意思,以及適合的設定值吧~
回覆
請問 Repetier-Host m401跟m402的指令都無法使用
另外請問伺服機的探針角度會有差嗎? 一樣的伺服機165 方向跟您顛倒
再者 機器做0點定位 伺服機的探針角度會超出列印件的空間(明顯的卡住而且齒輪還在轉)
回覆
回覆
1. 你的M280指令有作用嗎?如果沒辦法控制伺服機,那是不是你的伺服機控制線路沒裝對?
2. 角度要自己觀察,不是值接抄我的設定值。
3. 在裝了伺服機之後,End Stop的位置是不是需要重新調整?
m280的指令有功能 只有401 402 沒動作
伺服機的0點似乎我裝錯邊了
感謝您的指教
回覆
我是使用KOSSEL
最近校正平台實在是遇到很大的問題
有特別幾個點會去磨平台
有人告訴我是微動開關太難觸發
我能貼照片跟影片給你看看嗎
回覆
回覆
有問題可以到這邊來討論~
https://www.facebook.com/groups/reprap.taipei/
回覆
我的機器是用的Ramps1.4 和 Mega2560还有smart control LCD,当我燒你留在thingiverse的固件鏈接以後,機器沒有辦法運動,屏幕也沒有顯示。我看到軟件檢測熱床和擠出頭的溫度非常不對。能告訴我有可能是哪裡出了問題么?
回覆
回覆
你是從https://github.com/ErikZalm/Marlin 下載Marlin嗎?
那邊下載的是Marlin原始發佈的版本,需要修改設定才能使用。
依照機器不同而需要修改的參數請參照其他文章,自動校正需要設定的部分參照這篇文章。
回覆
可以提供改好的prusa i3程式嗎? 除了測量數據
回覆
Sales Sansrival2015年1月24日 下午1:19
你好 我安裝使用過你的新方法了
Z歸零沒有問題
AUTO LEVEL 沒有問題
但列印時有列印位置過低而依直無法成功的問題
>我調整 Z_PROBE_OFFSET_FROM_EXTRUDER 道不同值
(從小到大, 從政到負, 都試過了)
可是我發現不管歸零, 或列印時 LCD 裡的 Z 位置相同於我設定的值, 不過實際位置還是過低
意思是我的 Z_PROBE_OFFSET_FROM_EXTRUDER 調整的只是LCD在ENDSTOP 打開時原本顯示是零, 改成我設定的值
但實際位置並無改變
請問使用新設計要如何解決列印位置過低的問題?
回覆
回覆
EEPROM似乎會記錄這個 Z OFFSET 的值
你得要從LCD控制器裡面去回復設定
回覆
像前面的M-code G-code調整
可以用哪種程式做測試??
回覆
回覆
Repetier-Host
回覆