3Dプリンターの内部設定を調整 エクストルーダーのフィラメント押し出し量をキャリブレーション 最適化してみる

2022年4月13日

機械が考えるフィラメント1mmと実際に押し出す1mmは同じとは限らない。指摘されれば当たり前のことですが、私は今まで知りませんでしたし、調整したこともありませんでした。皆さんの3Dプリンターはいかがでしょうか?私が使用しているのはSnapmakerですが、多くのFDM方式3Dプリンターで応用可能と思いますのでもしよかったらお役立てください。

エクストルーダーのキャリブレーションとは?その必要性について

きっかけはSnapmakerのフォーラムを見ている時に見かけたスレッドです。3Dプリントモジュールのキャリブレーションをするべきだというもので、スレ主のSnapmakerでは元々の設定値では樹脂の押し出し量が不足していた、という趣旨で議論されていました。英語ですが元スレッドが下のものになります。内容を調べてみると目から鱗でした。

3Dプリンターはスライサーが指示した通りに動きながら、指定した量のフィラメントを溶かし押し出して造形しています。この際、エクストルーダーでは歯車が回りながらフィラメントを送り出すわけですが、もしスライサーが指示した量と実際の吐出量がずれていたらどうでしょう?少なければスカスカに、多ければ線幅が広くなるなど問題が生じるのは明らかですよね。吐出については個体差としてユーザーがフィラメントに出方をみつつ、スライサーで流量(フロー)調整してあげれば補正はできます。が、他のユーザーや他機種の設定を参照したり、スライサーのデフォルトではずれが生じてしまいます。リトラクション量などフローが関係ないパラメータもありますし、個体差を修正しておいた方が良いのは明らかです。

今回紹介するエクストルーダーのキャリブレーションはこの樹脂の押し出し量を修正し、スライサーが考える1mmとプリンターが実行する1mmを一致させるために行います。従ってこの作業は3Dプリンターに直接指示を出して行うことになります。経年変化で押し出し量が変わることも予測されますので、定期的なチェックも必要かもしれません。

キャリブレーションするにあたっての注意点

もちろん、実害がなく、困っていなければ調整する必要はないかもしれません。私は自分の機材の標準化をしたいのと興味本位で調整しました。実施は個々の責任でお願いいたします。また、キャリブレーションの実施にあたって、個人的な注意点としては下記が挙げられます。

  • 3Dプリンター内部設定を書き換えるため、少々リスクがある
  • 調整後は押し出し量が変わるため、スライサー設定も変更する必要がある
  • つまり今まで保存しておいたG-codeは使えなくなる

ちなみに調整はMarlinというSnapmakerを含め3Dプリンターで使用されている標準的なファームで使用されているコマンドを用いるので、3DプリンターとPCを接続しコマンド入力ができる環境が必要になります。なお接続方法についてはSnapmakerに準じますがコマンドは共通です。

手順1 SnapmakerとPCの接続

ここはSnapmaker2.0ならではの手順です。お持ちの3Dプリンターに合わせてください。
おそらく多くのSnapmakerユーザーはSnapmaker Lubanを使用してWifiでPCと接続していると思うのですが、今回の場合は有線接続が必要になります。このリンクから有線接続用のドライバーをダウンロードしてインストールしてください。mini USBのケーブル(付属してたかな・・?)を使用してPCとSnapmakerを有線接続します。

Lubanを開いて左上を確認し、有線接続を選択します。正しく接続されていればUSBをCOMポートとして接続が完了します。当方ではCOM7でした。今後は画像下にあるコマンド入力画面出操作を行います。

手順2 下準備とフィラメントの長さ測定

次にフィラメントの準備です。もし手動でできるならホットエンドを規定に加熱して、フィラメントのロードを行います。私はPLAで計測したので、ホットエンドを200度としてローディングしました。この後フィラメントを10cm送り出す動作を行いますので、エクストルーダー近傍の基準位置(エクストルーダー入口など基準となる場所)から多少送り出しが多くても良いよう、11cmの部分にペン等でマークをつけておきます。直接測りにくいようであれば11cmの糸や紐でも良いと思います。

この作業によりこの後10cmフィラメントを送り出した際の誤差を測定することができるわけです。

ちなみにホットエンドの温度設定やフィラメントのローディングもこの下にあるようなコマンドで出来るのですが、私のような初心者は慣れ親しんだ方法で行うのが良いと思います。

手順3 コマンド入力その1 設定読み取りとローディング

さて、いよいよPCからコマンド入力をおこなっていきます。まずM83でフィラメントの送り出しを相対モードにしておきましょう。キャリブレーションを複数回行う等、同じ入力を行っても困ることがないです。ということでこのコマンドを入れてリターンキーです。ちなみにこのコマンド群はMarlinのファームで規定されています。興味がある方はぜひ。

M83

次に現在のエクストルーダーの現在の設定値を読み込みます。コマンドはこちら。

M503

・・どうでしょうか。ずらっといろんな数字が出てきたと思います。(画像参照)現在の設定値が一覧表示されますが、大事なのは比較的上の方の行にあるエクストルーダー設定値です。M92から始まる行を確認してください。Snapmaker Lubanのスクリーンショットを参考にしていただき、E steps per unitの値を見ます。

私の場合だとE 212.21 になっていました。ここが調整の基準になる現在の設定値です。次にいよいよフィラメントを10cm送り出しましょう。

G1 E100 F100

ちなみにこれはG1(動かします) E100(エクストルーダーを100mm)F100(100mm/minで)という意味です。コマンドを入れてリターンを押すと1分かけて現在の設定値で100mmのフィラメントが押し出されます。(画像はF300になってます、すいません)

どうでしょうか?ここでちゃんと出ていればOKです。先ほど110mmのところに印をつけたはずなので、もし現在の値が正確なら、今の基準位置から1cm手前につけたマークがあるはずですね。実際のズレを測定するため、現在の位置にペンでマークをつけましょう。インクがエクストルーダーに入るのは嫌なので私はここでフィラメントをアンロードしてしまいますが、個々の判断にお任せします。

手順4 結果測定と計算

アンロードしたフィラメントで結果を測定します。110mmのマークと実際の位置の距離を測ってください。もし15mmであれば実際に送り出されたフィラメントは95mmということになります。プリンターは100mmと思って出力しているのに実際は5mm足りなかったということですね。皆さんの結果はいかがでしたでしょうか?・・・ちなみに私は10mm以上足りませんでした。もちろん、誤差がなければ終了です。

ではこの誤差を元に新しいE値を計算します。といってもただの算数で「新しいE値=(100/実際の送り出し量)x現在のE値」です。元のE値が200で実際の送り出し量が95mmなら (100/95)x200=210.53になります。割合なので、送り出し量が足りなければ、E値が上がる方向に修正することになります。どうでしょうか、新しいE値が求まりましたか?

手順5 コマンド入力その2 調整終了

では、最後に新しい値を書き込みます。Eの後に新しい測定値を入れてください。

M92 E新しい値

当方の場合は242.92でした。これでE値が新しい値に書きかわったはずです。現在の設定を保存しましょう。設定の保存はM500です。

M500

これで保存ができました。値が変わっているか確認してみましょう。最初と同様にM503で設定を読み込みます。

M503

・・・どうでしょうか?M92の行のところ、新しい値に変わっていますか?無事に変わっていればOKです!!これで誤差が修正されたはずです。では、ちゃんと100mm押し出されるかやってみましょう。

先ほどと同様にノズルを加熱してフィラメントをロードし準備を終えたら、今回は10cmのところにマークをつけて10cmフィラメントを送り出してみましょう。

G1 E100 F100

先ほどと同様、1分でフィラメントが送り出されます。マークをつけた位置がピッタリ基準になっていれば成功です!お疲れ様でした!!これで誤差が修正されたことになります。新しいE値は覚えておくと良いと思います。ファームウエアのアップデートなどで初期値にリセットされる可能性がありますので、その時は再度M92で値を変更してください。

経年変化でも変わってくる可能性があると思いますので、年1回くらい測定しても良いかもしれません。

おわりに

慣れていないとちょっととっつきにくいですが、3Dプリンター内部でどういうやり取りが行われているのか、Marlinのコマンドがわかるとちょっと理解が深まったのではないでしょうか?私も基本的に詳しくないので非常にためになりました。皆さんの何かに役立ったらうれしいです。

また、今回当方のSnapmakerでは結構なUnder extrusion(押し出し不足)であったことがわかりました。確かに標準設定だと少し隙間が気になってフローを増やしたりすることがあったのですが原因がわかってすっきりしました。当方ではしばらくこの設定でやってみようと思います。

今回も最後までお読みいただきありがとうございました!