個人資料
歸檔
正文

3D打印(5): 自動調平

(2020-11-19 18:49:29) 下一個

https://www.repetier.com/documentation/repetier-firmware/z-probing/ 有編改

在開始定義自動調平之前,您應該知道自己在做什麽,可以更改的內容以及在哪裏可以更改哪些錯誤。
最重要的工具是z探針。這是一種在開關等壓力下切換數字引腳的設備,該設備已連接到擠出機,例如它會在噴嘴碰到床之前正常觸發。一旦知道觸發時床上方的噴嘴高度,我們就可以使用它來測量床在z方向上的位置。

我們通常要做的第一件事是使床鋪平整。為此,我們至少要測量3個點,然後計算出平均平麵。與理論常數z的差向我們展示了在相同高度上的任何位置都需要步進多少。這可以通過軟件步進(如果z螺母沒有回退間隙)或床身的機械移動(改變三點平麵的兩個點)來完成。雖然效果不錯,但是這忽略了一些錯誤:

大多數床不是完全平整的。特別是在高溫下,它們會彎曲
。測量並不總是100%準確。
。測量可能會使您的床彎曲。
。如果您的打印機有問題,則應測量一個n x n的網格以獲得更好的床身近似度。

當所用z探針需要相當大的力時,它可能會依據位置不同使得床麵彎曲。為此,我們有一個彎曲校正,可通過彎曲校正測量值。特別是在彎曲不是x和y的線性函數的情況下,這會受到一些限製。然後,您必須將測量值限製為3個點,並為其設置彎曲校正。

即使平均旋轉平麵,您仍然會遇到凹凸。運氣好的話,平均顛簸可以忽略不計,您可以忽略它。在更極端的情況下,尤其是隨著床尺寸的增加,能夠跟隨第一層床的曲率,並隨著z值的增加將校正修正為零,那將是很棒的。這將有助於正確地綁定。此功能稱為失真校正,從v0.92.8開始,此功能適用於所有打印機類型。它可以通過測量變形圖並將其存儲在eeprom(理想情況下)或ram(然後需要每次測量)中來工作。同樣從0.92.8開始,我們假設失真永遠不變,因為它是床的特性。因此,重新計算旋轉不會重置變形圖。

Z探針和Z歸位
對於具有z探針的打印機,最好的解決方案是使用z max。這允許在打印過程中重新定位,例如如果暫停後電機關閉並且您可能不信任當前位置。此外,歸位時傾斜的床不會碰到噴嘴/探針,也沒有問題。您隻需要先將z歸位,再將xy歸位,不會碰到任何東西,簡單且安全。唯一的缺點是,您需要將歸位到z max置為零,然後再下降開始打印。這可能需要30秒,有人不喜歡,許多打印也要花費數小時。因此,他們很確定想回到z min。

好吧,您必須知道的第一件事是傳統的z min終點止擋在這裏不起作用。讓我們采取一些不太可能的極端來描述這一點。床通常是不平的,假設左邊緣比右前邊緣高1cm,而兩個後邊緣甚至高1cm。常規的z歸位是最低點,且防止再下移;因此在此示例中,它必須與右前邊緣相匹配。如果我們先將Z放回原位,在除右前邊緣之外的任何位置噴嘴將撞到床麵。這顯然不行,您需要的是安裝在擠出機上的z傳感器。為了告訴固件希望將z-probe也用作z min終點,方法是將兩者都設置為同一引腳!這樣,我們可以在任何地方測量床的高度。但若我們不知道要測量的位置,這也沒用,因此我們必須先將x和y歸零。好吧,如果z的高度合適這不是問題。為什麽?如果不合適而在低z處測量,擠出機/探針仍然可能會與床相撞。因此,在版本v1.0即2017年1月14日後,您可以在歸位之前將z提高。僅是為了避免碰撞。但若擠出機已經接近頂部怎麽辦?如果您有z max限位開關,那麽它的觸發即可保證安全。好吧我接受,下一步?現在,xy歸位正在安全的進行中,我們需要一個z可歸位的坐標。原來這是在xy原始位置完成的,現在z探頭不在噴嘴所在的位置,且必須在床上才能進行有效的測量。為此,固件將使用z探針的坐標偏移量再予測量。如果幸運的話它可以正常工作,因為x已歸位x min而且探頭位於噴嘴的左側;如果不行,HOME_ORDER_XYTZ用來設置設置探測坐標,還需設置噴嘴的最低溫度(僅在擠出機是z探針的一部分時才重要)。我們首先移至該坐標,然後測量帶偏移的高度,這樣可以克服z min歸位的最後一個問題。

注:原來的z home時的擠出頭高度是校準到0.25mm(一張白紙)。用z min探針調平時,為防床麵不平探針必須放高,探針激活時的高度必須用來導出擠出頭的高度,這由z偏移量即探針與擠出頭的高度差來計算。xy的偏移量需測量,影響有限且可在打印後修正。

配置固件
  Z-探針
          
從0.90版開始,Repetier-Firmware支持自動調平。對於自動調平,您需要z探針以自動或半自動的方式測量距離。自動方式時z探針隨擠壓機一起移動;半自動z探針可以是cnc機器用來測量工具高度的開關,由於它未與擠出機連接,因此需要將其放在擠出機下方,然後用戶單擊開始測量,爾後擠出機將移至下一個位置,並等待下一個信號開始測量。第一步是在configuration.h文件中配置z-probe:

/ * Z探測* /
#define FEATURE_Z_PROBE true
/ *歸位後,將校正z位置以補償用於塗層。由於您可以更改塗層,因此該值存儲在
EEPROM(如果啟用),因此您可以在不同塗層之間切換而無需重新校準z。
* /
#define Z_PROBE_Z_OFFSET 0 //偏移到塗層形成的真實床麵高度
/ *如何測量z min
 0 =觸發是實際床忽略塗層的高度
 1 =觸發是當前塗層
 
 對於模式1,將當前塗層厚度添加到測得的z測頭距離。這樣,真實床始終是參考高度。用於電感式傳感器或z min終止塗層對結果沒有影響,因此應使用模式0。
* /
#define Z_PROBE_Z_OFFSET_MODE 0
#define Z_PROBE_PIN 63
#define Z_PROBE_PULLUP true
#define Z_PROBE_ON_HIGH true
#define Z_PROBE_X_OFFSET -11.2625
define Z_PROBE_Y_OFFSET -6.5
//等待信號開始。有效信號是探針命中和確定按鈕。如果您需要手動觸發探針,則這是必需的。
#define Z_PROBE_WAIT_BEFORE_TEST false
/ **探測時z軸的速度,單位為mm/s * /
#define Z_PROBE_SPEED 5
#define Z_PROBE_XY_SPEED 150
#define Z_PROBE_SWITCHING_DISTANCE 1.5 //激活探針後安全關閉探針的距離
#define Z_PROBE_REPETITIONS 5          //在某一點重複探測。
/ **高度是激活的探針位置和噴嘴高度之間的差。 * /
#define Z_PROBE_HEIGHT 39.91
/ **探頭(擠出機和z傳感器)和床之間的間隙。必須大於初始z高度誤差! * /
#define Z_PROBE_BED_DISTANCE 30.0
/ **這些腳本在響應之前運行。 Z探針完成後。需要時可在此區間添加代碼以激活/停用探針。 * /
#define Z_PROBE_START_SCRIPT“”
#define Z_PROBE_FINISHED_SCRIPT“”
/ *自動找平允許對3個點進行z探針計算以計算傾斜度並補償打印錯誤。此功能需要有效的z探針,並且您應該在頂部而不是底部設置z-endstop。 同樣的3點用於G33命令。
* /
#define FEATURE_AUTOLEVEL true
#define Z_PROBE_X1 -69.28
#定義Z_PROBE_Y1 -40
#define Z_PROBE_X2 69.28
#定義Z_PROBE_Y2 -40
#定義Z_PROBE_X3 0
#定義Z_PROBE_Y3 80

首先,啟用z-probe(FEATURE_Z_PROBE true)並定義探針引腳(Z_PROBE_PIN)。像限位開關腳一樣,可以設置上拉Z_PROBE_PULLUP及信號反轉Z_PROBE_ON_HIGH。許多用戶喜歡使用z min腳,這並非必須。接下來,定義相對於擠出機原點位置的偏移量(用於定義擠出機偏移量的基礎)。對於單台擠出機,這是噴嘴的位置;對於多擠出機設置,定義的是擠出機偏移量的原點。

如果需要手動移動z探針,請將Z_PROBE_WAIT_BEFORE_TEST設置為true。在這種情況下,擠出機將懸停在測量點上,並等待您一次激活開關。

Z_PROBE_SPEED以mm/s設置移動速度,而Z_PROBE_XY_SPEED是xy平麵上的速度。 Z_PROBE_HEIGHT是z探針觸發器和床之間的高度差,始終將此值添加到高度中,以計算總高度(注:這意味著當探針高度為0時的擠出頭高度)。接下來是Z_PROBE_BED_DISTANCE,它確定探針開始測量時的高度(探針高度將加上它,注:即在擠出頭高度為Z_PROBE_HEIGHT+Z_PROBE_BED_DISTANCE時開始測量)。先從您在固件中設置的猜測床高開始,該高度減去間隙必須總是小於實際的打印區域高度。如果您想啟用/禁用z-probe,可以在Z_PROBE_START_SCRIPT和Z_PROBE_FINISHED_SCRIPT中編寫所需的g代碼,多個命令用反斜線加n分隔。

為了更精確的測量,可以將每個點重複Z_PROBE_REPETITIONS次。探針觸發後僅舉起Z_PROBE_SWITCHING_DISTANCE毫米以開始下一次測量。根據您的探頭類型,該值可以小於0.2 mm,從而重複測量可以很快。

校準Z-Probe
開始時通常會出錯的一件事是z探頭的校準。因此,應在開始使用它校準所有內容之前完成此操作。首先檢查信號是否正確。因此,發送M119並看到z探針顯示“ L”為低=未觸發。現在,在再次發送M119時手動觸發它。現在,對於高=觸發,探針值應顯示“ H”。如果不是這樣,則需要設Z_PROBE_ON_HIGH以反轉極性。如果沒有任何變化,則說明您使用或配置的引腳錯誤,或者上拉電阻必須不同,修複並繼續。

相關的幾個repetier固件的G-code,與Marlin固件的功能未必相同:

- G28 - Home all axis or named axis.
- G29 S<0..2> - Z-Probe at the 3 defined probe points. S = 1 measure avg. zHeight, S = 2 store avg zHeight
- G30 P<0..3> - Single z-probe at current position P = 1 first measurement, P = 2 Last measurement P = 0 or 3 first and last measurement
- G31 - Write signal of probe sensor
- G32 S<0..2> P<0..1> - Autolevel print bed. S = 1 measure zLength, S = 2 Measure and store new zLength

最重要的變量是Z_PROBE_HEIGHT,通常在EEPROM中對其進行調整,直到其具有正確的高度為止(這裏的意思是每次調整存入再讀出,完成後再寫入固件,期間不要斷電)。它定義了在z探針觸發時噴嘴與底座之間的距離。對於幾乎所有探針這都是一個正值,但若使用力反饋傳感器或按下擠壓機來觸發的z探頭或許具有0或較小的負值。有幾種方法可以確定正確的高度,我現在展示的是所知最準確的方法:您需要一塊已知高度的扁平金屬塊,其高度即參考高度ref_height。先讓我們在接近床麵但z探針不觸發的距離發送:

G30 P0   //測量當前xy下的z高度。擠出機將下降直到觸發Z探針,然後返回原高度

將返回的z高度存儲為z0以備後用。 現在將噴嘴加熱並保持到工作溫度,清除所有滲出物,我們發送:

M114    //顯示當前位置

將該高度記為Zold。接下來,我們調整z直到金屬塊恰好位於噴嘴下方。當有間隙時金屬塊旋轉輕鬆,降得太低則有碰撞聲。一旦您認為找到了準確的水平,請再次發送M114並記為高度為Znew。

因此,我們現在擁有的是起始高度,因為固件將使用我們的初始Z_PROBE_HEIGHT(ZHold)從第一個探針Z0假定它的起始高度。 我們也知道我們需要上Znew-Zold才能達到ref_height。 由此我們可以計算出所需的由Z_PROBE_HEIGHT(ZHnew)開始的實際值:

So what we now have is starting height as firmware would assume it from first probe Z0 using our initial Z_PROBE_HEIGHT (ZHold). We also know that we needed to go up Znew-Zold to reach ref_height. From this we can compute the exact real value required from Z_PROBE_HEIGHT (ZHnew):

ZHnew = ZHold - Z0 - Znew + Zold + ref_height

在eeprom中輸入該值,這使得測量具有盡可能高的精度。

注:我不理解上述公式,也不知道Z-探針是否必須是距離探針而非0/1開關以便支持上述算法。我覺得不必搞得這麽複雜。假設Z軸沒有反向間隙或即回退-上述算法也隱含了同樣的假設。熱床上放置已知高度為Href的金屬片,記下擠出頭接觸它時的Z軸高度Zold,再將Z軸上移使得探針觸發,記下高度為Znew。探針觸發時的擠出頭高度即為Znew-Zold+Href,此值即為Z_PROBE_HEIGHT。原文多處用詞不清。

提示:如果您始終使用相同的床和塗層,則此方法效果很好。電感式傳感器可測量到金屬床身部件的距離,因此可以校正可能在其上的不同床身塗層。當前厚度存儲在Z_PROBE_Z_OFFSET中(eeprom中的床塗層),對於大多數打印機,應為0。

自動調平
現在,我們有了可以使用的z探針,可以啟用自動調平功能。為此,您需要添加“ #define FEATURE_AUTOLEVEL 1”。
然後我們定義我們希望自動調平如何工作。首先,我們定義如何測量平麵旋轉。可以使用BED_LEVELING_METHOD定義和設置Currentyl 3方法。Method 0~2如下:

        

BED_LEVELING_METHOD 0

該方法在3個探測點處進行測量,並通過這些點創建一個平麵。如果你有真正的平麵床可以提供最佳效果。這3點不能排成一行。長距離增加數值穩定性。三角打印機應使它們盡可能靠近列。

BED_LEVELING_METHOD 1

這將測量一個網格。探針點1是原點,點2和3跨越網格。我們測量BED_LEVELING_GRID_SIZE指向每個方向,並計算所有方向的回歸平麵點。如果您有小的隆起測量不準確,這將提供一個很好的總體平麵。

BED_LEVELING_METHOD 2

彎曲校正4點測量。這適用於具有旋轉軸的懸臂床。不是在側麵而是在床裏麵在這裏,我們可以假設在軸上沒有彎曲並且對稱彎曲到軸的兩側。因此,探針點2和3建立了對稱軸,
點1跨軸鏡像到1m。然後使用對稱性消除彎曲從1開始並將其用作平麵。

接下來,您應該確定校正方法。此更正由BED_CORRECTION_METHOD定義,並允許以下值:

BED_CORRECTION_METHOD 0
使用旋轉矩陣。這將使z軸在x / y方向上移動時向上/向下移動以補償傾斜。對於多台擠出機,請確保其高度與床的傾斜度匹配,否則會刮傷。

BED_CORRECTION_METHOD 1
電動校正。此方法需要一個固定在3個點上的床,其中2個具有電機改變高度。位置定義為
BED_MOTOR_1_X,BED_MOTOR_1_Y,BED_MOTOR_2_X,BED_MOTOR_2_Y,BED_MOTOR_3_X,BED_MOTOR_3_Y
電動機2和3是由電動機驅動程序0和1驅動的電動機。這些電動機可以是Felix Pro 1等額外電動機使用它們或具有3 z軸的係統,可以像Sparkcube這樣單獨控製電動機做。

您還需要設置以下參數:

#define ENDSTOP_Z_BACK_MOVE 5
#define Z_HOME_DIR 1

首先使Z軸在撞到終點後下降幾毫米。這是必需的,因為我們假設床不平整,並且在x-y旅行期間校正了z高度。重要的是,在這些行程中不要撞到z端點,否則坐標係統會出錯。該值必須大於床的最大高度差。 Delta打印機用戶在z max處有一個特殊問題。沒有碰到終端擋塊就不可能移動擠出機。出於相同的原因,也無法以該高度進行打印,因此,最好將ENDSTOP_Z_BACK_MOVE設置為更高的值,以使某些移動可能發生,例如50mm。請記住,輕微的床傾斜也需要側移!第二組將歸零至z-max。再次需要這樣做,因為床不是平麵的。如果我們有一個z分鍾的終點擋塊,則隻有在床的最低點處觸發它。當然,這意味著,對於所有其他位置,歸零至z-min會將擠出機頭撞到床中。

驗證z-probe
在冒險承擔任何損失之前,應該測試一下是否正確配置了z-probe。運行一個

G31
檢查z探針的信號。它應該是低/關。現在手動觸發它並再次發送命令,確保有狀態反轉。

各軸歸位,測量擠出機和床之間的距離。一些命令,例如G30 / G32,在啟動時會降到較低的位置,即Z_PROBE_BED_DISTANCE + Z_PROBE_HEIGHT,因此請確保床上方有空間不會碰撞!

若一切正常,進行第一個真正的探針測量。將擠出機移至要測量並發送的位置然後運行:

G30
擠出機現在將下降,直到觸發Z探針,然後返回到起始位置,在日誌中報告觸發z探針所需的距離。如果您使用的是半自動z探針,請點擊探針以開始探測。

自動校正
現在一切都已配置並可以正常工作,我們可以開始調整床了。使用調平命令之前,您至少需要使x和y軸回零。 三角打印機將因G32歸位,因此可以跳過此操作。根據測量方法的不同,您有或多或少的測試點,如果我們可以減少z軸位移,則可以大大減少時間。如果歸位也包括z軸,探針將定位在Z_PROBE_BED_DISTANCE + Z_PROBE_HEIGHT(如果為正)。您應該選擇Z_PROBE_BED_DISTANCE,使其高於每個預期的傾斜度。如果您隻將x和y歸零,因為您不希望將z歸零到z max(原作假設仍有人用z max作為調平探針),那麽您應該知道在啟用歸零之前,打印機內部啟用的高度為0。因此定位通常會比較高。

一種簡單的方法是G29。它將測量3個高度(在探測點處),並將平均值用作打印機高度。這需要在啟動之前將其歸零至z max。

更好的解決方案是糾正可能的旋轉。我們已經定義了測量方式和校正方式,因此不再存在實際差異。啟動自動調平的命令是帶有可選Sx參數的G32。然後發生以下步驟:

1.禁用失真校正和自動水平校正。 自動調平旋轉矩陣將重置。
2.Deltas三角打印機將歸位並再次下降到起始高度。
3.如果比max高,探頭將由起始高度降低到該高度。
4.測量和校正旋轉。
5.如果max z限位存在且參數S不為0,固件將更新打印機高度,以便後續的歸位操作可以提供正確的結果。 確保僅當您之前歸位到了z max或高度測量完全錯誤時才進行此操作。
6.更新當前位置。
7.如果參數S為2或更高,則將新矩陣存儲在EEPROM中。
8.啟用自動校正。
9.啟用失真校正(如果之前已啟用)。
10.非線性打印機如deltas三角打印機將再次歸位以正確定位。
較舊的固件版本(<0.92.8)用S1來於測量和更新z長度。新版在S不為0時,對z max歸位s總會執行此操作。

三角(delta)打印機 

重要提示:較新的固件版本(大於0.92)將G33而非G29用於畸變校正。

Delta三角打印機比常規的執教坐標打印機需要更多的校準。您需要先校準擋塊。此校準將您在eeprom配置中看到的值更改為“ Tower X終點擋塊偏移[步長]”。 Y和Z。訣竅很簡單。歸位到最大擋塊後,固件將向下移動這些步驟,以將擠出機支架定位在精確的中心。必須定義精確的中心位置,否則三角力學的非線性行為將導致錯誤的幾何形狀。自己測量這些值幾乎是不可能的,因此您需要使用一個簡單的技巧。首先回家,並使用以下命令除去所有擠出機的偏移量:

 G28
 G131
現在,放置3個滑塊,使其處於相同的高度。為此,我用操縱杆固定所有滑塊,使它們輕輕地將操縱杆壓在打印機頂部,因為我知道它將隨後居中。根據您的打印機,最好從底部(而不是床–可能會偏斜)進行測量。困難的方法是使用x,y,z方向的移動。最簡單的方法是用“ M84”關閉電動機並用手滑動。注意不要快速滑動。運動會在電動機中產生電流,並流回電子裝置。由於禁用電動機時某些打印機將向下移動,因此較新的版本具有一條命令,僅一次禁用一台電動機。因此,現在最好的方法是使用M99 X0將X電機移動10秒鍾。您可以使用S <時間(秒)>更改時間。將Y0和Z0用於其他2軸。一旦所有滑塊的高度完全相同,請發送:

 G132 S1
這將測量所需的偏移量。 S1還將結果存儲在EEPROM中,因此您無需再次重複。

校準完擋塊後,可以像使用直角坐標打印機一樣運行床調平程序。

啟用和禁用自動調平

運行自動調平命令G32後,固件將切換到自動調平模式。如果添加了S2將其存儲在EEPROM中,也可以在打印機重啟後幸存下來。然後,僅在床高已變的情況下才需要新的調平。您可以使用以下方法進行更改:

M320;臨時激活自動調平
M320 S2;永久激活自動調平
M321;暫時停用自動調平
M321 S2;永久停用自動調平
M322;重置自動調平矩陣
M322 S3;永久重置自動調平矩陣
如果重置自動調平矩陣,則啟用和禁用自動調平的行為相同,相當於未做過調平。

失真校正
您運氣好,完成了自動調平。如果您的床不是100%平整的,或不是三角打印機,或幾何描述不是100%正確,那麽床和擠出機噴嘴之間的高度仍非常量。從0.92.8開始,可以使用失真貼圖進行校正。我們要做的是測量n x n值的固定網格,並將理論高度和測量高度之間的差異即凹凸貼圖bump map存儲在eeprom(或ram中,但每次都需要重複)。可用G33命令完成,它將按照您在配置中定義的網格進行測量。僅當z設置正確時,才啟動此命令。完成後它將啟用失真校正。現在,您的噴嘴也將跟隨bump顛簸。隨著z的增加它將減少校正,直到不再校正z為止。

注意:失真校正使用32位整數。如果z步長變化乘以點距逐步變化較大,則2 ^ 31計算將溢出,並且結果不確定。在實際情況下,采用典型的校正方法並不會造成太大的影響,但是當在高分辨率打印機上進行較大的z更改測試時,就有可能超過該限製!

G33也有3個特殊命令。

List Bump Map 列出凹凸貼圖
G33 L0    ;獲得所有測得的顛簸和存儲的校正的清單。這些值在各個位置處添加到z,並且在點之間插入z校正。

Adjust Bump Map 調整凹凸貼圖
G33 X Y Z    ;將為最近的存儲位置設置一個新的校正值。因此,您無需從G33 L0列表中輸入確切位置。

Reset Bump Map 重置凹凸貼圖
G33 R0    ;將所有校正設置為0。

開啟/關閉失真校正
M323     ;顯示是否啟用校正
M323 S0  ;禁用更正
M323 S0 P1 ;永久禁用更正
M323 S1  ;啟用更正
M323 S1 P1 ;永久啟用更正
手動床校正
另一種方法是將床調平,使其與x-y移動成方型。這需要較少的計算,並且不會像自動調平一樣使z軸磨損(這等於機械自動調平)。唯一的缺點是,將它調好的工作量更大。最簡單的辦法是床僅做3點支撐。在這種情況下,您要使3個測量點與床架相同。該方法非常簡單。您發送“ G29”,固件將測量並輸出三個點的高度。然後,重複調整直至三點高度相同。如果滿意而且還有z-max限位開關,則還可以發送“ G29 S2”以測量打印區域的高度並將其存儲在eeprom中(S1僅測量高度)。

[ 打印 ]
閱讀 ()評論 (0)
評論
目前還沒有任何評論
登錄後才可評論.