マルチマテリアルユニットMMU2Sの調整
はじめに
これまで使っていた3Dプリンタの調子が悪くなり、ここいらでちょっといいやつ買ってみるかとPrusaに手を出す。
Prusaに手を出したのでマルチマテリアルを扱えるMMU2Sユニットも欲しくなり、ちょっと高いからクローン版を買う。
調整で地獄を見る。
こんな流れで結構苦労をする羽目になりました。なぜかMMU2Sについては日本語のノウハウがあまりないため、備忘録も兼ねてnoteに登録し記事を書いてみました。
注意点
Prusaは純正品ですが、MMU2Sはクローンです。また、MMU2S導入のついでにエクストルーダもアップグレードしています。
このため、記事を見ている方の環境でノウハウがそのまま通用するわけではありません。あくまで「こういう観点でチェックしたら何かわかるかも」程度で読んでください。
フィラメントバッファは特にトラブルがありませんでした。このため、この記事ではフィラメントバッファについては詳しくは触れません(MMU2Sを入手する前は、フィラメントバッファが一番の難敵だと思っていたのですが)。
機器構成
Prusa i3 MK3S+ オリジナル版
MMU2S fysetcのクローン(パーツはPrusaで印刷)
エクストルーダ Trianglelab DDB Extruder (MZ76 V2っていうBondtechエクストルーダのクローンらしい)
エクストルーダをMMU2Sに適合させるためのアダプター
フィラメント挿入時にLEDが点灯するMODは、調整の際にとても便利です。
フィラメントバッファーはホルダーに組み込む形で自作(トラブルはなかったのでここについてはノウハウ無し)
発想はほぼこれに近いですね。バッファと台座を一体化させたものを作りました。
そもそもMMU2Sを買うべきか?
この記事を見ている方は、
MMU2Sを買っちゃって頭を抱えている方
なんかマルチマテリアルが扱えるらしいぞと情報収集中の方
のどちらかだと考えています。
すでにMMU2Sを買ってしまった方は観念しましょう。茨の道ですが、MMU2Sは調整さえできれば正しく動いてくれます(調整が簡単だとは言っていない)。
幸いにもまだMMU2Sに手を染めることなく迷っている方へ。今ならまだ間に合います。本当にMMU2Sでないといけないかよく考えましょう。
マルチマテリアルいう響きは、まるでMMU2Sが何でも簡単に印刷できる理想的な万能機かのような印象を与えますが、そんなことはありません。悩ましい所を以下に列挙します。
課題1. とにかく調整がシビア
フィラメントを切り替える方式のMMU2Sでは、同じレイヤー内で異なるフィラメントを使用する場合、古いフィラメントのアンロードと新しフィラメントのロードを行います。例えば積層高さが0.2mm、高さ2cmで全レイヤ2色の物体を印刷する場合、200回のアンロード&ロードに成功する必要があります。これにはかなりの調整が必要です。厄介なのが、「大抵は上手く動くけど、ごくまれに動作に失敗する」ような挙動が調整前は頻発します。
幸いにも、MMU2Sは気難しいですが気まぐれではありません。調整した通りに動きます。ただこの調整というのがねじ1回転の単位でベストな位置を探ることを必要とするため、目の前の現象がなぜ起こったのかをきちんと考えて調整しないといつまでたっても終わりません。そしてこの調整の勘所はPrusa公式の組み立てマニュアルには一切出てこないのです…(英語で書かれたコミュニティの情報を漁ればヒントらしきものは出てきますが)。
MMU2S搭載前はあれだけ優等生だったPrusaが、急にアホの子になるので、挫けないよう心を強く持ち調整に当たる必要があります。
課題2. 全ての種類のマテリアルをサポートするわけではない
正確なソースが見つかりませんでしたが、MMU2SはTPUなどの柔らかいフィラメントを正式サポートしません。PrusaSlicerも、MMUモードではTPUを選択できないようになっているので、どうやらこの情報は正しいようです。
とはいえ、調整を頑張ればTPUでもキチンと切り替えはできますし、SingleModeというフィラメント交換をしないモードであればMMU2S搭載機でもTPUも選択できます。
TPUを含めたマルチマテリアル印刷を使い込んだわけではないので、もしかすると安定した印刷は困難ということは考えられますが…。
課題3. 余計にフィラメントを消費する
MMU2Sは複数のフィラメントで一つのノズルを共用する形なので、フィラメント切り替え直後は、ノズル内に残留したフィラメントと新しいフィラメントが混ざります。この混ざりを防止するため、Prusaは Smart Wipe Towerというモノを印刷物の脇で印刷し、ここで混ざったフィラメントを描き捨てます。
この際に余計なフィラメントを消費することになるため、Prusamentなどのお高いフィラメントを使用しているときには切ない気持ちになること請け合いです。また、印刷エリアの一部をSmart Wipe Towerが占有するため、フルサイズの印刷ができないことも欠点です。
課題4. 印刷中にノズルを切り替えられない
MMU2Sの方式はフィラメント間でノズルを共用するので、ある色だけは太いノズルで、それ以外は細いノズルで、といった描き分けはできません。例えばWallだけ細いノズルで綺麗に描いて、Infillは太いノズルで素早く描くという使い方はできません。
課題5. フルカラー印刷ではない
5色のフィラメントをサポートすると言われて、RYBと白黒でフルカラーをサポートすると勘違いする方がいるかもしれませんが、あくまで最大5色のフィラメントを同時に扱えるだけです。フィラメントの混色はサポートしません。
課題6. 場所を取る
Prusaの後方にフィラメントバッファやスプールを設置するためのエリアが必要です。スペースに余裕がない方は注意が必要でしょう。
以上6点ほど課題を挙げました。次に、MMU2Sの利点を書き出します。
利点1. 3色以上のマルチカラーを扱える
デュアルヘッドで2種類のマテリアルを扱えるプリンターというのはちらほらありますが、3色以上扱えるコンシューマ製品はなかなか無いですね。
利点2. Prusaのオプションなので入手しやすい
後付けできるマルチマテリアルユニットはMMU2Sのほかにも以下のようなものもあります。
https://www.kickstarter.com/projects/3dbizz/3dfeedy-multi-filament-feeder-3d-printer-add-on
一方、MMU2Sは最初からPrusaのオプションであり、入手がしやすい点は強味でしょう。(ただし安定性があるとは言っていない)。
利点3. (マルチマテリアルを扱える製品としては)比較的安価
この記事を書いている2022年9月時点では未発売ですが、新型のPrusa XLはヘッド部分を丸ごと交換するツールチェンジャー方式で、こちらも最大で5色をサポートするようです。
ただし、5色対応のオプション込みだと、最低50万円となり、なかなかポンと購入できる人も限られてくるでしょう(まあノーマルのPrusaもそれなりに高いですけどね!)。
マルチマテリアル機はどうしても機構が複雑になり価格も高くなりますが、MMU2Sは極力構成部品を少なくすることで価格を抑えている…気がします。
買いますか?買いませんか?
以上、MMU2Sの課題と利点を列挙しました。
さて、あなたに必要なのはMMU2Sですか?
本当に5色も必要ですか?塗装やパーツ組み立てで代替したり、複数ノズルを搭載できるデュアルヘッド型のプリンタやマルチツール型のPrusaXLを採用したほうがイメージと合っているかもしれませんよ。
それでもMMU2Sを使いたい方、とにかくPrusaをアップグレードしないと気が済まないPrusa教信者の方(多分わたしもコレ)、MMU2Sに手を出してしまい後には引けない方に向けて、以降の記事ではわたしが組み立て・調整をした際のノウハウを記載します。
MMU2Sの組み立て時の注意
まずは組み立てについてです。基本的には、マニュアルの通りに組み上げればよいですが、いくつかよろしくない点があります。
注意点1. エクストルーダの分解は最後まで待て
マニュアルでは、真っ先にエクストルーダをバラしにかかるよう指示されますが、ちょっと待ってください。
印刷し忘れのパーツがあとから出てきた場合に、予備のプリンタがない場合はPrusaを元の状態に復旧して印刷する必要があります。
例えば、MMU2SをPrusaに取り付けるframe-holderは2個必要だということにあとから気づいたり、エクストルーダを改造するパーツの印刷を忘れていたり、クローンの微妙に気の利かないパーツを再印刷する場合などですね。
エクストルーダの改造は、MMU2S本体が組みあがってからで十分です。
注意点2. 部品のゆるみに注意
MMU2Sはアイドラーやセレクターの可動範囲をチェックするためにモータードライバの衝突検知機能を使うので、起動時にかなり振動します。この振動のせいで、長時間稼働していると部品のゆるみや脱落が発生します。組み立て直後は問題なかったのに、ある時点からフィラメントが急に送られなくなった場合などは、部品のゆるみも疑いましょう。特に以下に注意が必要です。
プーリーボディのBondtechギアのイモネジ
ここが緩むと、モーターが回っても肝心のギアが回らないため、フィラメントが送られません。イモネジにはねじ固定用の接着剤を塗布してゆるみを防止しましょう(必ずねじ固定用、それも完全固定ではなくあとから調整できるタイプを使いましょう。3Mのものがおすすめです)
https://www.3mcompany.jp/3M/ja_JP/p/d/b40067639/
アイドラーとプーリーボディをつなぐシャフト
ここはシャフトのすぐ近くにねじを固定して、シャフトの脱落防止を試みる設計のようです…が、ねじによってはねじ頭が小さく、シャフト脱落防止の機能を果たしません。ワッシャも使って確実にシャフト脱落を防止できるようにしましょう(ここは完全にMMU2Sの設計ミスな気がする)。
セレクターのシャフト軸受け
この軸受はPrusa本体のリニアブッシュとは違い、単なる金属製のパイプなのですが、セレクター側の穴がガバガバなので、使用しているうちに軸受けだけが外に抜け落ちます。シャフトには塗布しないように注意しながら、軸受けとセレクターをセメダインなどで接着しましょう。
注意点3. ほか、クローン特有のよろしくない点
あくまで私が購入したクローンだけの話かもしれません。ロットによって違う可能性もあります。
ブレードとホルダーの形状が一致しない
MMU2Sにはフィラメントのカスを切断するブレードが組み込まれていますが、クローンに付属するブレードは微妙に幅広で、綺麗にMMU2Sには組み込めません。細いカッターの刃を用意するか、ホルダー側を若干削ってあげる必要があります。わたしはリューターでパーツを削りました。
セレクターとチューブコネクタをつなぐ金属パーツが同梱されていない
販売ページをよく読むと、「真ちゅう製のナット」という謎のパーツが同梱されていない旨が1行でさらっと書かれています。このパーツは、セレクターにチューブコネクタをねじ込むためのねじ穴の役目を果たしますので、これがないとチューブコネクタを接続できず、困ったことになります(
どうやらこの金属パーツはインサートナットらしいです)。
仕方がないので、ねじ穴付きのセレクターパーツをCADで自作して印刷しました。あえて金属パーツにする必要はあったでしょうか…。
んで、自作したあとで気づいたのですが、すでに似たような部品を公開されてる方がいますね。これから組む方は素直にこっちを使いましょう。
MMU2S本体のファームウェア更新
MMU2S自体の制御ボードはなぜかPC側で検出できず、ファームウェアの更新ができませんでした。安価なボードで再書き込み不可なのでしょうか…?とりあえず動いたので気にしないことにしました。
注意点4. Bondtechエクストルーダのクローンの注意点
MMU2Sの説明の本筋とは外れますが、Bondtechエクストルーダおよびそのクローンを使った場合の説明も書きます。
エクストルーダのMMU2S対応
Bondtechのエクストルーダは、そのままではMMU2Sに対応しないため、拡張パーツのMODを用意する必要があります。Bondtechのページにオススメへのリンクがありますので、それを使うとよいです。
IRセンサの基板の個体差かもしれませんが、拡張パーツ内に基板を納めるのがサイズの都合上かなり大変でした。また、LEDも入手しやすい直径のものではなさそうでした。はんだごてなどでパーツを加工する等の工夫が必要です。
エクストルーダ換装伴うファームウェア更新
エクストルーダ換装に合わせてPrusa側のファームウェア更新も必要です。MZ76 V2の設計者のコメントによると、コミュニティエディションという謎のMOD版のファームを入れるよう指示されますが、挙動がよくわからないのでBondtechが提供するMOD版のファームをいれました。これでも不具合なく動くのでヨシ!とします。
MMU2S地獄の調整編
以上、ひとまず組み立てが終わった方はお疲れさまでした。ここまでで3~4割の工程が完了です。そしてここからがマニュアルにはないMMUの調整編です。ようこそ地獄へ。
調整の流れ
MMU2Sは組み上げた直後は上手く動作しません。より正確には、「とりあえず動くけどフィラメント交換の際にエラーを吐いて印刷が中断し、とてもじゃないがまともに印刷完了できない」という状態になります。まずは以下の順に調整するとよいでしょう。
ハード的な調整(各種調整ねじ)
ソフト的な調整(使用するフィラメントに合わせたスライサーのパラメタ調整)
この記事では、1に関するハード的な調整の勘所をわたしの事例をもとに紹介します。
先に書いたように、MMU2Sがクローンだったり、エクストルーダがオリジナルの物ではなかったりするので、そのまま他の環境に当てはめることができるかは分かりませんが、考え方のヒントにはなるかと思います。
2.のソフト的な調整については、各フィラメントに合わせた普遍的な調整方法なんぞはとても書けないのと、デフォルトのままでもだいたいうまくいってしまったのでこの記事ではほぼ記載がありません。せいぜいがパージ体積の調整くらいです。
他にはラミングとかいう引き抜き速度の調整が有効という情報もちらほらありますがよくわからないですね。そのうちスライサー側のデフォルトパラメータをだれか最適化してくれないですかね…
調整に適したモデル
ハード調整においては、とにかく何度もフィラメント交換を試しまくるほうがテスト回数が増やせて結果的に時間が節約できます。
見た目がかわいいので調整用のモデルにトカゲだったりヒツジだったりを選びがちではあるのですが…
これらのモデルよりは、1層で多数の色が登場し、かつ印刷面積も広くないモデルのほうがフィラメント交換回数が多くなるのでよりテストに向いているでしょう。この段階ではフィラメントの色が混ざってても特に問題ないので、パージ体積もとりあえず小さめに設定したほうが時間とフィラメントが節約できます。
具体的には、簡単な円柱モデルを作って5本読み込み、スライサー上で着色するのがよさそうです。もうちょっとこだわるなら、以下のように印刷長が変わることによる影響も見るためにすり鉢状のオブジェクトを作るとかですかね。
わたしは調整時にそこまで頭が回らなかったので、テレポートに失敗した哀れなヒツジちゃんたちを量産しましたとも。ええ。
MMU2Sの謎のボタン
MMU2Sに3つある謎のボタンは調整中にエラーで印刷が止まった場合に使用します。
が、この3つのボタンがなにかという説明がほぼありません。
一応、下記のようにエラー時の対処法として多少は触れられています。
まあ迷ったら3つ順番にとりあえず短くクリックもしくは長押ししてみればいいです。本体側をいじらなければ印刷が中断されることはないようなので、赤いLEDの素早い点滅が解除されればなんだかわからんがうまくいったのでとりあえずヨシ!です。正常印刷中には特に役目もありません。
調整ねじ四天王
MMU2Sを安定稼働させるためには以下の4か所のねじを調整する必要があります。こやつらが倒すべき調整ねじ四天王です。
MMU本体側
本体テンション
FINDA
エクストルーダ側
・アイドラー
・IRセンサ
ねじ4種類をちょうどいい位置に調整すればいいだけなので簡単…かと思いきや、かなり絶妙な調整を要求されます。具体的には、ねじ1回転単位で良い具合のところを探す必要があります。
ネジの調整と言われて素直に思い浮かべるのは、以下のように調整代がOKな領域とNGな領域がスパッと分かれる状況でしょう。
実際の調整はそこまできれいではなく、OKとNGの中間領域が存在します。
厄介なのが、この中間領域でも大抵は上手く動作するのです。ただ、何十回、何百回に1回の特殊な条件下で失敗するので、何回もフィラメントを交換するマルチマテリアル印刷においては調整の甘さが顕在化します。
ハード調整においては、ひたすらにフィラメント交換テストを繰り返して、きちんと動作する領域に持って行ってあげる必要があります。
このためには、問題をきちんと把握することが重要になります。適宜、PTFEチューブを引っこ抜いて問題のある個所や現象を確認する必要があるでしょう。
原因はどこか?フィラメントが詰まっているのか?グリップされないのか?そういうところをエラーが発生するたびにチェックしていきます。
一度にいろいろな状況を考慮するのは大変なので、まずは、PETGやABSなどの扱いやすいフィラメントで調整し、柔らかいフィラメントを使いたいのであればそのあとでさらに調整を追い込むとよいです。
以下、それぞれの調整ねじの調整のポイントを示します。
四天王その1. 本体テンション
アイドラーボディとプーリーボディの間にテンションをかけて、フィラメンをBondtechギアに押し付けるためのネジです。正式名称が分からん…。
組み立てマニュアルではねじ頭がパーツ表面からわずかに隠れる程度にねじ込むこと(ユーザーコメントによると0.5mm程度)とされていますが、クローンに同梱されているばねはモノが違うのかそのままではうまくいきません。
テンションのかけ具合とその挙動は以下のようになります。
左右に調整ねじがあるので、均等に力をかけましょう。
ここは極力テンションが緩い状態からねじを締めてだんだんきつくしていき、必要最低限のテンションがかかっている状態に持っていくのがよさそうです。
①フィラメントが挿入できない
テンションがきつすぎてフィラメントがうまく挿入できないことが稀に発生する状態。わたしの環境ではねじ17回転程度がこの状態です。
②固いフィラメントなら上手く送れるが、柔らかいフィラメントはギアに巻き込まれる
フィラメントがやや強めにBondtechギアに押し付けられてしまい、本体のガイド穴に導入されにくい状態です。柔らかいフィラメントも扱いたいのであればもう少し設定を詰める必要があります。わたしの環境ではねじ13回転。
③上手くフィラメントを送れる
柔らかいフィラメントで適切にフィラメントを送れる状態。わたしの環境ではねじ11回転。
④大抵はうまくいくが、フィラメントが空回りすることがある
若干テンションが緩すぎ。わたしの環境ではねじ10回転。理想的な環境との差がわずかにねじ1回転…。フィラメント交換テストを繰り返して、この状態でないことを確かめる必要があります。もしかすると、柔らかくて長いばねに換装したほうが細かい調整が効くかもしれないですね。
⑤テンションが緩すぎて空回りする
これはやってみれば一発で弾けるので分かるでしょう。
四天王その2. FINDA
FINDAは、MMU2Sユニット本体にフィラメントが挿入されていることを検知するセンサです。センサ自体の仕組みはPINDAと同じものだそうで、
フィラメントにより鉄球が押し上げられる
押し上げた鉄球でFINDAセンサが反応する
という2段階のプロセスを経てフィラメントを検知します。
この2段階のプロセスがあるということをきちんと理解することがFINDAでは重要です。というのも、
フィラメントが抜けているにもかかわらず鉄球が下がらずFINDAが反応するケース
鉄球が押し上げられていないにもかかわらず、FINDAが反応するケース
という、フィラメントが挿入されていると誤検知される点では一見似ているけれども、全く原因が異なるケースがともに発生しうるためです。
前者のケースについては、フィラメントをアンロードした時にできたフィラメントのカスが、セレクター内に残留して鉄球が下がらないことが原因です。これの解決にはフィラメントのカスが発生しないようにフィラメントの引き抜き量(ラミング)を調整したりフィラメント温度などを調整したりする必要があるため結構大変です。
この現象の起こりやすさはフィラメントによっても異なり、そこまでの頻度ではないこと、フィラメントのカスを取り除けば印刷再開できることから、まずは気にしないことにします。
効果のほどは分かりませんが、磁石で鉄球を押し下げることでこの現象を防止するMODもあるようです。
次に後者のFINDAが誤反応するケースですが、こちらはFINDAの位置調整で解決できます。FINDAの位置と挙動は以下の通りです。
①フィラメントを挿入してもFINDAが反応しない
FINDAの位置が遠すぎて反応しない。これは簡単に弾けるでしょう。
②フィラメントがあるときだけFINDAが反応する
理想的にはこの状態に持っていきたいです。わたしの環境では、セレクター横にあるセンサ窓からセンサーがギリギリ見えない程度の位置でした。
③大抵はうまくいくが、フィラメントがなくてもFINDAが反応する場合がある
この状態が厄介です。鉄球が下がっているのに、FINDAが「フィラメントあり」と判断するケースが稀に発生します。これもフィラメント交換をテストしまくってチェックするしかないです。FINDAが鉄球にギリギリ反応してしまう位置にあるのが原因なので、ねじ山一つ分くらいFINDAを遠ざけます。
調整ねじを回して位置が微調整できるMODとかないんですかね?
④フィラメントを挿入しなくてもFINDAが反応する
FINDAの位置が近すぎます。これも簡単に弾けますね。
四天王その3. エクストルーダのアイドラー
調整ねじ四天王の中では最弱で、比較的調整は簡単です。フィラメントをエクストルーダ内部のBondtechギアに押し付けるためのもので、基本的には可能な限り弱いテンションで十分です。
IRセンサの位置調整にも影響するので、エクストルーダではまずアイドラー側から調整してしまいましょう。
テンションのかけ方と挙動は以下の通りです。
①固すぎてフィラメントが挿入できない
ねじを締め付けすぎです。
②柔らかいフィラメントは挿入できない
固いフィラメントなら十分ですが、もう少し設定を詰めたいところ。柔らかいフィラメントを挿入しようとしても、Bondtechギアが固くエクストルーダに引き込まれない状態です。
③フィラメントを挿入できる
ほどよい位置です。調整ねじをほぼ回しません。アイドラーのばねがかろうじて押さえつけられるところから、ねじ1回転程度。テンションはかけなくてよいです。
④フィラメントを挿入しても位置が変わらない
ねじを回さなさすぎの状態ですね。この状態になったことはないですが、使用するエクストルーダによってはあり得るのかも?
四天王その4. IRセンサ
調整ねじ四天王最強格。こいつの挙動に何度も泣かされた人も多いと思います。まずはアイドラーの調整をきっちり終えてから臨むことをお勧めします。
基本的にはエクストルーダ本体に近い位置にIRセンサを移動してから調整を開始し、フィラメントが十分に挿入されたときに初めて反応する位置に向けて遠ざけていきます。
かといって、IRセンサを遠すぎる位置にするのもまた問題で、フィラメントが深く挿入され過ぎるなどの現象が発生します。
もっとも、エクストルーダの挙動で一番ユーザを苦しめるのは、フィラメントのロード時に「一瞬エクストルーダにフィラメントが引き込まれたように見えるのにそのあと勝手にフィラメントがアンロードされる」という現象(以下、「勝手にアンロード現象」と呼称)でしょう。
MMU2Sユニットから少しずつフィラメントが伸びて、確かにIRセンサに反応する挙動を示してからこの現象が起こります。「貴様確かにフィラメント検知したよな!?」とプリンタに激怒するユーザや、この現象に心が折れてMMU2Sを諦めるユーザもいるのではないでしょうか…。
フィラメントをエクストルーダに十分に引き込んでやればこの「勝手にアンロード現象」が解決できそうということは感覚的には分かっていましたが、この記事を書くにあたり、せっかくなのでこの挙動を起こす箇所のソースコードを追ってみました。
結論から言えば、この挙動はmmu.cppに定義されたcan_load関数によるもののようです。
フィラメントのロードでは、まず、同じくmmu.cppにあるmmu_continue_loading関数が呼ばれます。この関数はフィラメントロード全体の流れを記述したもので、ロードに成功するまで最大3回のリトライを試みます。
このmmu_continue_loading関数内では、load_more関数というものが呼ばれて、MMU2Sからエクストルーダへとフィラメントをユルユル伸ばす動きを実現します。このユルユル伸ばすのを終了するにはIRセンサが反応する必要があるため、「勝手にアンロード現象」においても確かにIRセンサは反応しているのです。問題のcan_load関数はこの後に呼び出されます。
can_load関数では、フィラメントの先っちょがヒートブレーク内に上手いことフィットしているかを検証するために、まずフィラメントを突きこんでからゆっくりと引き抜き、その間にIRセンサがキチンと反応し続けることをチェックします。このチェックがやたらと厳しいため、多くのユーザが苦しむことになっています。
can_load関数をもう少し細かく追ってみましょう。
以下がcan_load関数の全体像です。
static bool can_load()
{
current_position[E_AXIS] += 60;
plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE);
current_position[E_AXIS] -= 52;
plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE);
st_synchronize();
uint_least8_t filament_detected_count = 0;
const float e_increment = 0.2;
const uint_least8_t steps = 6.0 / e_increment;
DEBUG_PUTS_P(PSTR("MMU can_load:"));
for(uint_least8_t i = 0; i < steps; ++i)
{
current_position[E_AXIS] -= e_increment;
plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE);
st_synchronize();
if(0 == READ(IR_SENSOR_PIN))
{
++filament_detected_count;
DEBUG_PUTCHAR('O');
}
else
{
DEBUG_PUTCHAR('o');
}
}
if (filament_detected_count > steps - 4)
{
DEBUG_PUTS_P(PSTR(" succeeded."));
return true;
}
else
{
DEBUG_PUTS_P(PSTR(" failed."));
return false;
}
}
これを上から追っていきましょう。
まずはIRセンサチェックの前段階で、フィラメントを一度ガッと突きこんでスッと抜き、動作完了するまで待つ挙動ですね。もしもヒートブレーク内ガッツリ詰まっている場合、フィラメントは送れませんが引き戻しはできるので、フィラメントがエクストルーダから完全に引き抜かれることになります。
余談ですが、今回ソースを読んで初めて知ったのですが、結構いろんな箇所にマジックナンバーが散りばめられているんですね。それでええんか…
current_position[E_AXIS] += 60;
plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE);
current_position[E_AXIS] -= 52;
plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE);
st_synchronize();
current_position[E_AXIS] が結果として8増えた(=60-52)ことだけ分かればOKです(距離8の分だけ、フィラメントがエクストルーダ内に引き込ます)。
次はforループの前まで。
uint_least8_t filament_detected_count = 0;
const float e_increment = 0.2;
const uint_least8_t steps = 6.0 / e_increment;
DEBUG_PUTS_P(PSTR("MMU can_load:"));
filament_detected_countという変数は、forループ内でフィラメント検出に成功した回数を記録するものです。このほかに、続くforループのために、フィラメントを距離6を、e_increment刻みで引き抜くために必要な回数(steps)を計算しています。
forループ内。
for(uint_least8_t i = 0; i < steps; ++i)
{
current_position[E_AXIS] -= e_increment;
plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE);
st_synchronize();
if(0 == READ(IR_SENSOR_PIN))
{
++filament_detected_count;
DEBUG_PUTCHAR('O');
}
else
{
DEBUG_PUTCHAR('o');
}
}
current_position[E_AXIS]がforループの度にe_increment刻みで引っこ抜かれていますね。また、READ(IR_SENSOR_PIN)というやつが、IRセンサの値を読みだしており、フィラメントに反応すると0を返します。つまりフィラメントを検知するとfilament_detected_countを1増やします。ヒートブレーク内が半端に詰まっている場合、先の処理でフィラメントが十分に挿入されないために、この処理を繰り返すことでフィラメントがエクストルーダから完全に引き抜かれる…ということを狙った処理かと思われます。
最後が問題の判定部です。
if (filament_detected_count > steps - 4)
{
DEBUG_PUTS_P(PSTR(" succeeded."));
return true;
}
else
{
DEBUG_PUTS_P(PSTR(" failed."));
return false;
}
can_load関数では、検知成功回数(filament_detected_count)が総試行回数(steps)-4回を上回る必要があります。具体的には30(=6/0.2)回のチェックのうち26(=30-4)回よりも多くフィラメント検知に成功することが必要です。
もともとcan_load関数は、ヒートブレーク内でのジャム(詰まり)を検知することが目的だったようですが、can_load関数が実行される前の段階でフィラメントの引き込みが十分でない場合、ちょっとずつフィラメントを引き戻しながらIRセンサチェックを繰り返す過程でフィラメントが完全に引き抜かれてしまい、検知成功回数が足りなくなります。結果として、can_load関数が失敗し、フィラメントのアンロードが行われてしまうのです…!
長々と書きましたが、can_load関数が成功するためには、あらかじめ十分にフィラメントが引き込まれている必要があります。このためにはIRセンサの位置もちょっとフィラメントが引き込まれかけた程度で反応するようではだめで、ある程度しっかりと引き込まれた段階で始めて反応する程度に深めに調整する必要があります。
とはいえ、フィラメントを引き込みすぎるのも問題があり、ヒートブレーク内にフィラメントが入りすぎることでヒートクリープ状態になり今度は逆にアンロードの際にフィラメントが抜けない場合があります。いい塩梅を探す必要があるということですね。
前置きが長くなりましたが、IRセンサの位置と挙動の関係は以下のようになります。IRセンサ調整の冒頭でも書きましたが、IRセンサはエクストルーダ本体に近い位置から開始し、だんだんと遠ざける形がよいでしょう。上記の「勝手にアンロード現象」が起こればしめたもので、これはIRセンサをもう少し外側に調整すればベストな位置になることを示唆しています。
①反応しない
IRセンサが内側にありすぎるケース。これは容易に弾けます。
②フィラメントを挿入する過程で、反応しない→反応する→反応しないという挙動を示す
これもIRセンサが内側にありすぎるケース。IRセンサはアイドラーのアームが開ききったあたりに配置する必要がありますが、この状態だとアームがIRセンサ通り過ぎてしまっています。IRセンサのテストでは、この②あたりからスタートし、フィラメントをエクストルーダに挿入し始めた状態でぎりぎりIRセンサが反応するあたりまでねじを回していき、そこから更にどのくらいセンサを外側に持っていくかを調整するとよいでしょう。
③「勝手にアンロード現象」が発生
ぎりぎりセンサが反応する位置ですが、フィラメントの引き込みが十分ではなく、上記のcan_load関数のチェックを突破できません。もう少し外側にセンサを調整しましょう。これもねじ半回転~1回転単位で調整です。
④フィラメントを挿入すると適切に反応
ほどよい位置です。わたしの環境では③の状態とねじ半回転~1回転ほどしか違わないのでフィラメント交換テストを繰り返し根気強くて見つける必要があります。
⑤固いフィラメントなら反応するが、柔らかいフィラメントでは反応しない
固いフィラメントだけを扱うなら及第点の位置ですが、柔らかいフィラメントではアイドラーのアームが十分には外に開かないため、この状態ではフィラメントの検知に失敗します。まずは固いフィラメントを使ったテストで④か⑤の状態に持って行って、そのあとで柔らかいフィラメントでさらに④に向けて設定を詰めましょう。
⑥フィラメントを挿入するとIRセンサが反応するが、フィラメントが深く入りすぎる
この条件ではcan_load関数のチェックは突破できるのですが、フィラメントが引き込まれ過ぎるためにヒートクリープを起こしてアンロードできない場合があります。ヒートクリープを起こすと分解清掃が必要になる場合があるため、基本的にこの状態は避けたいです。そういう意味でも、IRセンサは⑦→④へと近づけていくのではなく、②→④へと遠ざけるように調整するとよいです。
⑦フィラメントを挿入しても反応しない
IRセンサの位置が遠すぎます。センサを内側に持って行って再調整しましょう。
以上でハードウェアの調整に関する勘所の説明を終わります。調整はかなり時間と根気が必要です。これで完璧か?と思った頃に調整不足か発覚して心が折れることも多々ありますが、そこは冷静に現象を観察し、より適切な設定に持っていけるチャンスなのだとポジティブにとらえましょう。そうじゃないとやってらんないよムキイイイイイイイイ
スライサーのパラメタ調整
残るはソフトウェア的な調整ですが、これに関してはあまり語れることがありません。結構フィラメントが内部に残り続けて混色するので、デフォルトのパージ体積よりも増やしたほうが綺麗な色で印刷できそうだというくらいでしょうか。デフォルトでは70[mm^3]ですが、その2~3倍はあると安心です。
ラミングについては必要そうなら手を出してみるか、くらいですかね。
これらについてはハードウェアの調整が終わってからでも十分かと思います。
マルチマテリアル印刷の応用とまとめ
わたしの場合、とある目的でASAとTPUを一体印刷したいなあ…というのが導入の動機でしたが、結果的には使わずじまいでMMUの威力を発揮する場面がまだありません。なんてこったい。
このほか、今すぐに試すわけではないですが、導電性のフィラメントを使って電気回路ないしは電子部品を作るのがかなり面白そうな気がしています。例えば柔らかいフィラメントと合わせて触覚センサとかを作るとかですね。もしくは水溶性サポート材を組み合わせてマイクロ流路を作るようなものも何か面白いことができそうですかね…。
なんにせよ、できることの幅が広がったのはいいことですよね。多分。
この記事を読んで「いっちょMMU2Sに挑戦してみるか!」という人が出てきてくれると嬉しいです。ここまで長文に付き合って頂きありがとうございました。