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

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軸歸零的結果。

回覆

楊崧柏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程式嗎? 除了測量數據

回覆

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

回覆

RepRap Prusa i3 平台自動補正的更多相关文章

  1. 组装一台PRUSA I3打印机

    闲来无事,又搞了台机.这样下去顶不住了.草. 还是咸鱼购买,但是这台收到的时候比我以前任何一台都要散,几乎重新装了一台. 此处省略收到货时候的零件图,省略装机图. 不得不提的是,原机用的山寨melzi ...

  2. 正益工作能担起PaaS+SaaS的未来探索吗?

    没有竞争,行业没有未来.不参与竞争,企业没有未来.中国企业的类型纷繁复杂,也决定了企业的多样化需求.云计算和移动化的双重叠加,企业管理需要重新梳理,企业业务创新日益频繁,个性化需求日益突出,软件服务商 ...

  3. 【项目发起】千元组装一台大型3D打印机全教程(一)前言

    前言 最近又碰到了大尺寸模型打样的需求,我这台17cm直径的kossel mini就捉襟见肘了.怎么办呢,这个时候kossel的好就体现出来了,随意扩展,那么就自己做个kossel-max吧.为了向前 ...

  4. 自然语言7_NLTK中文语料库sinica_treebank

    http://www.hankcs.com/program/python/nltk-chinese-corpus-sinica_treebank.html NLTK包含Sinica (中央研究院)提供 ...

  5. NLTK中文语料库sinica_treebank

    http://www.hankcs.com/program/python/nltk-chinese-corpus-sinica_treebank.html NLTK包含Sinica (中央研究院)提供 ...

  6. 自然语言处理——NLTK中文语料库语料库

    Python NLTK库中包含着大量的语料库,但是大部分都是英文,不过有一个Sinica(中央研究院)提供的繁体中文语料库,值得我们注意. 在使用这个语料库之前,我们首先要检查一下是否已经安装了这个语 ...

  7. PC硬件之我见——CPU篇

    写在最前面:     最近身边很多朋友都购置电脑的想法,往往也会选择性价比较高的DIY攒机方式.不幸的是,并不是所有人都对电脑硬件有一定的了解的,何况在现在这种社会风气下,盲目的相信商家是不明智的.所 ...

  8. 安裝 Rails 開發環境

    安裝 Rails 開發環境 Give someone a program, you frustrate them for a day; teach them how to program, you f ...

  9. RestTemplate proxy 设置方式

    RestTemplate restTemplate = new RestTemplate(new SimpleClientHttpRequestFactory() {{ setProxy(new ja ...

随机推荐

  1. 转:Java中Scanner类和BufferReader类之间的区别

    原文地址:https://blog.csdn.net/u014717036/article/details/52227782 java.util.Scanner类是一个简单的文本扫描类,它可以解析基本 ...

  2. js转换Date日期格式

    有时候做项目会用到js的date日期格式,因为Date()返回的格式不是我们需要的, Date()返回格式: Thu Mar 19 2015 12:00:00 GMT+0800 (中国标准时间) 而我 ...

  3. No module named pip 安装工具提示没有pip模块时,解决办法

    python2:cmd命令窗口下执行命令: python -m ensurepipe easy_install pip # 若有权限错误,则在命令前面添加sudosudo easy_install p ...

  4. pyqt5-day1

    pyqt5做为Python的一个模块,它有620多个类和6000个函数和方法.这是一个跨平台的工具包,它可以运行在所有主要的操作系统,包括UNIX,Windows,Mac OS.pyqt5是双重许可. ...

  5. git的配置操作

    git配置信息 一.配置git config git config user.name 'yourName' git config user.name 'yourEmail@gmail.com' 二. ...

  6. php 关于时间函数

    1. 设置时区 date_default_timezone_set() 和 putenv() 让时间安全地设置就,输入如下代码: date_default_timezone_set('UTC'); / ...

  7. myeclipse项目导入到eclipse, HttpServletRequest报红现象

    eclipse项目中关于导入的项目里提示HttpServletRequest 不能引用的解决办法 当使用eclipse导入外部的web工程时,有时会提示HttpServletRequest, Serv ...

  8. VS Code 添加移除asp.net core项目引用

    可以通过编辑.csproj文件来添加或者移除项目引用. 注意这里并没有智能提示, 最好是在Nuget网站(https://www.nuget.org/)搜索好相关包之后填写进来. 编辑结束之后, vs ...

  9. HTN规划 jshop2

    http://www.cs.umd.edu/projects/shop/description.html 在HTN规划,规划体系从世界的初始状态和创建一个计划来执行一系列任务的目的(需要做的事情,抽象 ...

  10. [django]session设置与获取原理

    admin登录 情况1: 登录后会产生一个sessionid 情况2: 自定义设置了key后,会多一个sessionid, 登录后会替换为登录后的sessionid的key值 if username ...