Klipper安裝後先不用急著開始印,因為3DPrintBeginner的設定值並不一定能完美符合每個人的機器
譬如說我直接開印會出現直角的地方太圓,其實就是Pressure Advance開太大
所以接下來最重要的是校正以下這些數值:
1. PID<=加熱器溫控校正
2. Input Shaper<=機器結構諧振補償,可以減輕列印表面的波紋
3. Pressure Advance<=轉角流量調節,可減經轉角部分突出的現象
建議也是按照這樣的順序來做比較好。
首先是PID的部分,我認為熱床不需要做PID也很穩定了,但噴頭可以做一下
尤其是天氣寒冷的時候,有時噴頭的加熱會上上下下很難到達指定值
如果有改裝特殊喉管、特殊加熱塊、改風扇等等與溫度有關的東西,也一定要重新做一次PID tune
原廠Marlin韌體的PID方式之前有一篇講過了,現在要講的是Klipper指令
1. 開機連上MainsailOS網頁介面,在控制台(Console)輸入:
TURN_OFF_HEATERS ⏎
2. 輸入:
PID_CALIBRATE HEATER=extruder TARGET=200 ⏎
接著噴頭就會進行幾輪加熱降溫,微調控溫曲線,幾分鐘後會出現一組參數
pid_Kp, pid_Ki, pid_Kd
也不用手抄,它已經直接帶入數據了
熱床的PID則是
PID_CALIBRATE HEATER=heater_bed TARGET=60 ⏎
3. 輸入:
SAVE_CONFIG ⏎
確保參數寫入cfg檔就可以了。PID調節的好,噴頭加熱應該就只會在1度以內飄而已。
INPUT SHAPER
input shaper它是一個指令名稱,用意則是「Resonance Compensation(諧振補償)」
就是列印側牆有一些細節的地方會在噴頭移出的位置出現像一層層殘影的東西,可以靠這個參數來補償現象(*補償但不可能完全消弭)
要得到補償值來填入input shaper,有兩個途徑
1. 下載Klipper官網提供的測試塊: docs/prints/ringing_tower.stl
2. 丟進慣用的切片軟體,注意勿旋轉模型,檔案有預設方向性。
切一切存G-CODE出來,上傳到Klipper web介面裡。
3. 再來要設定一下Klipper的測試環境:
但為求保險還是要先執行這個指令關閉掉它,以確保以前可能做過input shaper參數。
就會進入測試模式,接下來列印的第一個G-CODE就會用1500的加速度值開始印,每隔5mm就提高500的加速度值。
4. 挑選一支對表面紋路比較容易呈現的料(例如我都用蜘蛛消光料),把剛切片的 ringing_tower G-CODE印出來。
印的時候可用web介面監控一下列印速度,以確保它的確有用高速列印,實跑速率看這邊:
若沒有跑到指定的80~100mms,表示切片軟體設定有問題被限制住了。
列印過程如果看到側壁已經有明顯殘影紋路,足以做紋路數量、距離的量測,就可以提早停止列印;
列印過程如果機器發出奇怪聲響,或是噴裝了,就快點停止列印,把機器該調緊的地方調緊再測。
但是切記,如要重測,的3步驟的指令必須重新輸入,因為它們是屬於一次性的,重開機會回復預設。
5. 接著要藉由ringing_tower的表面紋路計算出噴頭震動的頻率
測量的方式是,用卡尺量明顯的幾格紋路之間的總寬度,例如我測量6格之間的距離一共是11.5mm
頻率=速率/波長;我的實跑速率已知是80mm/s,而波長是11.5/6,因此可用公式80*6/11.5≒41.7
我數學很爛反正記得公式就是速率*格數/總距。翻面看這組波紋背面是X還是Y,它就是該軸的共振頻率(儘管它列印實是反過來的位置)
算出X/Y兩組頻率以後,在「機器(MACHINE)」頁面打開printer.cfg檔,新增以下控制碼:
[input_shaper]
shaper_freq_x: ... # 剛剛測出的X頻率數字就好不用Hz
shaper_freq_y: ... # 剛剛測出的Y頻率數字就好不用Hz
shaper_type: mzv
這樣就是方法A-手動測量的部分完成了。
這個方法比較困難,風險也比較高,
但如果方法A眼睛實在看不清楚,覺得很難量,擔心數據不夠精準,就可以拚拚看用ADXL345
跑測試過程中步進機會進行激烈的震動,有損傷的可能性,請自行斟酌要不要用方法A就好
1. 需準備:
2. 買來的ADXL345輸出接點是沒有焊腳的,所以將6條杜邦線的針腳按照Klipper官方網站的附圖焊上
注意接腳定義排列有兩種,我買的是右邊那種,但板子是藍色的。
對應把母頭接上RPi的GPIO腳位,一定要多看幾眼,確定沒插錯才能通電,以免燒壞RPi或是ADXL345。
3. 由於Ender3系列的XY軸是分開運作的,X軸是噴頭左右跑,Y軸是印床前後跑
而我們又只有一顆ADXL345,因此要先後分別安裝在擠出機、印床測量
為此我準備了兩個列印件給S1專用的,一個印出來鎖在擠出機上,一個印在底板不要拆下
4. 然後要開始安裝測量用的軟體,用Putty登入Pi,輸入:
~/klippy-env/bin/pip install -v numpy ⏎
安裝numpy,過程耗時跟Pi的運行效能有關,我用Pi Zero 2W非常快,應該五分鐘以內就完成。
接著輸入:
sudo apt update ⏎
它會問你一次pi的密碼,沒改的話就是raspberry ⏎
與
sudo apt install python3-numpy python3-matplotlib ⏎
5. 再來要把RPi改成MCU模式(這樣做不會造成原本Klipper功能的影響)
手續有點複雜,原文網站在此,不懂其原理也沒關係,我也一知半解,照著做就是了
用putty登入Pi,輸入:
cd ~/klipper/ ⏎
sudo cp "./scripts/klipper-mcu-start.sh" /etc/init.d/klipper_mcu ⏎
sudo update-rc.d klipper_mcu defaults ⏎
在來輸入:
cd ~/klipper/ ⏎
make menuconfig ⏎
會進入以下選單,照著附圖的順序做設定,把Micro-Controller Architecture設為Linux process
最後按Q它會問你要不要儲存,選Y
跳回console後輸入:
sudo service klipper stop ⏎
make flash ⏎ (這邊會花一些時間跑)
sudo service klipper start ⏎
cd ⏎
sudo raspi-config ⏎
輸入pi的密碼(預設為raspberry)
會進入下面畫面,進入Interface Options把SPI interface啟動
選Yes就會啟用,選No就會關閉,當然我們選Yes
然後會跳回console又跳回這邊,按Ok
再按Finish就完成了RPi設置為MCU的動作。
6. 登入Klipper web介面,打開機器=>printer.cfg,在文件中增加以下字串:
[mcu rpi]
serial: /tmp/klipper_host_mcu
[adxl345]
cs_pin: rpi:None
[resonance_tester]
accel_chip: adxl345
probe_points: 100, 100, 20 <=這是測試時噴頭x, y, z位置,請依照平台尺寸做變通
然後按下右上角的保存並重新啟動。
7.
現在可以先把它裝在X軸也就是擠出機上,然後另一頭接上Pi的GPIO對應針腳。
在Web介面控制台輸入:
ACCELEROMETER_QUERY ⏎
如果ADXL345與Pi連接無誤,控制台應該會列出類似這樣的字串:
adxl345 values (x, y, z): 470.719200, 941.438400, 9728.196800
這樣就知道ADXL345已經連上線了
如果出現了 Invalid adxl345 id (got 0 vs e5). 這樣的紅字,表示沒接好喔,要檢查一下接線
接著輸入:
MEASURE_AXES_NOISE ⏎ 會偵測背景震動值,正常會在1~100以內
如果數值非常高(超過1000),有可能是RPi供電不穩、或是機器的風扇震動很大,或者ADXL345品質有問題
都沒問題就可進入下一步。
8. 確定鎖在噴頭上的ADXL345穩固了,先按下HOME圖標,噴頭歸零在中間
噴頭就定位了就可以在控制台輸入:
TEST_RESONANCES AXIS=X ⏎ 就會開始偵測
會看見噴頭左右晃動,逐漸提高頻率,最後變成震動,控制台會顯示5Hz~133Hz
一兩分鐘內就會完成測試,然後儲存一個數據檔案在Pi的暫存資料夾裡,暫時不需要取出。
注意: 請在場監視著測試過程,如果機器在高頻率震動的時候發出怪聲音或是噴零件了,
請立刻關閉電源或是在控制台輸入M112緊急停止,檢查哪邊鬆脫了。
務必確保機器組裝穩固了,並且放置於穩定的平台或是地面上進行這項測試。
X軸測完後,就把ADXL345移到熱床上印好的Y軸固定件鎖穩。
一切就緒,輸入:
TEST_RESONANCES AXIS=Y ⏎
同樣的,印床就會開始前後晃動直至震動,一兩分鐘後完成,同樣會有數據儲存在暫存裡。
9. XY軸都測完,就是要取得偵測的結果了。開啟Putty,連接到Pi,輸入以下指令:
~/klipper/scripts/calibrate_shaper.py /tmp/resonances_x_*.csv -o /tmp/shaper_calibrate_x.png ⏎
~/klipper/scripts/calibrate_shaper.py /tmp/resonances_y_*.csv -o /tmp/shaper_calibrate_y.png ⏎
再用WinSCP登入Pi的資料夾,找出根目錄下的/tmp/shaper_calibrate_x.png與/tmp/shaper_calibrate_y.png
製作出來的圖表如下:
解讀方式就是看圖表的波峰,我安裝ADXL345的方式是在側邊,偵測震動的是晶片的Z軸
因此我應該解讀Z軸的波峰,也就是藍色那條線,波峰大約是52.5Hz
Y軸因為是正確的XYZ軸安裝方向,因此可直接看右上角的MZV建議值,38.2Hz
10. 取得兩軸補償值,就可以在機器=>printer.cfg加入以下字串:
[input_shaper]
shaper_freq_x: 52.5 <=填入自己偵測到的
shaper_type_x: mzv
shaper_freq_y: 38.2 <=填入自己偵測到的
shaper_type_y: mzv
然後儲存,重啟韌體就可以了
Shaper有很多種type可以選(zv, mzv, ei, 2hump, 3hump),但基本上建議選擇mzv
有些shaper可以把波紋消除得更徹底,但會造成邊角不夠銳利,所以專家是建議用mzv比較均衡
至此為止就是入門等級的操作了,要更進階請參考Klipper官方文件
PRESSURE ADVANCE
Pressure advance - Klipper documentation (klipper3d.org)
是利用預判轉角位置提前讓擠出機減低流量的補償技術,可以讓轉角溢出(oozing)的現象很大程度的減輕
這個參數的測量是不用額外安裝硬體跟軟體了,只要執行幾個既有的指令,列印專用測試塊即可:
1. 先下載Klipper官方測試塊(跟input shaper不同的圖檔),丟進切片軟體,我是以Cura為例。
2. 切片設定: 列印速度要高,最好實跑要有100mm/s,軟體內的加速度設定一定要關掉,讓Klipper主導
填充設0%,層高設粗一點--建議設口徑的75%,0.4噴頭設0.3層高這樣
單層殼厚最佳,但Cura印單層會強制抑制速度,因此可設2層殼厚,以監測實跑接近100mm/s為準
切片完上傳到Klipper。
3. 列印之前先在Klipper控制台輸入:
SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500 ⏎
接著如果是近端擠出機,輸入下面指令:
TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.005 ⏎
如果是遠端擠出機,則輸入下面指令:
TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.020 ⏎
然後就選取G-CODE列印測試塊,它會按照上面的指令--每1mm增加0.005(或0.02)的pressure_advance值來列印測試塊
注意一定要監視webUI確認實跑速度80以上。
4. 印出來應該會像這樣
如果沒有像這樣的感覺,有可能是前面設置沒做好,或者列印實跑速度不夠快。
轉角的表現應該會從底下到上面呈現: 浮凸>>>下凹
找出它們的交界處,就是我們要的甜蜜點,如果感覺交界處很模糊無法確認,以偏下限為主
量出這個點的高度,帶入以下公式: pressure_advance = <start> + <measured_height> * <factor>
也就是pressure_advance參數 = 起點(沒亂改的話就是0)+量到的高度(例如8.4mm)*常數(例如近端是0.005)=0.042
5. 打開機器=>printer.cfg,找出[extruder]參數群位置:
在pressure_advance 填入計算出來的數值,例如0.042
保存並重新啟動,就完成了設定。
*新版Klipper這邊要輸入為pressure_advance: 0.042 使用冒號而非使用等號
Happy printing!