Prusa MMU2SとはPrusa Researchが開発したPrusa i3 MK3S+向けのカラーチェンジツールで、最大5色を切り替えつつ3Dプリントすることができます。
5色(5種類)のフィラメントを扱えるだけでもすごいですが、フィラメント数を12まで増やす改造方法をcjbaar氏がGitHub上で公開していました。
そこで本記事ではこのGitHubに沿って12色印刷の改造、そして5色より多くの色で3Dプリントしようと思います。
※最終更新時点で、単色印刷、12色のLoad / Unload、8色を使った多色印刷ができることを確認できました!ただ、ファームウェア関係は使うバージョンによって挙動が良いものと悪いものがあり、より詳しく調べる必要があります。また、導入してまだ期間が短いため、記事の内容(選定部品、組立手順および写真、ファームウェア書込など)が大幅に変わる可能性があります。ご了承ください。
部品発注
部品を揃えるために購入した商品リストです(部品表ではありません)。
今回の改造版はMMU2Sの部品(ネジやシャフトなど)を多く使うよう設計されているので、追加パーツはそこまで多くないです。
部品名・商品名 | 必要数 | 購入先 |
---|---|---|
Fysetc Prusa MMU2S クローンキット (最終的にはPrusaの純正MMU2Sで改造しました。後述参照) | 1 | AliExpress |
ドライブギア 歯数26 (26T) 真鍮 | 2 | AliExpress |
ドライブギア 歯数40 (40T) 鉄 | 7 | AliExpress |
ベアリング U604ZZ | 12 | AliExpress |
ベアリング 608RS | 1 | Amazon |
ステンレスロッド φ5mm×100mm | 1 | AliExpress |
クイック継手 PC4-M10 | 12 | Amazon |
128×64ドット有機ELディスプレイ(OLED) 白色 SSD1306 ※開発者は青色+黄色を使用 | 1 | 秋月電子 |
六角ナット M2 200個 | 6 | Amazon |
六角穴付きボルト M2 4/6/8/10/12/16mm | 多数 | Amazon |
六角穴付きボルト M3 | 多数 | Amazon |
PETGフィラメント eSUN(黒 / 白 / ナチュラル) ※黒以外はオプション | 各1 | Amazon |
PLAフィラメント PolyMaker PolyTerra (黒 / 白) ※白はオプション | 各1 | Amazon |
AliExpressでは過去記事の方法を使って価格交渉をすれば安く入手することができます。
本体組立
3Dプリント部品について、作者はPLAのみで作成したようです。ただ、強度の心配があったので、Idlerのみを指定のPLA、それ以外の部品はPETGにしました。
PETGはeSUN、PLAにPolymaker PolyTerraを使いました。作者のデータでは単色でも印刷可能なデータになっていますが、私は文字部分を別色にした2色印刷にしました。ベースカラーを黒色、文字を白色にしました。
以降では本体を完成するまでの部分的な組み立てについて解説します。順番についてはGitHub READMEの部品リストに合わせているので、組み立て順序というわけではありません。多少見づらいかもしれませんが、組立に挑戦される方はぜひREADMEと照らしつつ読んでください。
Lower
mmu12x-lower.stlではフィラメントの番号1〜12が凹みによって表現されていますが、別色で印刷できるよう修正しました。
積層方向に対して垂直な文字の厚みは0.8mmにしました。0.4mmノズルで線幅を0.38mmに設定すると、線2本分の厚み。これだと多少の印刷不良をフォローできるので文字が崩れにくいです。
XY平面上の文字であれば1レイヤーだけでも比較的キレイに文字を印刷でき、色交換の手間が少なく済みます。しかし瞬間的な吐出不良がモロに影響するので、フィラメントを惜しまず、こちらも0.8mm厚にしました。
他の修正箇所として、底面のデボスを取り除き、真っ平にしました。広範囲かつ低い位置でのブリッジであるため、「印刷中にフィラメントがノズル先に付着してダマになる」という失敗が多発しました。そのためブリッジ箇所を取り除いて印刷の確実性を優先しました。
Upper
Lower同様、デボス加工の文字を別色で印刷するよう修正しました。文字は印刷時の底面なので若干汚いです。Z軸のキャリブレーションやフィラメントの流量(flow rate)を見直す必要がありそうです。
Lowerと接続するための回転軸にはM5×16mmネジを使うようREADMEで指定されています。ただ、ベアリングとの隙間が大きいためネジではかなり緩かったです。そのため純正品の設計に沿い、クローン品付属のシャフト(φ5×16mm)を使いました。
作者的には取付穴とのクリアランスからネジを選んだようです。→Issue #6: Attach Upper and Lower
Idler
Idlerを構成する12個のリング(mmu12x-idler-rings.stl)の側面には円形のマークが凹みで表現されています。Idlerが回転するとUpperの開口部分からマークを覗くことができ、Idlerが何番のフィラメントのロード/アンロードをしているかを確認できます。しかし単なる凹みでしかないので、2色構成にすることで見やすくしました。
なお、作者はこのパーツをPLAで印刷するよう進めています。そこでPolyTerra PLAを使用しました。ただ、シャフトやネジなどを通す穴が多い割に、どの穴もクリアランスがきつくなってしまったため、六角ビットのドリルで削りました。
シャフト挿入時はスペーサーの大きい円外側からシャフト先端までが15mmになるようにして挿入します。するとUpperと組み立てる際、Upperとシャフトの側面が揃います。(今度図解作ります)
Microcontoller Unit (MCU)
側面にLED5個の穴があるけど、ここにはクリア色を使うことで、ディフューザーを追加しました。
このリミックスはPrintablesのuniversaljoint氏のモデルを参考にしました。
LowerにはM3×14mmで取り付けるようですが、持っていなかったので16mmで代用しました。とくに問題なかったです。
各コネクタの割り当てはMMU2Sの組立解説ページを参照してください。
Selector
Selectorの組立で使う真鍮のスリーブはMMU2Sキットに付属されています。ただし短くするためにカットする必要があります。パイプカッターがあると便利ですが、切断箇所は鋭利な状態であり、刃の力で若干凹みます。ロッドに通しても引っかかりがないよう、内径を工具類で戻したり、バリ取りをしたりと、後処理が必要です。
上記の処理をしても、Lowerと合わせて組み立てときにスリーブがロッドに引っかかり、Selectorから抜け落ちていました。そこで瞬間接着剤でスリーブをSelectorに接着し、スリーブに潤滑剤を綿棒で塗布しました。これによりスリーブが抜け落ちることはなく、動きもスムーズでした。
Selectorは2種類のデータがあり、フィラメントを通すクイック継手のサイズがM6とM10で異なります。ただ、MMU2Sの純正品およびクローン品だとクイック継手はM5サイズ(PC4-M5)なので、Selectorのネジ穴をM5に修正しました。
なお、12色MMU用のファームウェアをcjbaar氏は別のリポジトリで公開しています。その中で、./MM-control-01/config-mmu-options/12x-1.4d-display.h
に次の行が書かれていたので、若干修正が必要かも?
//filament lengths
#define FILAMENT_FINDA_EXIT_MM 10.0f // add ~16 if using m6 selector instead of m10
Bracket
元データでは純正品同様45°の角度がついたブラケットでしたが、操作性が若干悪いため、MMU2S本体が水平になるようデータを修正しました。
ただ、Inletの奇数番号が上向きになってしまうことを考慮しておらず、フィラメントロード時の負荷が大きくて失敗する可能性もあるので、今後の運用では修正するか、元データに戻すかもしれません。
なお、私はMK3S+の下側にフィラメントを配置しているため上記の懸念点が発覚しましたが、MK3S+とフィラメントの位置関係が逆であれば下向きである偶数番号で負荷が上がります(PTFEチューブの長さやクセ次第では問題ナシ?)。
Display (optional)
OLEDをカバー取付にはM2×8mmネジ4本を使うようですが、この長さでは背面を貫通するのでM2×6mmネジに変更しました。
ワイヤはQIコネクタ4ピンで圧着。注意点としては、OLED側とメインボード側で配線の色の並びが異なること。赤(+5V)と茶色(GND)が入れ替わっています。
また、最初はAmazonでOLEDを購入したが、基板の寸法が異なり、四隅の穴がSTLデータと一致しなかった。そこで秋月で寸法が合うものを購入しました。
配線関係が正しいかを回路図で確認したい方は、MMUのメインボードの回路図をGitHubで参照してください。回路図だとコネクタP7が液晶ディスプレイで使うI2C/SPI用コネクタです。
作者は青色+黄色のOLEDを使っていますが、白色のものでも問題なかったです。
Extruder
エクストルーダについてはREADMEに記載がなく、純正MMU2Sと同じのようです。そこで私なりにフィラメントセンサーをカスタムしました。
PrintablesにあるMykal451氏のモデルを参考に、フィラメントセンサの基板に表面実装チップのLEDと抵抗をはんだ付けしました。ただ、カバーのサイズが合わなかったので修正しました。ここでもLEDの光をキレイに見せるために、クリア色をディフューザーとして利用しています。
修正したカバーはPrintablesにて公開しています。→Printables
完成イメージ
ファームウェア書き込み
リポジトリのfirmware
フォルダにMK3S+側とMMU2S側それぞれのカスタムファームウェア(.hex
)が用意されています。
スライサーソフトPrusaSlicerを開き、[構成]→[プリンターファームウェアの書き込み]を選択すると、ファームウェア更新画面が開きます。そこからMK3S+、MMU2Sそれぞれに適したファームウェアを書き込みます。MK3S+には購入時付属のType-BのUSBケーブルをEinsyボードに接続し、一方MMU2Sにはクローン品付属のUSB mini Bケーブルを使いました。書き込みができればどのメーカーでも構いません。
カスタムファームウェアの詳細はcjbaar氏が別リポジトリで公開しています。気になる方はそちらを参照してください:MM-control-01 by cjbaar / Prusa-Firmware by cjbaar。
2022/11/09追記(重要):これまで開発者であるcjbaar氏のカスタムファームウェアを使って実験・レビューしてきました。しかし肝心のフィラメントチェンジが上手く機能しませんでした(Unload時にエクストルーダがなぜかLoad方向に一瞬回転するため)。
そこで、Issues内のcorn62氏が公開するMK3S+側のファームウェアを使ってみると、問題なく動作して8色印刷を実現できました!公式ファームウェア3.10.0をベースとしているので、現時点での最新機種MK3S+との相性がいいのかもしれません。このファームのダウンロードおよび書込みを強く推奨します。
2023/05/17追記:cjbaar氏が2022/12/31にMK3S側のカスタムファームウェアを更新し、ver. 3.11.0に対応したものアップしていました(ファームウェアはこちら)。こちらを試しましたが、以前のようにフィラメント交換のアンロードで失敗が起きやすい挙動をしていたので、依然としてcorn62氏のファームウェアをオススメします。
動作確認
無事にOLEDの点灯、フィラメントのロード / アンロードの動作確認が完了しました。純正品との比較や不具合、疑問点についてまとめます。
純正MMU2Sとの違い:フィラメント数UP&Homingの静音化
最初はリスクに備え、クローンを調達して付属ボードを使用しました。ファームウェアの書込段階ではエラーが表示されませんでしたが、動作確認でトラブルが生じました。用意されたファームウェアの種類によって動く場合と動かない場合がありました。後述で説明しますが、最終的にPrusa純正ボードに交換したらディスプレイ付きでも問題なく動作しました。
純正ファームウェアでは、起動時にIdlerを、初回動作時にIdlerとSelectorをあえてフレームに干渉させることで原点調整 (Homing) を行います。このときにガタガタと大きな音を鳴らすのが正直嫌でしたが、12色版ファームウェアだとその動作が少し控えめに設計されているので、Homing時の動作音は純正のときよりも静かです。
メインボードの差異:Prusa純正 vs Fysetcクローン
ここでは、Prusa製純正メインボードとFysetc製クローンメインボードの違い、および前述のトラブルについて説明します。
まず、GitHub上ではfirmware
フォルダに2種類のMMU2S用ファームウェアが用意されています。操作状況が分かる液晶ディスプレイを追加するかどうかで、ユーザーはMMU2Sに書き込むファームウェアを選びます。私は今回「OLED有り」で組み立てています。
- OLED無しの場合:
cjb_fw_MMU2board_12x-nodisplay.hex
- OLED有りの場合:
cjb_fw_MMU2board_12x-display.hex
その中で不具合に遭遇し、ボードを替えて試したりしていた結果、OLEDを使わなければどちらのボードでも問題ないが、OLEDを使う場合はPrusa純正ボードでないとダメだということがわかりました。
2つのファームウェアのうち、OLEDが無いファームウェア(***-nodisplay.hex
)であればPrusa純正とFysetcクローンのどちらのメインボードでもSelectorの移動&フィラメントのロード動作が可能になります。
しかし、OLEDありのファームウェア(***-display.hex
)だとボードによって挙動が異なります。Prusa純正ボードを使った場合、フィラメントの番号や状態(Idle、Retractingなど)がOLED上で表示されました。
一方、Fysetcのクローンボードでは常に「Initializing」と表示され、操作ボタンを押してもSelectorが動いたりフィラメントをロードしたりすることが出来ませんでした。リセットボタンで再起動しても改善されません。MK3S+のLCD上で [Support]→[MMU2] を確認すると「N/A」と表示が出ていて認識されていませんでした。やはり何らかの不具合で動かないようです。
もし純正のMMU2Sのメインボードを持っていない方は、Prusa Researchのオンラインショップで購入するか、OLEDなしで運用するしかないです。
※1 上記の違い・不具合はありますが「Fysetcのクローン品は悪い」という意味ではありません。OLEDを接続するセンサ用コネクタは、MMU2Sでは通常使わないので、仮にコネクタに問題があっても動作確認の術がありません。ディスプレイ無しでは問題なく動作し、モータの駆動やセンサ情報の取得もできているので、MMU2Sのクローンとしては問題ありません。
※2 作者曰く、OLEDの描画用ライブラリはプログラムの容量が大きいとのことなので、クローンボードでは処理負荷が大きくて不具合が発生したかもしれません:[FEATURE REQUEST] MK3 Firmware to handle increased MMU filament count #2511
ファームウェアのリポジトリを読み解き、書込み手順を適切に踏めばクローンボードでも対応できるかもしれません。
フィラメントのLoad / Unload機能の確認:Load Filamentは5番まで?!
MK3S+&MMU2SはLCD画面内でフィラメントのロード / アンロードを行うことができます。この機能が12色分に拡張されているか確認しました。
- Load filament: Load filament 5まで選択可能。6〜12番のフィラメントは選択肢にないが、MMU2Sのボタン操作でロードチェックが可能。
- Load to nozzle: Load filament 12まで選択可能。
- Eject filament: Eject filament 12まで選択可能。
- Cut filament: Cut filament 12まで選択可能。ただし、純正品だとSelectorに取り付けるカッターの刃が12色版MMU2SのSelectorでは使わないので、この機能は使うことができません。
上記のとおり、Load filamentについては5番目のフィラメントまでしか対応していませんでした。おそらくこの機能だけファームウェアの修正が忘れられて、純正MMU2Sの5色設定が残っているのだと思います。
おまけ:Belt Testの測定値の変化
Prusa MK3S+がステルスモードだと、Belt Testがエラーになり、次のメッセージが表示されます:Selftest Error: Please Check: Axis, Axis X
LCD Menu→Settings→Mode
の項目がStealth
になっている場合、Normal
に切り替えるとテストが無事実行されます。これはMK3S+側のファームウェアの問題です。今回の改造が原因ではなく、ファームウェアのベースとなるVer. 3.9.0 RC1が持つバグのようです。GitHubにて議論されています:[BUG] BELT TEST ERROR: Selftest Error Please Check: X Axis Length #2546
また、執筆時点で最新のファームウェアVer. 3.11.0とのテスト結果を比較すると、20〜40ほどの値の違いがありました。Belt Testはよっぽどの理由がない限り、オススメしません。
テストプリント
現状、フィラメント交換を行わない単色印刷は問題なく動作しています。純正MMU2Sには無い6〜12番スロットを指定しても、Selectorは指定したスロットに移動し、ロード/アンロードを行います。
多色印刷については、FloatingCam氏のモデルを使って実施中です。
多色印刷については、自作モデルで現在検証中です。
2022/11/09追記:前述のようにMK3S+側のファームウェアを開発者 cjbaar氏のものからIssues内の添付されたもの (corn62氏作) に変更しました。その結果8色印刷を実現し、満足いく印刷環境を構築することができました。
(レイヤースキップはスプール側の不具合、積層ズレは途中でビルドシートを取り外したからであり、改造版MMUが原因ではない)
遭遇した不具合は以下のとおり。現状、満足のいく印刷環境ではない。
アンロード時にフィラメントが抜けない
トラブル詳細
フィラメントチェンジでアンロードしようとしても、エクストルーダからフィラメントが抜けないトラブルが多発しています。
フィラメント先端が太くなり、PTFEチューブを通れない問題であればラミング設定というPrusaSlicerのフィラメントに関する設定項目をいじる必要がありそう。
ただ、先端が細くとも同現象が発生する場合もあります。そのときはエクストルーダのアンロード時間が短いのか、ギアに食い込んだまま、MMU2S側はアンロードしようとしてエラーとなります。このような場合はアンロード時間が原因な気もします(MK3S+のエクストルーダ側面の調整ネジを押し込み、ギアの力をゼロにすれば難なくフィラメントはアンロードされます)
前者の場合はラミング設定をPrusaSlicer上で行い、なるべくフィラメント先端が太くならないよう工夫する。後者であればファームウェア側を確認してエクストルーダのステッピングモータの回転時間を増やすことができれば解決できそうです。おそらくラミング設定について理解する方がMMU2Sを扱う上でも良さそうです。
有効策
Issues内のcorn62氏が公開するMK3S+側のファームウェアでは上記の点が改善され、問題なくフィラメント交換を行うことができました。
印刷途中でファンエラー発生:ファンが原因?ファームが原因?
エラー詳細
12色版MMU2Sを導入してから、印刷途中でエラーメッセージ"Err: PRINT FAN ERROR"
と表示されて一時停止する現象が発生しました。これは単色印刷、多色印刷いずれでも見られました。
LCDメニューでは[Resume print]
を選択できるので、ファンとケーブル類の状態確認をして再開しようとするも、エラーは解消されず、結局リセットボタンで再起動するハメに…。
稼働時間をLCD上の[Statistic]
で見ると、3ヶ月以上(96h20h42m)使ってきましたが、このようなエラーはこれまで出てきませんでした。
Prusa Researchヘルプページを参考に、アイドル状態でファンの掃除、コネクタをEinsyボードに再接続、Fan Speed
を255に設定してX軸キャリッジを左右に何度も移動、ケーブルを直接手で動かすなど、さまざまな方法で原因を探りました。しかしアイドル状態ではPRINT_FAN_ERROR
を再現できず、印刷中のみでエラーが生じます。
Support -> Extruder info
にてアイドル状態の回転数も確認しました。4200〜4360 rpmの範囲で回転数は変動していました。この変化量が許容範囲内なのかは不明ですが、問題ないように思えます。
上記の経緯からファン自体に問題があるとは考えにくくい。印刷中のみ発生するので、MK3S+の改造ファームウェアによるのではないかと予想しています。GitHubのIssuesではプロジェクトの問題を投稿できるのですが、下記のエラーメッセージについて誰も投稿していません。Issue #14: Updated firmware please!!ではプリントベッドの温度でエラーが出たと報告されていますが、こちらの解決はしていない様子。
有効策
ファームウェア自体を読み解く力が私にはないので、[Settings]→[Fans check]
をOFF
に設定してエラーを回避できないか試しています。MMU2S改造後、合計時間60時間ほどの単色印刷をしていますが、今のところ前述のエラーメッセージは表示されなくなりました。その場しのぎ感はありますが、現在は問題なく印刷できています。
2022/11/14追記:前述のファームウェア (corn62氏作) に書き換えると、上記のFans check
をONに設定し直しても問題なく動作し、エラーメッセージは表示されなくなりました。
LCDでPause print / Stop printできない
改造ファームウェアの仕様かもしれないが、印刷中にLCDから一時停止または中止しようとしても、項目が表示されない。
OctoPrintを導入していれば、画面左側でPause / Stopボタンを選択、もしくはターミナルでG-codeコマンド(一時停止:M601、中止:M603)を送信すれば上記操作は一応可能です。ただ、OctoPrint未導入の場合はリセットボタンを押すか完了するまで待つしかなさそう?
過去にRaspberry Pi Zero 2 Wを使ってPrusa i3 MK3S+をOctoPrint化したので、気になる方はこちらを読んでみてください。
LCD画面にファームウェア更新通知表示
cjbaar氏はMK3S+側のファームウェアをVer. 3.9.0 RC1をベースに開発しており、現在のもの(2022/10/20現在ではVer. 3.11.0)と比べるとかなり古いです。そのため、LCD画面にファームウェアの更新を奨めるメッセージが印刷開始後に表示されます。これが意外と鬱陶しい。
Prusaのフォーラムを調べると、[Settings]→[HW setup]→[Checks]→[Firmware]の設定変更で非表示にできるようです。しかし試しても消えませんでした。
ちなみに、このアップグレード通知はPrusaSlicerの[Custom G-code]→[Start G-code]に記載されている以下コマンド内のバージョン番号との不一致が原因です。
M115 U3.11.0 ; tell printer latest fw version
補足:フィラメントについて
MMU2Sで多色印刷するにあたり、私はPolymaker製のPolyTerra PLAを使っています。マットな質感が特長で、全20色とカラーバリエーションが豊富です。通常のPLAよりも軟らかいのでヤスリがけで整えやすく、湿気を吸ってもPTFEチューブ内で折れにくいというメリットもあります。
Polymakerまたは正規代理店のサンステラのオンランショップでは3巻、5巻、10巻セットという購入方法があり、10巻セットだと¥2,200 / 1巻(税込)で10色分を揃えられます。多色印刷でたくさんのPolyTerra PLAを使う方は是非お試しください。Polymaker10巻セット、サンステラ10巻セット。
今後:Wipe towerに替わるフィラメント交換方法
本記事のMMU改造により、使用色を12色まで拡張できる。作る幅は広がる一方で気になるのがワイプタワー(Wipe tower)によるフィラメントの消費量。
使う色数が増えればその分、交換回数が増えます。すると以下の3つも増えるためデメリットの側面が強くなり、12色拡張のメリットを喜べなくなります。
- フィラメントの消費量
- ロード / アンロード時のトラブル発生率
- トータルの印刷時間
そこで、別の方法を導入してフィラメント消費量・交換時間を減らしたい。 いくつか調べる中で、以下の候補を見つけました。
バケットに沿わせてフィラメントを外に垂れ流す
PrintablesとThingiverseで公開されているForfelet氏のアイデアです。角度のついたバケットをノズル下に配置し、フィラメントを吐き出すとプリンタ外側に垂れ流す仕組みです。ワイプタワーよりも短時間・少量でフィラメント交換できるようです。
また、ブラケットが印刷範囲を狭めないよう、通常時はビルドシートの外側にあります。そして交換時にプリントヘッドがZ軸に近づくと、バネの力を利用するトリガーによってブラケットが駆動されます。
Printablesのコメントでは、説明文のカスタムG-codeを使っても上手くいかないという意見もあります。しっかり運用するには自分で修正する力が必要のようです。
フィラメントを小石状に溜めてサーボモータでカット
これはGitHubで見つけたKevin氏(Instagram: kevins_prints)のアイデアです。サーボモータを搭載し、金属製サーボホーンを回転させることで、ノズルから吐き出されたフィラメントを除去するようです。
この機構を採用した理由として、Forfelet氏のような吐出した線状のフィラメントを取り除こうとすると、ノズル先に残り印刷物にくっつくことがあるからだそうです。その結果、BigBrain3Dのパージ方法を参考に小石形状にしてワイプする方法を選んだようです。
リポジトリにはSTLデータでPrusa仕様の部品がありますが、Prusaのメインボード(Einsy RAMBO)にはサーボを配線できるのか?
配線図・回路図のようなものは私が調べた見た限り公開されていません。プリントヘッドの2つのファンがPWMで制御されているので、一方のファンを外してサーボを接続する、というのもありかもしれませんが…。
作者はPrusaSlicerを使ってG-codeをカスタムしたようですが、3DプリンタはE3D ToolChangerを想定して設計されています。Prusa i3 MK3S+で使うならかなり本腰で勉強し、取り組む必要がありそうです。
2022/11/08追記:Pebble Wiperの製作者にInstagramで連絡したところ、「ファイル名に_PRUSA
と書かれたものはPrusaの部品を使うというだけで、Prusaに搭載して使うわけではない」との回答をいただきました。Prusa MK3S+への流用はかまわないとのことですが、前述のとおりボードにサーボを接続する余裕がないので、おそらく難しいかと思います。
フィラメントを小石状に溜めてリンク機構とバネでカット
前述のKevin氏がインスパイアを受けたと述べていた、BigBrain3Dのプロジェクトです。Kevin氏の機構ではサーボモータの動きを利用して廃棄するblobを掃除しています。一方、BigBrain3D側の機構 (Retractable Purge Mechanism) では、リンク機構とバネを採用し、エクストルーダの動きをトリガーにしています。それによりblobの溜め場所、そして廃棄プロセスに追加のアクチュエータを必要としません。Prusa i3 MK3Sが標準で持っているX軸モータを使っていて、PrusaSlicer上での制御・調整が可能になっています。
今こちらのシステムの導入を試みています…。
付録:Pseudo Multi-Material Sequential Printing
前述の8色テストプリントでは色の分離が十分できておらず、印刷物が汚くなっているのが確認できました。これは12色版MMU2Sに限らず、MMUそのものが持つ課題です。そのためWipe towerの量を増やしたり、シリコンや真鍮製のブラシを組み込んで自動的にノズル掃除を行ったりと、様々なプロジェクトがこれまで行われています。
ここで前述の印刷データを振り返ると、1つのオブジェクトに複数色を使うわけではなく、オブジェクト自体は単色で、複数色を同時に印刷しているだけでした。そこで思いついたのがPrusaSlicerの機能であるSequential printing(順次印刷?)です。
通常のFFF方式3Dプリンタでは複数のオブジェクトを一括印刷する場合、Z軸は正の方向に進み続けるので、全オブジェクトの底面をまず印刷して、徐々に積み重ねます。その一方、 Sequential printではオブジェクトを1個印刷し終わってから2個目、3個目、…と印刷していきます。エクストルーダとオブジェクトの干渉リスクや印刷時間増加のデメリットはありますが、先ほど紹介したテストプリントではカラーチェンジの頻度はオブジェクト間の遷移のみなので効率的です。参考動画:Sequential Printing – Prusa i3 MK2 (Markus BXD)
しかし残念なことに、PrusaSlicerではマルチマテリアルユニットを使ったSequential printには対応していません。そこで、PrusaSlicerをベースに開発された派生版“SuperSlicer”を今回試してみました。
SuperSlicerでもmulti-material sequential printingは設定不可能なのですが、PrusaSlicerとの違いとして、Sequential printingにてオブジェクトごとにスカートを設定することができます。これに私は着目し、単層のスカートをWipe tower代わりにしてフィラメント交換すれば、前述の仕様を掻い潜れると考えました。
そして実際試すと上手くいきました!Wipe tower設定時の挙動・機能を完全に再現したわけではないため、ノズルに付着した交換前の色が1層目で混ざることがあります。またフィラメントをアンロードした時にフィラメント先端にStringが出来てしまいます。誤魔化している部分があるので、Pseudo multi-material sequential printingと私は呼んでいます。
また、この手法ではGcodeを若干修正する必要があります。プリンター設定>カスタムGcode
による自動修正を試しましたが、自由度が低く不十分でした。
現在ではPythonのスクリプトを用意し、プリント設定>Post-processing scripts
を使って、Gcode生成後に後処理として修正を行うように設定しています。当初は手打ちでしたが自動化することができました。スクリプト自体と設定方法は近々GitHubやYouTubeで公開しようと思います。
しかし所詮は擬似的な (= pseudo) フィラメント交換なので、質を上げるにはまだまだ改善する必要があります。
さいごに
本記事では、GitHub上で公開されている12色版MMU2Sを導入し、12色印刷を実現するまでの道のりをまとめました。これを導入して不具合や疑問点、気づきがあり次第内容を追加してるため、勘違いや偶発的なものも含まれているかもしれませんが、ご了承ください。そしてリアルタイムで悩み、解決する様子を楽しんでください。
コメント
Hi Hiro,
Your blog helped me a lot in building MMU 12x. Thank you very much!
I have successfully assembled the unit and is able to load filaments to every slot.
However, when I try to print with the filament in slot 12, (by the way, I have not tried slots 6-11 yet), the octoprint warns that T11 doesn’t exist and the printer starts printing without changing to slot 12.
I have added number of tool heads in printer setting and extra tools to Start G-code in PrusaSlicer.
Is there anything that I am missing?
Any advice would be very helpful.
Thank you
Thank you for your comment! I’m glad my blog was so helpful to you.
I have never seen such an error. My guess is that the number of extruders on your prniter profile in OctoPrint may still be 5 not 12.
The following steps may help you to proceed with the check:
OctoPrint Setting > Printer Profiles > Edit Profile > Hotend & extruder > Number of Extruders: 12, Shared nozzle: check
I hope this method will solve your problem.
Thank you.