リニアアドバンスってなんぞ?
どもどもYanでっす。
本日のお題は「リニアアドバンス」。
FDM方式の3Dプリンターでプリントクオリティを追求していくと避けては通れない設定。だけどパラメーターをちょこっといじればOKという簡単なものじゃないのが残念なところ。
情報が少ないので備忘録も兼ねてまとめておきます。
リニアアドバンスって?
FDM方式の3Dプリンターに入れることができる、ファームウェア「Marlin」が実装している機能のひとつ。
MarlinをAnycubic i3 MEGA(MEGA-S)にインストールするにはコチラのはるかぜポポポさんのノートを参考にするとよろしいかと。
引用するには長すぎたのでURL貼っておきます。
ざっと書いてあることを説明すると。
・デフォルトだとエクストルーダーモーターはXYZ軸モーターと同じリニアな動きをする。
・だけど実際はエクストルーダーはリニアなシステムじゃない。
・XYZ軸のリニアな動きに対応したマテリアル量を吐出させるべき。
という感じ。
Marlinをファームウェアとして書き込んだ3Dプリンターではリニアアドバンスを使ってリニアな動きに対応したマテリアル吐出量を設定できるというわけ。
設定するには準備が必要
リニアアドバンスを使うには準備が必要になる。事前に自分の3Dプリント環境でどんな数値が最適なのかを調べておかないとならない。
あ、それとThingiverseのMEGA用Marlin以外をインストールした場合は手動でリニアアドバンスを使うようにしてコンパイルしたファームウェアをMEGAに書き込む必要があるかもしれない(Thingiverseのやつは最初から有効になっていてKは0がセットされている)。
リニアアドバンスの設定に必要な数値はいろいろな要素によって変化する。
・マテリアルの種類
・ノズル口径
・プリント温度
・プリント速度
最低限マテリアルの種類、ノズル口径の違いごとに数値を出しておくべきだろう。
僕はマテリアルの種類に応じてプリント速度、温度は一律にしてあるのでマテリアルの種類とノズル口径(たまに0.2mmを使うから)ごとに数値を調べた。
マテリアルの種類としてはPLA、PETG、ABS、TPUとメジャーなところ全部。出力するクオリティあげたいし。
テストパターンをプリントしよう!
このページで自分の環境にあったテストパターンを作成する。デフォルトから変更する必要があるのは以下のパラメーター。
・Filament Diameter:フィラメントの直径 MEGAだと1.75
・Nozzle Diameter:ノズルの口径 MEGA標準は0.4mm
・Nozzle Temperature:使うフィラメントに応じてプリント温度
・Bed Temperature:ビルドプレートの温度
・Retraction Distance:リトラクションの距離
・Layer Height:レイヤーの高さ
・Bed Size X:ベッドサイズの横幅 MEGAだと210mm
・Bed Size Y:ベッドサイズの縦幅 MEGAだと210mm
・Slow Printing Speed:遅いプリント速度
・Fast Printing Speed:速いプリント速度
・Movement Speed:トラベル速度
・Retract Speed:リトラクション速度
・Starting Value for K:テストで使うKの値の開始値
・Ending Value for K:テストで使うKの値の最終値
・Use Bed Leveling:ベッドレベリングを使うかどうか
Use Bed Levelingだけ補足しておくと、Marlinを入れていて、スペシャルメニューのレベリングを使っている場合、生成したg-codeの一部を修正する必要がある。
Generate g-codeボタンを押してg-codeを生成したら全選択→適当なtxtファイルにペースト。
「M420 L0 S1;; Activate bed leveling compensation」という部分を探して
M501
M420 S1;; Activate bed leveling compensation
と書き換える。
書き換えたら拡張子をgcodeとして保存。文字コードはUTF-8のBOM付きで。Windowsならメモ帳で編集がオススメ。
保存したgcodeファイルをSDカードにコピーしてプリントする。
最適な数値を見つける
テストパターンをプリントするとこんな感じになる。ビルドプレートが汚いのはスティックのりを毎回掃除してないからなので気にしないで!
見るべきは太さが変化している部分。つまりプリント速度が変化している部分。
この太さの変化がない数値がリニアな動きに応じてマテリアルが最適に吐出されている数値。最初のテストプリントは0.2刻みでKの値を変えたので結構大雑把。ここが良さげだなという数値を見つけたら、その2つ下から2つ上くらいの間で今度は0.05刻みにしてテストパターンのg-codeを作成してテストプリントをもう一度行う。K-factor Steppingの数値を0.05に変更してg-codeを生成する。
0.05刻みで作成したテストパターンをプリントするとこんな感じ。
ここでまたスピードの変化点での太さの違いに注目して良さげな数値を見つける。
上の写真の例だと0.7か0.75あたりがよさげ。
数値がわかったらCURAで設定
メニューの「Setting」→「Printer」→「Manage Printer...」を選択
この画面が開くのでPrinter一覧から変更したいPrinterを選択。素材ごと、ノズル口径ごとにリニアアドバンスの数値は変化するので素材別、ノズル口径別でプリンターを用意しておくと便利。
Printerを選択したら「Machine Settings」ボタンを押す。
Closeボタンの右下あたりをドラッグ&ドロップでウィンドウを大きくできるので上の画像のように大きくして。左下のStart G-codeの部分に追加する。
「M117 Printing」の後に
M900 K0.75
を追加する。Kの後の数値はテストプリントで見つけた最適な数値を入れること。
これでスライスしてgcodeファイルを書きだすときに自動的にリニアアドバンスを有効にしたgcodeになる。
まとめ
リニアアドバンスを使うと出力物の角の部分がシャープになったり、ウォールプリント時に変に凸凹していた部分が改善される。
ちょっと最適な値を求める作業が面倒ではあるけれど、Marlinファームウェアを使っているのなら、やって損はない設定だと思うのでぜひ挑戦してほしい。