![見出し画像](https://assets.st-note.com/production/uploads/images/56666784/rectangle_large_type_2_5f096f3ebaeac918366f9581d9bcb672.jpg?width=1200)
ANYCUBIC MEGA-S用の ちゃんと使えるファームウェアをビルドする② ちゃんとちゃんとのマニュアルメッシュベッドレベリングの巻(with12864)
前回のビルドしたファームウェアで印刷出来てますよね? じゃーどんどん改変して楽しんでってゆーのは、あわてん坊の◯漏さんです。
責任のある大人の3Dプリントは地に足つけなきゃね!ってことで、BLタッチは付けてませんがメッシュレベリングをしましょう。
メッシュレベリングって言うのはタッチセンサーを付けているから出来るのではなくて、センサーが有れば自動で出来るって言うだけのもの。
センサーが無くたってちゃんとホットベッドの歪みの修正は出来るんです!。試しにターミナルから
G29 S1
とコマンドを送ってみましょう。ね、何やら動き始めたでしょう? これはマニュアルでのメッシュレベリングが走り始めた動作です。(取り敢えず電源OFFで。)
今回はこのマニュアルベッドレベリングを行いたいと思います。
今回は理解がしやすいように説明がしやすいように 12864 のLCDを使ったやり方で説明をします。MEGA-Sのインターフェイスからはもしかして「運が良いと」 Special menu に表示されるかもしれません。(やってみて下さい。)
まずは現状確認。
普通な感じでヒートベッドいっぱいのテストパターンを印刷しました。
もうちょっとグチャグチャするのをイメージしていましたが、意外と定着しました。MEGA-Sってこう言う所イイですよね。ですがよく見ると実践では厳しいですね。最後にはこれば「ビシッ」と行くのか? まぁやって見ましょう。
ファームウェアを作成して機能を2つ追加
取り合えず2つの機能を追加します。
一つ目は、他のプリンターには普通についていてMEGA-Sに無い 「例のアレ」。 ベッドの水平だしの時に四隅に移動してくれる機能です。 コメントアウトを外します。
1686 #define LEVEL_BED_CORNERS // remove comment out
次に、マニュアルメッシュベッドレベリング操作のUIを提供する機能を追加します。これもコメントアウトを外します。
1677 #define LCD_BED_LEVELING // remove comment out
LEVEL_BED_CORNERS を試す
ではBUILDして試してみましょう。
まずは良くある四隅の LEVEL_BED_CORNERS から。
段層が深いですが、 infoscreen> motion> bedleveling> levelcorners で発動します。
実装されましたね。これで毎回同じ部分で水平だしが出来るので再現性が出ました。 (うぅ〜ん。 マーリンを使えてるなぁ~~。)
もうバネをやめてリジットに固定してしまってもイイですね。てかその方が良いし そうしたいです。
ここからメッシュベッドレベリングの本番
※始める前にプリヒートして温めます。
温まったらSTART。(今回はLCDで操作しますが、TFTに操作メニューは出てないでしょうからコマンドで実行する方法も他で紹介します。)
infoscreen> motion> bedleveling> Level Bed で発動。 コマンドで言うと
G29 S1
クリック
こう言う感じで止まります。 Z +0.200 と表示されてます。ここから例のOA紙でクリアランスを Z軸を動かしながら 揃えて行きます。
ちなみに四隅の水平出しの際のZ軸のクリアランスは 0.1mm で実行されています。
1箇所目は0.125mmくらい。エンコーダーの1クリクリで0.025mmづつ動きますがちょっと荒い感じがします。
ココはコマンド操作だと大変。
G91
G0 Z-0.025
調整が済んだらクリック コマンドで言うと
G29 S2
2箇所目は0.125mm
3箇所目は1.000mm
うーん。upとdownでヒスがありますねぇ〜 バックラッシュキラーつけた方が良いかも。
25回。5×5のメッシュでした。
終わったらメモリー上のデータを StoresSetting して EEPROMに保存します。 コマンドは
M500
ですね。
初メッシュが完了したので 実力の確認
※メッシュレベリングのデータを印刷に適応するには印刷開始後の G28 よりも後に M420 S1 をする必要があります。
では印刷。
良くなっている所もあれば悪くなっている所もあり、、、
↓比較用 メッシュ前 水平出しのみ
0.025mmの解像度と25点の計測でちょっと精度が足りないのかな。
なのでもう一度ファームウェアを修正して精度を高めます。
精度を高めるためのファームウェアの修正
解像度を上げるためにZ軸の移動を 0.025mm →0.010mm
1680 #define MESH_EDIT_Z_STEP 0.010
メッシュの区切りを増やすために 5→10
1659 #define GRID_MAX_POINTS_X 10
5×5 の 25ポイントから 100 ポイントに増えて 0.010mm刻みに成ったので少し大変かも。と思いましたが、マニュアル操作でのメッシュは 軸ごとに 7 ポイントまでに制限されていましたので
1659 #define GRID_MAX_POINTS_X 7
に修正して 49 ポイント測定します。 オートだと15ポイントまで増やせるみたいです。(知らんけど)
あと、ついでじゃないですが、印刷時にメッシュを適用するコマンドを送らなくてはいけませんがファームウェアの設定で自動的に適用する事も出来ますので今のうちに機能を入れておきます。
1555 #define RESTORE_LEVELING_AFTER_G28 // remove comment out
あとは測定前のプリヒートを自動で行う機能。(これはオート用だったので機能しなかった。)
1561 #define PREHEAT_BEFORE_LEVELING // remove comment out
で実際ビルドして測定した結果がこちら。
コマンドするとデータが返ってきます。
G29 S0
SENDING:G29 S0
Mesh Bed Leveling ON
7x7 mesh. Z offset: 0.00000
Measured points:
0 1 2 3 4 5 6
0 -0.02000 -0.00000 +0.01000 +0.03000 +0.03000 +0.01000 -0.04000
1 -0.02000 -0.01000 +0.02000 +0.03000 +0.04000 +0.02000 -0.01000
2 -0.02000 -0.00000 +0.01000 +0.04000 +0.06000 +0.04000 +0.04000
3 -0.04000 -0.01000 +0.00000 +0.04000 +0.05000 +0.05000 +0.02000
4 -0.04000 -0.01000 +0.01000 +0.04000 +0.04000 +0.03000 +0.01000
5 -0.01000 +0.00000 +0.02000 +0.04000 +0.03000 +0.02000 -0.02000
6 +0.01000 +0.01000 +0.04000 +0.02000 +0.02000 +0.00000 -0.05000
MBL G29 point 1 of 49
何となく傾向が出ていますよね?
ちなみに先程の結果も
5x5 mesh. Z offset: 0.00000
Measured points:
0 1 2 3 4
0 -0.00000 +0.02500 +0.02500 +0.02500 -0.02500
1 -0.00000 +0.02500 +0.05000 +0.07500 +0.02500
2 -0.00000 +0.02500 +0.05000 +0.07500 -0.00000
3 +0.00000 +0.02500 +0.05000 +0.05000 +0.00000
4 +0.02500 +0.02500 -0.00000 -0.00000 -0.07500
では、いざ テストプリント。
プローブが無くても実用レベルまで修正は可能のようです。
ファームウェアの編集で「地に足が着いた」大人の3Dプリンターに変身です! ※後日談。プローブが無くてもオートレベリングが使用できる事が分かりました。オートレベリングでは7ポイントの制限が無いのでもう少しポイント数を増やして修正したいと思います。
こういうのを読みながらやってます。
宿題
Z軸バックラッシュキラー
ヒートベッドのリジット固定
コマンドでのマニュアルメッシュベッドレベリング