デュアルエクストルーダーにおけるPrusaslicerの設定 使わないノズルをOFFにするマクロ

2023年4月19日

今回はデュアルエクストルーダー機におけるPrusaslicerのマクロについてです。デュアルエクストルーダー機でも通常1色運用な方も多いと思うんですよね。そういう場合皆さんはどうされていますか?私はどうしたらいいか考えていましたが自力で思いつかない中、Snapmaker forumに素晴らしい情報が!この方法はデュアルエクストルーダー機全般で使えるテクニックだと思いましたので紹介、共有させていただきます。

デュアルエクストルーダー こう運用したい!

Snapmakerのデュアルエクストルーダーが当方にも到着しました。Tipsやレビューはまた書きますがちょっと色々試すとやはり普段運用しているPrusaslicerを使いたくなります。純正スライサーLubanもだいぶ色々設定が増えて悪くないのですが、Curaベースとはいえサポート設定周りに色々制限があるため個人的には使いづらいんですよね・・・。

デュアルエクストルーダーとはいえ、普段ずっと2種類のフィラメントを使うわけではありません。でもシングルノズルに毎回交換するのも面倒です。個人的に実現したいのは設定を変えずに、2色使うときは両方のエクストルーダーを加熱し使用、1色しか使わないときは左、もしくは右任意のノズルのみを加熱し使用できる設定でした。

ただこれ、エクストルーダーごとにプリンターを分ければ比較的簡便なのですが、(左、右、両方の設定を別プリンターにしてカスタムGコードを記載する)一つのプリンター設定で行う方法が判りませんでした。

Snapmaker forumにドンピシャの情報 秘訣はフィラメント設定

この運用方法をどうやって実現しようかと考えていたら、既にSnapmaker forumにまさにそのものの情報が出ていました。英語ですが下記リンク先になります。内容はまさに前述の通りで、造形に使うノズルを自動判別するマクロでした。教えてくださったSlynoldさん、ありがとうございます!

マクロが正常に動作する鍵はフィラメント設定にあります。何をしているかというと、使わないノズル用のフィラメント設定を作っているんですね。使う方にはもちろん使うフィラメントの設定をするわけですが、使わないノズルにもそれ用に名前、この場合だと「NULL」というフィラメント設定を作成してノズルに割り当てます。どうせ使わないので設定はどうでも良いのですが、ノズル温度を0にするのがポイントです。

そうすることでスタートGcodeで1stレイヤーの温度がゼロの場合にはそのノズルの過熱を開始しない、というマクロを組むことが出来ます。使わないノズルにこの仮のフィラメントを割り当てることで利用しないことを明示できるという仕組みです。考えたこの方、天才・・・。

それを踏まえた当方のマクロ入りスタート、エンドGcode

ということで当方で利用しているDual extruder用のスタート、エンドGcodeがこちらになります。細かいところは皆さん色々自分用に変えていただければいいと思うのですが、マクロの部分をぜひ参考に設定してみてくださいね!!

{}で囲まれた部分がマクロになります。前半がツール0、ツール1それぞれに同様に温度が1よりも大きければノズルを加熱するように指示しているマクロ、後半はノズルの初期動作になります。

M82 ;absolute extrusion mode
;Start GCode begin
G28 ;home
{if first_layer_temperature[0] > 1}M104 S{first_layer_temperature[0]} T0 ; Preheat left extruder{endif}
{if first_layer_temperature[1] > 1}M104 S{first_layer_temperature[1]} T1 ; Preheat right extruder{endif}
M140 S[first_layer_bed_temperature]   ;Start Warming Bed
{if first_layer_temperature[0] > 1}M109 S{first_layer_temperature[0]} T0 ; Wait for left extruder{endif}
{if first_layer_temperature[1] > 1}M109 S{first_layer_temperature[1]} T1 ; Wait for right extruder{endif}
M190 S[first_layer_bed_temperature] ;Wait for Bed Temperature
G90 ;absolute positioning
G0 X-10 Y-10 F3000
G0 Z0 F1800
{if first_layer_temperature[0] > 1}
T0
G92 E0 ;Zero set extruder position
G1 E20 F200 ;Feed filament to clear nozzle
G92 E0 ;Zero set extruder position
{endif}
{if first_layer_temperature[1] > 1}
T1
G92 E0 ;Zero set extruder position
G1 E20 F200 T1 ;Feed filament to clear nozzle
G92 E0 ;Zero set extruder position
{endif}
G0 X0 Y0 F3000 ;Move to origin
G0 Z1 F1800 ;Move up to avoid scraping against heated bed
G92 E0
;Start GCode end

お分かりいただけるでしょうか?このマクロにより、先ほどの温度が1より大きければそのエクストルーダーを加熱する、というマクロが実現できます。先ほどのNULLフィラメントは温度がゼロなので、これを割り当てた場合にはツールが加熱されないわけです。本当に素晴らしい・・・・!!

一応置いておきますが、エンドGcodeのほうはあまり気にせず、どちらのツールもヒーターを切るようにしておけば問題ないと思います。

;End GCode begin
M107
M104 T0 S0 ;extruder heater off
M104 T1 S0
M140 S0 ;heated bed heater off (if you have it)
G90 ;absolute positioning
G92 E0
G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure
G1 Z210 E-1 F3000 ;move Z up a bit and retract filament even more
G1 X0 F3000 ;move X to min endstops, so the head is out of the way
G1 Y250 F3000 ;so the head is out of the way and Plate is moved forward
;End GCode end

Prusaslicerそのものの設定 ワイプタワーは相対押し出しに変更を

多色造形をする際に必要になるのがフィラメントのパージです。ノズルが一つの場合はもちろんフィラメント交換の際に色が混ざらないようとても重要なのですが、デュアルエクストルーダーでも待機中にフィラメントが垂れたり、待機中から復帰時には吐出が不安定になるのでワイプタワーもしくは代わりの物はあったほうがいいです。

Prusaslicerだとパージ先としてタワー、Ooze shield、それ用のオブジェクトがあります。(Ooze ShieldについてもHiroさんに教えていただきました。ありがとうございます!)それぞれ利点欠点はあるのですがPLAだとシールドはあまり使いたくない(オーバーハングのダレの原因)ので、タワーを使ってみることにしました。

設定をしてみるとワイプタワーを使用するためには現状フィラメントの押し出しモードを相対押し出しにする必要がありました。相対押し出しはフィラメントの送り量を絶対値ではなくレイヤー毎などでリセットし相対的に記載するモードです。対応していないプリンターもあると思いますのでご確認ください。(おそらくデュアルノズル機は対応していると思います)なお、シールドやオブジェクトにワイプする場合には絶対押し出しモードでOKです。

また、相対押し出しモードにするとともに、レイヤー変更時のカスタムGcodeに以下のコードが必要でした。(相対押し出しのため要所でリセットする必要があるのだと思います)Prusaslicerはちゃんとこのことを伝えてくれるので使う方はとても安心です。本当に素晴らしいソフトだなぁ。

G92 E0

なおPrusaslicerのデュアルエクストルーダー設定については公式にも案内がありますのでご参照ください。

そうそう、デュアルエクストルーダーではなくPrusaのMMUを使用した多色造形については、Twitterでもお世話になっている上記でもご紹介したHiroさんのTwitterがおススメです。元々Githubで公開されている12色版のMMU2Sを実際に使われています。こんなことできるのか・・・!とびっくりすること受けあいです!

2色でタイヤを作る 温度とリトラクションについて

上記設定を行った我が家のSnapmakerで造形したタイヤをここに貼らせていただきます。この場合は無事に2つのノズルが加熱され正常に動作しました。多少の糸引きがありますが良好な造形が出来たと思っています。もちろん1色の際は従来のシングルノズルの動作が行えています。今のところ不具合はありません。

そうそう、実際の運用では待機時のノズルをどうするか、という問題もあります。温度を下げておいたほうがフィラメントがダレる心配はないのですが、温度変化でのフィラメントの状態変化やヒートクリープによるつまり、復帰までに要する時間などどう考えるかで設定が変わってきます。

なお、CuraやLubanだとツール待機時に緩やかにホットエンドの温度を上下させる機能がありますが、Prusaslicerにはそういったツールはありません。かなり色々試しましたが最終的に私は時間の節約もかねて、PLAは待機中も温度は全く下げない設定にしています(190-200度とちょっと低めです)。また、リトラクションが長いとノズルが詰まるので、通常のリトラクションは1.5mm程度、ツールチェンジ時のリトラクションは10mm程度にしています。この設定で少なくとも10時間コースくらいまでであれば問題なくツールチェンジを伴う造形が行えました。

※2023年6月追記。Prusaslicerのバージョンにもよりますが、ワイプタワーを使用した場合はツールチェンジ時リトラクションされません。また、ツールチェンジのリトラクションは3mmくらいまでのほうがよさそうです。これは熱く溶けたフィラメントがヒートブレーク内に入らないためのTipsです。溶けたフィラメントがヒートブレークに戻ってそこで冷えて固まると詰まる原因になります。ご留意を!

上は2時間くらい?のものですが、タイヤを作った際のものになります。Slicer上でも実際に使う色のフィラメントを指定してカラー表示にするとイメージが湧きますよね。これが一発で家で作れるのは夢があります。TPUとPLAの2種フィラメント造形も楽しそうだな・・・と思案中です。

樹脂のダレについては温度を下げないのでどうしても生じやすいのですが、フィラメントをしっかり乾燥させるとほとんど問題がなくなりました。デュアルエクストルーダーを上手に使いこなすにはフィラメントの乾燥が必須となりそうです。良かったら下記記事もご覧ください。当方では乾燥の際スプール中央にシリカゲルを置いて乾燥を加速しています。

楽しいデュアルエクストルーダーライフを!

Prusaslicerのマクロ機能、すごいですよね。かなり色々出来そうですし、このダミーフィラメントを設定する手法も非常に合理的だと感じました。今回の手法はSnapmakerJ1等IDEX機を含む様々なデュアルエクストルーダー採用機に広く応用できると思います。皆さんの中でもしこういう方法も良いよ、というものがあれば教えてください。webを見ていてもデュアルエクストルーダーの情報はまだまだ少ない気がしています。これからも情報を共有していきたいと考えていますのでよろしくお願いします。では、楽しい3Dプリンターライフを。

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