手動メッシュベッドレベリングの方法

KINGROON KP3Sのヒートベッドは中央が少し盛り上がる傾向にあるようで、大物をプリントするときにレベリングが決まらない、ファーストレイヤーの定着が決まらないといった話を聞く。

ベッドの表面の凹凸を自動的に計測して凹凸マップ、つまりメッシュを作り、それに合わせてノズルを上下させることで定着を改善する3D Touch(BLTouch)を使った自動ベッドレベリングは、その問題を解決するソリューションになる。

しかし、公式ファームウェアではAliExpressにしか売っていないKINGROON純正の3D Touchが必要であるなど、導入に障壁がある。

日本にも売っている社外製の3D Touchを使うには、オープンソースの3Dプリンター用ファームウェアMarlinを導入する必要があり、これまた障壁がある。

これが面倒で利用を諦めている人も少なくないだろう。

そもそも3D Touchの導入は本体内部からホットエンド周辺まで新たに配線を通す必要があるという事実にめげてしまう人もいるはずだ。

そこで、3D Touchの不要なマニュアルメッシュベッドレベリングの方法を紹介する。

KINGROON KP3Sはマニュアルメッシュベッドレベリングに対応している。

マニュアルメッシュベッドレベリングは、3D Touchを使った自動ベッドレベリングでは3D Touchのプローブがやることを人の手で代わってやるものだ。

これによって3D Touch同様表面の凹凸マップ、つまりメッシュを作り、それに合わせてノズルを上下させることでファーストレイヤーの定着を改善する。

メッシュの作成工程が違うだけで、作って以降の制御は3D Touchもマニュアルメッシュレベリングも変わらない。

image alt

マニュアルレベリングでやるように、必要なのはコピー用紙だけ。

KINGROON KP3Sユーザーでありさえすれば、だれでも利用できるのが魅力だ。

ファームウェアの設定変更

マニュアルメッシュベッドレベリングをやるには、ファームウェアの設定変更をしないとならない。

ファームウェアの設定を司るrobin_nano_cfg.txtをマニュアルメッシュベッドレベリング向けに書き換え、しかる後にファームウェアを入れ替えるわけだ。

robin_nano_cfg.txtに関しては筆者が日本語版を作成し、ダウンロード可能にしているので、そちらにマニュアルメッシュベッドレベリング向けのrobin_nano_cfg.txtも同梱しておいた。

公式ファームウェア付属のrobin_nano_cfg.txtとマニュアルメッシュベッドレベリング対応のrobin_nano_cfg.txtを入れ替え、ファームウェア更新の手順を踏む。

robin_nano_cfg.txt内のマニュアルメッシュベッドレベリングに関係する部分を抜粋する。通常版(非3D Touch版)との相違点はここだけだ。

1
2
3
4
5
6
>BED_LEVELING_METHOD 		5	# (0:不使用; 3:多点自動レベリング; 5:手動メッシュレベリング)

>GRID_MAX_POINTS_X 		4	# X軸グリッド数 (<= 15)
>GRID_MAX_POINTS_Y 		4	# Y軸グリッド数 (<= 15)
>Z_CLEARANCE_DEPLOY_PROBE	20	# Z軸リフト量/ローディスタンス (> 0)
>Z_CLEARANCE_BETWEEN_PROBES	5	# 2つのレベリングポイント間を移動中のZ軸の高さ (> 0)

BED_LEVELING_METHODに5を指定し、マニュアルメッシュベッドレベリングを有効化。

GRID_MAX_POINTS_X、GRID_MAX_POINTS_Yを3から4に変更して、メッシュを緻密にした。

image alt

3でも十分かもしれないが、結果を求めてマニュアルメッシュベッドレベリングをするわけなので、これぐらいはやりたいと思うのではないだろうか。

レベリング操作を16回もやるのが大変だと思うなら3に戻して9回に減らすといい。

Z_CLEARANCE_BETWEEN_PROBESは20から5に減らした。

これは、レベリングのポイント間の移動でノズルをどれぐらい上げるか、という設定だ。

上げ下げする時間がまどろっこしいので、2cm上げるところ、5mmに減らした。不都合があれば、この数値を大きくするといいだろう。

マニュアルメッシュベッドレベリングの実際

マニュアルメッシュベッドレベリングの手順は次のようになる。

image alt
  1. コピー用紙を1枚用意する
  2. ノズルやベッドの温度を使用環境と合わせる
  3. Home Allする(G28)
  4. マニュアルメッシュベッドレベリングを開始する(G29 S1)
  5. ノズルが動いている間にコピー用紙をヒートベッドの上に敷く
  6. 最初のレベリングポイントにノズルが移動し、プリント時の位置まで降りて待機状態に入る
  7. 待機状態に入ったら、メニュー「移動>Z+/Z-」と「1mm/10mm/0.1mm」を操作しつつコピー用紙を動かし、コピー用紙がノズルとベッドの間に挟まって抵抗を感じるが、コピー用紙が動かせないほどではない程度に調整する
  8. 次のレベリングポイントへの移動を指示する(G29 S2)
  9. 前二つの手順をすべてのレベリングポイントをコンプリートするまで繰り返す
  10. 最後の地点まで終わったら、メッシュデータの完成。ホーム位置帰還(ホーミング)が始まるので、ノズルの動きが止まるのを待つ
  11. ノズルの動きが止まったらメッシュデータをEEPROMに保存する(M500)
  12. メッシュの利用を宣言する(M501; M420 S1)

実際にプリントしてみて微調整が必要だと感じたら、Z軸根元の調節ネジを使う。

image alt

マニュアルメッシュベッドレベリングを有効化してプリントしたい場合は、スライサーのスタートコードに以下のように追記する。EEPROMに書き込んだメッシュを読み出し、それを使用することを宣言している。

1
2
M501
M420 S1

Ultimaker Curaなら、「Settings>Printer>Manage Printer…>Machine Settings>Start G-code」で設定が可能だ。

M501を実行すると、EEPROM上の設定の影響を受けるものはそれに上書きされてしまうので、EEPROMの設定の影響を回避したい場合は、M501の後に書く。

メッシュの部分修正

M503を実行すると、作ったメッシュが以下のような形式でダンプできる。

G29以降を実行すると、そのレベリングポイントだけを後から修正できる。

echo: G29 S3 X1 Y1 Z0.10000
echo: G29 S3 X2 Y1 Z0.10000
echo: G29 S3 X3 Y1 Z0.10000
echo: G29 S3 X4 Y1 Z0.10000
echo: G29 S3 X1 Y2 Z0.10000
echo: G29 S3 X2 Y2 Z0.10000
echo: G29 S3 X3 Y2 Z0.10000
echo: G29 S3 X4 Y2 Z0.10000
echo: G29 S3 X1 Y3 Z0.10000
echo: G29 S3 X2 Y3 Z0.10000
echo: G29 S3 X3 Y3 Z0.10000
echo: G29 S3 X4 Y3 Z0.10000
echo: G29 S3 X1 Y4 Z0.10000
echo: G29 S3 X2 Y4 Z0.10000
echo: G29 S3 X3 Y4 Z0.10000
echo: G29 S3 X4 Y4 Z0.20000

ベッドの特定領域をグリッドに当てはめるとこのような感じだ。

X1 Y4X2 Y4X3 Y4X4 Y4
X1 Y3X2 Y3X3 Y3X4 Y3
X1 Y2X2 Y2X3 Y2X4 Y2
X1 Y1X2 Y1X3 Y1X4 Y1

テストパターンをプリントしてみて、特定の領域のレベリングが甘かったら、そこだけを修正することができる。

右奥の角のノズル、ベッドの間隔が広いなと思ったら、そこはグリッド上ではX4 Y4に当たる。

だから、「G29 S3 X4 Y4 Z0.20000」となっているのを「G29 S3 X4 Y4 Z0.10000」などと数字を小さくして実行すれば、その辺りのノズル、ベッドの間隔が狭まるといった感じだ。マイナスの数字を取ることもできる点に注意。

ノズル、ベッドの間隔が狭すぎるなら、もちろん数字を大きくする。

その後にM500を実行してEEPROMに変更を保存する。

マニュアルメッシュベッドレベリングはUSB接続経由で実行

マニュアルメッシュベッドレベリングモードに設定しても、通常時とメニュー構成は変わらない。

マニュアルメッシュベッドレベリング用の新しいボタンがメニューに増えたりはしない。

先述の実行手順内で太字で示したマニュアルメッシュベッドレベリング独自の操作は、USB接続経由で実行する必要がある。例えばArduino IDEを使ってする。

Arduino IDEのシリアルモニタは、過去に実行したコマンドをカーソルキーの上で呼び出すことができる。従って、何度も実行する「G29 S2」は都度打ち込む必要はなく、カーソルキーの上で呼び出してEnterキーで実行するだけだ。

筆者はOctoPrint経由でテストした。

OctoPrintだとoctoprint_macroというプラグインを導入するとマクロを設定できるので、G29 S1、S2などマニュアルメッシュベッドレベリングに必要なG-codeをボタン化できて便利だ。

ノズルの高さを0.1mm以下の粒度で調節したい場合は、以下のようなG-codeをマクロ化(ボタン化)するといいだろう。

ノズルを0.02mm上げる

1
2
G91
G1 Z0.02

ノズルを0.02mm下げる

1
2
G91
G1 Z-0.02

image alt
image alt