見出し画像

【前編】デルタ型3Dプリンタ FLSUN Q5 高速化セットアップ覚え書き

 結構前に、安いノズルセットをamazonで買ったんですよ。0.2mm、0.4mm、0.6mm、0.8mm径のノズルがセットで20個近く入って1000円くらいの奴(といっても、半分以上は0.4mmだけど)。

……で、使ってみた結果、ウチに必要なのは0.5mmと0.3mmではないかと言う結論に落ち着いたんですけどね。あと、その後に買った 0.2mmのkaikaが素晴らしいと。ええ、何というか、安物買いの銭失いコースまっしぐらな感じでした(笑)

 とまあ、そんな感じで、いろんなノズルを使ってみたのですが。0.2mmノズルを使った際に、ちょっと高速化にチャレンジしてみまして。その時のことをちょっとまとめてみました。

……が、その前に。まずはその前提となるプリンタのセットアップをまとめてみました。ここでは私の愛機であるFLSUN Q5独自なことがこれでもかと書き連ねられてます。……うん、需要が全くない気がするなぁ(爆)

セットアップする環境


カスタムファームウェア(marlin):

 Foxiesという海外(フランス?)の方が marlinベースのFLSUN製デルタ型3Dプリンタ用カスタムファームウェアを作成、公開してくださっています(ありがとうございます!)。
 この記事では、それを利用する形となります。

 marlin に関する記載、最近では klipper が人気の関係なのでしょうね、日本語の記事はなかなか見かけませんし、結構古い記事がヒットしてしまいます。が、marlin も常に更新されていて、この一、二年でも結構いろんな改善や機能追加がされています。

 私の使っている FLSUN Q5 にとって重要な変更だと、以下のものでしょうか。

  • TM2208モータードライバ利用時のリニアアドバンスド不具合修正。

  • ZV Input Shaping(ゴースト/リギング軽減)機能追加(本カスタムファームウェアでは無効化)。

 これらの処理が2022年12月にmarlinバージョン2.1.2として実装されて、本カスタムファームも今年の2月に更新、展開されています。少なくともリニアアドバンスドは高速化には必須の機能ですので、本記事を参考にされる方は必ず有効にしてください。

 なお、基本的なことは本ファームウェアのwikiページに書かれています。日本語の情報がほとんどないFLSUN Q5においてはかなり貴重なページですので、FLSUN Q5ユーザー(いるのだろうか……)は、是非目を通しておきましょう。

Foxies-CSTL/Marlin_2.1.x Wiki
https://github.com/Foxies-CSTL/Marlin_2.1.x/wiki

PrusaSlicer + OctoPrint(raspberry pi):

 OctoPrint(raspberry pi)に関しては必須ではありませんが、PrusaSlicerはプリンタにG-Codeを直接送信できません。raspberry pi のような別マイコンを準備しなくても動かせるのがmarlinの大きな利点の一つだとは思いますが、あると便利なのも事実です。是非とも準備しましょう。

 raspberry pi 無しの場合はSDカード経由で印刷することも十分に可能ですが、その場合は(特にレベリングに関することが)不便になることは覚悟しましょう。……まあ、0.2mmノズルとかを使わなければ、無しでも十分いけるとは思います。

カスタムファームウェアインストール


 で。ここから実際の作業ですが。詳細は以下のページに(英語で)書かれていますのでその通りにやりましょう!

Foxies-CSTL / Marlin_2.1.x Wiki Page - 7.3.2 Update and flash
URL:https://github.com/Foxies-CSTL/Marlin_2.1.x/wiki/7.TIPS#732-update-and-flash

……これで終わってはアレですね。ちょっと要点だけをかいつまんで説明してみます。

1.ファームウェアダウンロード

 カスタムファームウェアのリリースページから「Marlin2.1.2-Firmwares.zip」をダウンロードして解凍、メインボードのバージョンを調べて、対応するファームウェアをSDカードにコピーしてください。
(メインボードのバージョンは、基盤を直接見て判断してください)

MKS Robin nano 1.2の場合:
 Q5_STOCK-Robin_nano.bin を Robin_nano.bin にリネームしてSDカードに格納する。

MKS Robin nano 1.3の場合:
 Q5v1.3_STOCK-Robin_nano35.bin を Robin_nano35.bin にリネームしてSDカードに格納する。

 SDカードは32GB以下のものを準備してFAT32でフォーマット、上記のファイル名でルートに格納すれば、あとは3Dプリンタに差し込んで電源をONするだけです。
(クラスタサイズが 2048 or 4096 の場合は quick のフラグを外してとかRUFUS使ってますとか書かれてるけど、正直、自分はすんなり書き込めたのでよくわかりません)

3Dプリンタの初期設定

 
 これまた、詳細は以下のページに(英語で)書かれています。なので、ここも要点をかいつまんで。

Foxies-CSTL / Marlin_2.1.x Wiki Page - 2.SETTINGS THE PRINTER
URL:https://github.com/Foxies-CSTL/Marlin_2.1.x/wiki/2.SETTINGS-THE-PRINTER

 一応、上から順に実行すればセットアップできると思います。

Special Delta Prepare/Fine calib. Delta

 取り外し式のセンサーを使ったオートレベリングです。ヒートベッドを60℃に上げてからこれでもかという位に高さを計るので、そこそこ時間がかかります。まあ、センサーを付けて放置して、最後にセンサーを外すだけなのですが。

……そのわりには、精度はいまいちな気が。これが一般的な精度なのかFLSUN Q5固有の問題なのかは、私には正直わからないのですが……

 なので、初期層を0.2未満にする場合は、さらにマニュアルで設定することを覚悟しておいた方がいいと思います。

Special Delta Prepare/Z-Probe Wizard

 3Dプリンタではお馴染み、Z軸の0点調整です。最初は毎回30mm以上離れたところからになるのは何故なのか(笑
 少しずつ高さを下げて、最終的に紙一枚より狭い、ノズルとベッドで紙を軽くつまむ位の高さにZ軸を設定しましょう。

設定を終えたら、ちゃんと「Done」を選んで終了しましょう。うっかり画面下中央の矢印アイコンで画面を抜けると設定値が反映されず、もう一度設定するはめになります。

そして、次の「Configuration/StoreSettings」も忘れずに……

Configuration/StoreSettings

 で、ここで一旦設定値を不揮発領域に保存しましょう。これを忘れると、電源OFF/ONであっさりと忘れます(笑)

UBL(Unified Bed Leveling/温度毎のレベリング、Special Delta Prepare/1.Bed Level. UBL for PLA、2.Bed Level. UBL for PETG、3.Bed Level. UBL for ABSの各項目)

 ここまで設定をしたら、次は材料毎(温度毎)のオートレベリングです。仕組みとしては、まずは3Dプリンタ側で材料毎に設定された温度にベッドを温めてから高さを測定して3Dプリンタ本体に保存する。で、印刷する毎にGコードでその設定値を呼び出すという形です。
 まあ、ベッドの過熱処理が入ってくるので、一度に全部やるのは微妙かもですが。これから使うフィラメントくらいは測っておきましょう。

 流れは「Special Delta Prepare/Fine calib. Delta」とほぼ同じで、こちらの方が少し短めです。

 以上で、3Dプリンタ本体の設定は(とりあえずは)完了です。

スライサーGコード設定

 次はスライサーのGコード設定です。Gコードで対応する必要があるのは
以下の3つです。

  • FLSUN Q5不具合(印刷後のノズル落下問題)対応

  • 本ファームウェア独自のGコードを追加

  • UBL対応


プリンター設定/カスタムGコード/Gコードの最初

M107
M104 S0
M140 S0
G92 E1
G1 E-1 F300
;G28 X0 Y0
{if layer_z <max_print_height} G1 Z {min (layer_z + 100, max_print_height)} {endif} F4000
G1 X0 Y0 F4000
;M84
M18 S10800 ;disable motors after 10800s(3H)

 まず、ファームウェア独自の修正を入れます。具体的には、元々あった「G28 X0 Y0」(ホームポジションに戻す)コマンドをコメントアウトして、「{if layer_z <max_print_height} G1 Z {min (layer_z + 100, max_print_height)} {endif} F4000」の行を追加しています。今回使用しているmarlinファームウェアがホームポジションを少し低い位置に設定しているのですが、その結果、背の高い物を印刷した後に自ら印刷物を破壊しにいってしまうので、そうならないよう、ホームポジションに戻らないようにする設定です。
 次の「G1 X0 Y0 F4000」はおまけで、ノズルをXY座標の中心に移動させています。

 で、最後にコマンド「M18」のパラメータを「S180」(180秒)から「S10800」(3時間)に変更します。これはFLSUN Q5のちょっとした不具合の対策で、印刷を終えてモーターを無効にする(通電をやめる)と自重でヘッドが勝手に落下して印刷物を破壊してしまうので、そうならないよう一定時間通電されたままにする措置です。

フィラメント設定/カスタムGコード/Gコードの最初

; Filament gcode
; Linear Advance 1.5
{if nozzle_diameter[0]==0.6}M900 K0.25
{elsif nozzle_diameter[0]==0.5}M900 K0
{elsif nozzle_diameter[0]==0.4}M900 K0.3
{elsif nozzle_diameter[0]==0.3}M900 K0.45
{elsif nozzle_diameter[0]==0.2}M900 K0.58
{endif}
M420 S1
G29 L1

 で、こちらはUBL対応です。最後の二行、「M420 S1」「G29 L1」を追加しています。「M420 S1」でUBLを有効にして「G29 L1」でレベリング時に計測したデータをロードしています。G29の後の番号は、印刷時の材料に対応する番号を入力してください。具体的には以下になります。

  • PLA:「G29 L1」

  • PETG:「G29 L2」

  • ABS:「G29 L3」

 以上で、現時点でのGコード設定は完了です。

テスト印刷


 で、ここまで設定したらテスト印刷です。ちゃんとフィラメントがベッドに定着することを確認して、必要に応じて調整しましょう。

 ちなみに、私はこう、ベッドいっぱいにぐるぐるする線を印刷して確認しています。まあ、精度はともかくお手軽かなと。なお、これは0.2mmノズル用パターンです。0.4mmノズルでも使えないことは無いと思いますが、ちょっと線が細いので、ちゃんと作った方がいいと思います。

……で、これでしっかりと水平が出ていない場合の対応ですが。対応としては以下のどちらかになるかと思います。

  1. 少しくらいのずれは、のりか何かで強引にくっつける。

  2. UBLの値をマニュアルで調整する。

 正直、そこまで精密な印刷をする気がないのなら、のりやマスキングテープで解決してしまう方がいいと思います。……何ていうのかな、毎回少しずつずれんですよ。で、あんまりノズルをベッドに近づけてしまうと、次に使うときにベッドにぶつかりかねないみたいな感じがありまして。そんな事故を起こすくらいなら、もうのりかなんかでくっつけてしまった方が速いかなと。
 初期層が0.2mmとかなら十分に使えるくらいのレベリングはしてくれると思います。

 で、問題はもっとギリギリの設定が必要な場合。これはもう、毎回オートレベリングをしてからテストパターンを印刷、細かいところは手修正をするしかないのかなと。オートレベリングの精度を上げれないかとかプロープの脱着までを全自動にできないかとか考えたんですけどね。どうにもセンサーを取り付ける場所が厳しい。で、あきらめて手動で設定することにしてしまいました。

 まあ、ここまでやれば初期層をよっぽど狭めても大丈夫だとは思います。

リニアアドバンス設定


 で、そこまで済んだらリニアアドバンス、高速印刷の肝となる設定です。……いや、どちらかというと正確さを上げるための設定なんですが、正確さを上げる=高速化に追従するよう設定するという側面もありまして。
 この設定でフィラメントを押し出すエクストルーダモーターの駆動と実際に押し出されるフィラメントのズレを補正します。

 具体的には、設定用の印刷データを使用、実際の速度設定を使って設定値を変えながら印刷して、一番自然に見える設定値を見つけ出す。そうして見つけ出した設定値をスライサーのGコードに反映すると、そんな感じの作業になります。

 その印刷データは、以下のサイトで作ることになります。

 設定項目に関しては検索すると色々出てくると思います。とりあえず、FLSUN Q5で自分が設定した一通り記しておきます。

Print Bed - ビルドエリア設定。直径200mmの円形に設定します。

  • Bed Shape:Round(円形)

  • Bed Diameter:200mm(直径)

  • Origin Bed Center:チェックを入れる

Speed - 印刷/移動速度。実際に利用する速度を大げさ気味に設定する。

  • Use mm/S:チェックを入れる

  • Slow Printing Speed:20mm/s(印刷最低速度)

  • Fast Printing Speed:250mm/s(印刷最高速度)

  • Movement Speed:150mm/s(移動速度)

  • Retract Speed:任意(フィラメントリトラクト速度)

  • Unretract Speed:任意(フィラメントリトラクト復帰速度)

  • Acceleration:3000mm/s^2(最大加速度)

  • Jerk X:-1(Xモーターの開始/終了時の最大速度)

  • Jerk Y:-1(Yモーターの開始/終了時の最大速度)

  • Jerk Z:-1(Zモーターの開始/終了時の最大速度)

  • Jerk E:-1(Eモーターの開始/終了時の最大速度)

Pattern - 印刷パターン。印刷パターンを設定する。

 テストパターンはまあ、基本はそのままで良いと思います。

  • Lin Advance Version:1.5

  • Pattern Type:Standard

  • Slow Speed Length:そのままでOK(見にくければ変える)

  • Fast Speed Length:そのままでOK(見にくければ変える)

  • Test Line Spacing:そのままでOK(見にくければ変える)

  • Print Anchor Frame:そのまま(チェックを外す)

  • Printing Direction:そのまま(Left to Right(0°))

  • Line Numbering:そのまま(チェックを付ける)

Advanced - 印刷の際の条件等を設定する。

……ここはどうなんでしょうね。自分は見やすいようにNozzle Line Ratioを少し上げました。

  • Nozzle Line Ratio:1.2

  • Z-Offset:0.1

  • Use Bed Leveling:Load UBL mesh 1(PLA時)

 Z-Offsetに関しては、個人的には最初は少し大きめの値にして少しずつ下げるくらいに慎重にした方がいいと思います。これまで設定した通りに動かせば、初期層に20mm/sと250mm/sの速さで印刷をすることになります。なんか妙に印刷するのが難しいデータが作成されるのでもう一度このデータのために0点調整をする覚悟で臨んだ方がいいと思います

 と、ここまで設定したら、ようやくテストするK値の指定です。Pattern に戻って設定をして、「Generate G-code」「Download as file」とボタンを押してG-codeのファイルを生成します。

  • Starting Value For K:0(開始時のK値)

  • Ending Value For K:2(終了時のK値)

  • K-Factor Stepping:0.2(増分)

 上記設定だとK値0〜2の範囲、0、0.2、0.4と0.2刻みで、速度を低速→高速→低速と変化させながら一本ずつ線を引いていきます。

 このとき、リニアアドバンス設定がされていないと(K値が0だと)速度が変化するところで太さが変わってしまうのですが、設定がされているとその値でフィラメントの吐出量やタイミングが補正されて、一本の線に近づいていきます。
 で、最も自然な線になっているところを見つけて設定すると、そんな感じの作業です。

 最初におおざっぱな値を見つけて次は詳細に、そうですね、増分を0.5とか0.2とかに設定してもう一度印刷して値を求める。そうして求めた値をスライサーに設定すれば、作業完了です。

フィラメント設定/カスタムGコード/Gコードの最初

; Filament gcode
; Linear Advance 1.5
{if nozzle_diameter[0]==0.6}M900 K0.25
{elsif nozzle_diameter[0]==0.4}M900 K0.3
{elsif nozzle_diameter[0]==0.2}M900 K0.58
{endif}
M420 S1
G29 L1

 なお、リニアアドバンスはノズル径やフィラメントの種類ごとに設定が必要な項目になります。まあ、PLAとABSは同じくらいの柔らかさだそうですので流用してもいいみたいな記載もどこかで見かけた気はしますが。

 巷ではKlipperがもてはやされてますが、調べてみると、案外 marlin にも同じ機能が入ってたりします。今回使用させてもらってる版のファームウェアでは無効化されてるけど、Input Shap という、ゴーストやリギングを打ち消す機能もしっかりとあります。そうやって考えると、結構 marlin も悪くないと思うのですよ。少なくとも「3Dプリンタ単体でも機能する」というのは、結構便利じゃないかなと。

 と、自分の使ってるFLSUN Q5やmarlinがあまり見向きされないのはちょっとなんて思ってここまでしたためてみました。誰かの参考になるといいなと思います。

――でもやっぱり、需要無いよなぁ!(笑)


この記事が気に入ったらサポートをしてみませんか?