• RepRap Prusa i3 平台自動補正


    RepRap Prusa i3 平台自動補正

    平台校正不但費時,而且經常失敗,時在是很令人洩氣!期盼了好一陣子,Marlin終於將平台自動補正的功能加進來了!!這個功能將原本Z軸的Endstop,改裝到擠出頭的旁邊,讓Endstop直接接觸列印平台,讓Marlin值接測量到平台的實際位置。不但如此,Marlin會測量平台上三個不同位置,然後計算出整個平台傾斜的狀況,並依此補正列印空間的水平方向,讓列印做品跟著平台一起傾斜,作品本身的三維維持垂直。如此一來,就不必每次列印前,都要耗費時間跟精神,手動做平台校正工作。

    硬體

    clip_image002

    伺服馬達我選用SG-90,比較輕巧,耗電也不多,可以直接使用RAMPS的5V電源而不至於讓RAMPS當機。
    i3用的伺服馬達支架,以及探針腳,我放在這邊:
    http://www.thingiverse.com/thing:182889
    探針的微動開關,直接使用用Z軸的EndStop。不過走線比較長,要重新佈線。
    探針的最低點,要比噴頭的最低點還低,但不要低過一公分,避免探測過程中發生碰撞。
    伺服馬達接線如下圖所示:

    clip_image004

    韌體設定步驟

    預先燒錄

    · 將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軸使用絕對座標

    clip_image006

    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軸使用絕對座標

    clip_image008

    修改好之後重新做切片,就可以開始測試平台自動補正的功能了。
    實際使用時Z軸高度可能還是會有些誤差,需要回頭微調 Marlin 中的 Z_PROBE_OFFSET_FROM_EXTRUDER 參數。

    參考資料

    https://github.com/ErikZalm/Marlin

    http://reprap.org/wiki/RAMPS_1.4

    http://kisslicer.com/

    http://slic3r.org/

    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做完不會回去原始的原點,應該也沒必要。擠出頭會停留在第三個偵測點那邊。

    回覆

    鄭育旻2014年1月23日 上午9:12

    應該說一開始先原點復歸 然後再自動定位^^a
    G-code Prefix 有修改 KISSlicer

    請教~我是用I2 也可以照你上列步驟使用嗎?? 或者要修改哪裡呢?? 謝謝!!?

    回覆

    回覆

    陳亮宇2014年1月31日 下午9:07

    軟體的部分一樣,硬體就見招拆招囉~

    Jason Chiu2014年1月31日 下午11:13

    我軟體已設定好 硬體也安裝了 但是 他只會在 X0. Y0. 的地方原地校正四次 是哪裡有錯誤?? 測量面的邊界??

    陳亮宇2014年2月2日 上午11:23

    "設定測量位置" 這個步驟檢查看看有沒有正確~

    回覆

    周書暘2014年3月26日 下午4:28

    請問你伺服馬達和跟你探頭列印機是怎麼連接的?我找了好多地方都找不到那麼細的螺絲。

    回覆

    回覆

    周書暘2014年3月26日 下午4:43

    是探針腳,寫錯,不好意思。

    陳亮宇2014年3月26日 下午4:52

    M2螺絲

    陳亮宇2014年3月26日 下午4:54

    我已經有製做另一個版本的自動校正了,感覺新的方法比較容易而且精確。不過中文的說明還沒撰寫,英文的版本請參考這邊:
    http://www.thingiverse.com/thing:273805

    周書暘2014年3月26日 下午7:54

    哦,那個我研究好久,但是一直搞不懂它的原理

    回覆

    Alex Wu2014年4月17日 上午1:10

    好玩!如果沒看錯,是把 Z 軸的限位開關拿來用,本來是設定常開改成常閉,開關和 X 軸一起上下跑。當擠出頭壓下降直到被玻璃基板頂起後開路觸發限位。這和舊的比起來降低擠出頭負擔但反過來擠出頭會和玻璃基板接觸到,故校正前擠出頭清潔應該滿重要的?

    回覆

    回覆

    陳亮宇2014年4月17日 上午10:39

    沒錯,列印前最好先預熱擠出頭,然後把殘料清除再讓機器做歸零。要不然殘料確實會影響Z軸歸零的結果。

    回覆

    clip_image010

    楊崧柏2014年5月21日 上午9:55

    可以分享Prusa i3平台自動補正的KISSlicer設定組態檔案嗎?

    回覆

    回覆

    陳亮宇2014年5月26日 下午5:16

    不好意思,設定值千變萬化,我給出我的設定值,在你的機器一定一定行不通。所以還是自己花時間研究一下各設定的意思,以及適合的設定值吧~

    回覆

    天野翼2014年5月21日 下午9:02

    請問 Repetier-Host m401跟m402的指令都無法使用
    另外請問伺服機的探針角度會有差嗎? 一樣的伺服機165 方向跟您顛倒
    再者 機器做0點定位 伺服機的探針角度會超出列印件的空間(明顯的卡住而且齒輪還在轉)

    回覆

    回覆

    陳亮宇2014年5月26日 下午5:14

    1. 你的M280指令有作用嗎?如果沒辦法控制伺服機,那是不是你的伺服機控制線路沒裝對?
    2. 角度要自己觀察,不是值接抄我的設定值。
    3. 在裝了伺服機之後,End Stop的位置是不是需要重新調整?

    天野翼2014年5月26日 下午6:57

    m280的指令有功能 只有401 402 沒動作
    伺服機的0點似乎我裝錯邊了
    感謝您的指教

    回覆

    Jesse Wu2014年5月31日 下午5:12

    我是使用KOSSEL
    最近校正平台實在是遇到很大的問題
    有特別幾個點會去磨平台
    有人告訴我是微動開關太難觸發
    我能貼照片跟影片給你看看嗎

    回覆

    回覆

    陳亮宇2014年6月1日 下午10:40

    有問題可以到這邊來討論~
    https://www.facebook.com/groups/reprap.taipei/

    回覆

    李诣文2014年6月18日 上午4:13

    我的機器是用的Ramps1.4 和 Mega2560还有smart control LCD,当我燒你留在thingiverse的固件鏈接以後,機器沒有辦法運動,屏幕也沒有顯示。我看到軟件檢測熱床和擠出頭的溫度非常不對。能告訴我有可能是哪裡出了問題么?

    回覆

    回覆

    陳亮宇2014年6月18日 下午3:02

    你是從https://github.com/ErikZalm/Marlin 下載Marlin嗎?
    那邊下載的是Marlin原始發佈的版本,需要修改設定才能使用。
    依照機器不同而需要修改的參數請參照其他文章,自動校正需要設定的部分參照這篇文章。

    回覆

    周延俊2014年11月17日 下午7:15

    可以提供改好的prusa i3程式嗎? 除了測量數據

    回覆

    clip_image010[1]

    Sales Sansrival2015年1月24日 下午1:19

    你好 我安裝使用過你的新方法了
    Z歸零沒有問題
    AUTO LEVEL 沒有問題
    但列印時有列印位置過低而依直無法成功的問題
    >我調整 Z_PROBE_OFFSET_FROM_EXTRUDER 道不同值
    (從小到大, 從政到負, 都試過了)
    可是我發現不管歸零, 或列印時 LCD 裡的 Z 位置相同於我設定的值, 不過實際位置還是過低
    意思是我的 Z_PROBE_OFFSET_FROM_EXTRUDER 調整的只是LCD在ENDSTOP 打開時原本顯示是零, 改成我設定的值
    但實際位置並無改變
    請問使用新設計要如何解決列印位置過低的問題?

    回覆

    回覆

    陳亮宇2015年1月26日 下午3:20

    EEPROM似乎會記錄這個 Z OFFSET 的值
    你得要從LCD控制器裡面去回復設定

    回覆

    岳朝國2015年2月18日 下午3:52

    像前面的M-code G-code調整
    可以用哪種程式做測試??

    回覆

    回覆

    陳亮宇2015年2月21日 下午3:24

    Repetier-Host

    回覆

  • 相关阅读:
    BZOJ_4320_ShangHai2006 Homework_分块
    BZOJ_3362_[Usaco2004 Feb]Navigation Nightmare 导航噩梦_并查集
    BZOJ_2788_[Poi2012]Festival_差分约束+tarjan+floyed
    BZOJ_2795_[Poi2012]A Horrible Poem_hash+暴力
    BZOJ_1598_[Usaco2008 Mar]牛跑步_A*
    [转载]java匿名对象
    [转载]static in Java
    Bat批处理文件入门
    在set中放入自定义类型
    [转载]C++STL概述
  • 原文地址:https://www.cnblogs.com/zhangyang/p/4321909.html
Copyright © 2020-2023  润新知