2016年9月26日 星期一

ATOM 2.0 最小平方校正法

為了校正ATOM的結構尺寸誤差,我們使用Lee大介紹的最小平方校正方法,並在點平面時更改一些程序。



使用此方法前需具備以下條件:

1. 要有一台Delta型3D印表機
2. ATOM官方韌體無法使用,需燒成有支援的韌體,本文使用Rich Cattel的韌體
3. 以終端機模式連接3D印表機韌體的方法,使用Printrun或是Arduino開發環境之Serial Monitor皆可,本文使用Octoprint線上列印介面連線
4. 可以打開線上計算機的網頁:http://escher3d.com/pages/wizards/wizarddelta.php

開始校正前先取得初始值:

先從連接3DP的終端機軟體中取得初始值,若使用Rich Cattel韌體在終端機輸入「M666 L」後送出,就可以得到以下初始值資訊。
此處需注意「P (Z-Probe Offset)」的Z值,此數值需根據Z-Probe的觸發深度設定,每台3DP不一樣,若在ATOM官方韌體中設定過Z-Offset,可參考此數值設定,我們的3DP觸發深度為0.65mm,所以在Z-Probe開始點平面前輸入「M666 P0.65」, Z-Probe Offset的值就會被改成0.65。

將初始值輸入線上計算機:

線上印表機的介面如下圖所示,首先選擇3DP韌體,這個跟最下方輸出的設定指令有關。第二個Steps/mm若不是使用Repetier韌體,則與結果無關,不必輸入。接著輸入上個步驟中得到初始值,Initial endstop corrections為Endstop Adj的XYZ值,此值為三軸Home位置的誤差,校正結果一定是負值或零,否則在3DP執行G28(Home)指令之後,滑車將撞向微動開關。Initial diagonal rod length、Initial delta radius、Initial homed height則分別對應D (Diagonal Rod Length)、R (Delta Radius)、H (Z-Height)。Initial tower angular position corrections的XYZ值,分別為A/B/C (Tower A/B/C Position Correction)的值,三個值的定義可在RepRepWiki中Gcode條目的M665處找到。Printable bed radius則是決定Z-Probe點床平面的範圍,我們的機器自己改熱床,列印面積略縮小,因此設定為半徑100mm。Number of probe points則是根據Number of factors to calibrate的數值設定,要校正7個參數,最少需要7個探測點,為了使校正結果更準確,建議使用10個校正點。輸入完成後,按下Suggest probe points按鈕,計算機給出10個建議的探測位置。 Normalise endstop corrections勾選後,可將Endstop corrections誤差最小的一軸變為0,與不勾選相比,列印高度可略為增加,因此建議勾選。

使用Z-Probe點平面:

操作3DP點平面時,先輸入「G28」指令讓三軸回到Home位置,接著使用「G30 X0 Y100」指令探測座標(0, 100)的高度,探測完畢可看到終端機軟體輸出「Bed Z-Height at X:0.00 Y:100.00 = -0.6000」的結果,將探測結果-0.6變號成0.6,並四捨五入到小數點以下第二位,填入第0個探測點的Nozzle height error,重複上述探測步驟直到完成所有探測點。若探測時發現噴頭會撞到玻璃床夾,可自行微調探測位置,需記得將實際探測位置輸入線上計算機。完成所有位置的高度探測後,請先檢查所有探測結果輸入正確並記得變號,確認無誤後按下Calculate按鈕。

將校正結果輸入3DP並存入EEPROM:

計算完成後,會得到校正參數以及可輸入3DP的指令,此指令將根據所選擇的3DP韌體變動。將指令複製後輸入終端機送出,3DP的校正參數將變更,並可用「M666 L」指令檢查輸入是否正確。若校正程序正確,重新執行「G28」指令後並以「G30」指令重新探測,可發現誤差明顯變小,但因重複精度不足,重新探測會有些許誤差,我們的機器校正後,可讓10個探測點高度誤差在±0.02mm以內。確認校正無誤後,將校正結果存入不會揮發的唯讀記憶體中,下次3DP開機時可載入校正結果。

12 則留言:

  1. 請問: 如果G30 X0 Y100探測結果是正的呢? 要改成負的嗎?
    謝謝

    回覆刪除
    回覆
    1. 沒錯,不管正負都要變號,謝謝。

      刪除
    2. Bed Z-Height at X:0.00 Y:100.00 = -2.75 ,探測結果-2.75變號成2.75,Nozzle height error 是否填0.05

      刪除
    3. 填入2.75即可,若覺得校正完高度不對,請調整Z-Probe Offset後,再重新校正。

      刪除
    4. 請問按照步驟,在PRONTERFACE上輸入G30 X0 Y100或其它坐標,用G30也只能去X0 Y0

      刪除
  2. 如果要量測(86.6, -50)的座標位置,就輸入G30 X86.6 Y-50,將線上計算機全部的點量測完畢後,輸入線上計算機取得校正參數。

    回覆刪除
    回覆
    1. 為什麼用G30 輸入 X Y 任何座標都只會跑到X0 Y0 測量?

      刪除
    2. 我猜測你的韌體沒有換成Rich Cattel的韌體,如果是用Atom官方韌體不支援G30這個動作

      刪除
  3. 我用cyberbsd的整合版本,Rich Cattel下載後不能直接用,Rich Cattel打開後雙click marlin 後就自動生成一個marlin folder,folder內只有一個marlin 程式不知該怎麼用。

    回覆刪除
    回覆
    1. Lee大製作的cyberbsd版本沒有使用寫G30 X Y的指令,不過我看程式碼,可能可以用G01 X Y指令,先將噴頭移到要偵測的位置,在下G30指令,讓噴頭向下探測。

      刪除
  4. 剛再試Rich Cattel版本,下載解壓後默認是Marlin-Master名字的檔案夾 , 把 Marlin-Master 改為Marlin 才能用.

    cyberbsd版本的G01 X Y指令我試了兩天,重覆又重覆十來次,完成後噴頭一定是離熱床很遠,完成摸不著頭腦,

    明天再試一下Rich Cattel版本,還是喜歡用G30 ,謝謝!

    回覆刪除