
ERCF x Voron 2.4 R2でマルチカラー3Dプリントを実現する
今回ERCFという、OSSでKilpperに対応したマルチカラーユニットを導入してみたので、具体的に必要な作業・ハマりどころなどをメモとして残しておきたいと思います。
ERCFってなんだ?
ERCFはVoronという3DプリンタのOSSに派生する形で作られたマルチカラーユニットのOSSになります。GitHubはこちら。

3Dプリンタにこの機器をアドオンとして利用することで、Klipperに対応した3Dプリンタでマルチカラー3Dプリントを実現することができます。昨今だとマルチカラープリントを行える家庭用3Dプリンタが盛況しているので、これは面白そうですよね。
というわけでやってみた - 手順概要
では、早速購入。。。!
の前に、購入するまでの構成検討が重要だと思っています。なので実際に使えるようになるまでは以下の工程を踏みました。
構成検討・動作イメージ
キット・パーツ購入および3Dプリント
ハードウェアの組み立て
ソフトウェアのインストール
チューニング
構成検討・動作イメージ
OSSの3Dプリンタキット等を導入するときに重要で、何よりも敷居を上げているのが、「そもそもそれがどのように動くかを何となく把握しておく」ことだと思っています。このイメージをしておくことで購入時や組立時に「このパーツはこういう原理で動くから必要・不必要 or このように組み立てるべき」という指針が自分の中に作られて非常に助けになります。
ERCFには具体的な組み立て方を示すビルドガイドが、またGitHubのトップにはコンセプトが示されていますので、まずは読んで、購入して組み立てたらERCFがどのように動いて、マルチカラープリントを実現するのかを何となく理解しておくとよいです。これを読み、マルチカラープリントを実現するため、私はまずERCFを以下の構成物で組み上げることを決めました。
ERCF本体
フィラメントの選択と3Dプリンタへの送り出しを担う装置
フィラメント検出スイッチ
ツールヘッド(Voron 2.4 R2の場合、Stealth Burnerを極めて推奨)までフィラメントが到達しているかを判定するスイッチ
これにより、フィラメントからツールヘッドまでフィラメントの送り出しを高速化したり、フィラメントがボーデンから送り出されなくなった時のエラー検出が行える
今回は押し出し機の入り口とホットエンドの入り口(つまりツールヘッドの出口)に設置する構成にした
フィラメントリワインダー(Filamentalist Rewinder)
フィラメントを送り出したり、引き込んだりしたときに、フィラメントスプールをその通りに回転させる装置
マルチカラーユニットではフィラメントの引き込みをしたとき、スプールが回転しなければ、引き込まれた余剰のフィラメント(フィラメントバッファ)がERCF周辺に散らばってしまう。これは別のフィラメント引き込み時に絡まりの原因になる
フィラメントバッファを絡まらないように管理するERCTというオプションもある
フィラメントカッター(Filametrix)
フィラメント交換時に、引き抜いたフィラメントの先端をきれいしておくためのカッター
もし、カッターでカットしない場合はフィラメントの先端は高熱になっているため、糸を引くような形でフィラメント先端が形成される。これはフィラメントの送り出し・引き込み量を計測する際などに悪影響を与えるため、今回はカッターを導入した
ごみ処理バケット(Blobifier)
フィラメントの切り替え時にカットによってホットエンド内に残ったフィラメントを押し出し切って、印刷再開に移る前に新しいフィラメントが安定して吐出される状態にする必要がある。その際に出るごみを受けるバケット
ノズルクリーナー (nozzle-cleaner)
Bambu Lab社製3Dプリンタ(X1シリーズやP1シリーズ)を模した、ノズルクリーナー
真鍮製やシリコンブラシと違ってPTFEチューブと3Dプリントパーツで気軽に作れるため、選択

キット・パーツ購入および3Dプリント
構成が決まったら実際に部品を購入します。今回はFYSETCという企業が発売しているキット・パーツをAliexpress経由で購入しました。

自分で3Dプリントパーツの印刷することと、リワインダー・ごみ処理バケットのパーツを購入することも考えると、8色で約30,000-35,000円くらい。Bambu Lab社のAMSが47,000円くらいであることを考えるとすごい安いですよね。もちろん自分で組み立てたり、設定する必要があるので単純比較はできないですが、、、

サーボモータについて
あと、事前に海外のビルド動画などを眺めていると、キットのサーボモーターとしては「MG90S」というものがよく使われるとのことでした。このサーボモーターはフィラメントの送り出し・引き戻しの際にフィラメントをつかむのに利用されるのですが、モーターのトルクが弱くてトラブルが起こりやすいらしいので、私は初めから推奨されていた「SAVOX SH-0255MG PLUS」というサーボモーターを購入しました。実際、購入したキットにも「MG90S」が同梱されていたので、追加投資はあったものの無用なトラブルは回避できたのかなーと思ってます。
3Dプリントパーツについて
キット・パーツを購入したら、届く間必要な3Dプリントパーツを印刷することになると思います。ERCFの3DプリントパーツもVoronと同様に基本STLファイルをそのままスライサーに取り込んで印刷すればよいのですが、「[a]_Tophat_xN.stl」のファイルだけ注意が必要です。このパーツはサーボモータでフィラメントをつかむときに、サーボモータアームが直接触れるパーツになります。このファイルはサポートと一体になった3Dモデリングがされているのですが、私が使っているスライサー(Bambu Studio)と相性が悪いのかまともに印刷ができるようにサポート部分がスライスされませんでした。



今になってOrcaSlicerならば、問題なくスライスできることが確認できたのですが、もしBambu Studioをお使いで同様の問題が発生したときは、当該パーツを分割したモデルである「[a]_Half_Tophat_A_xN.stl」と「[a]_Half_Tophat_B_xN.stl」が用意されているので、こちらを使って接着剤でくっつけて利用してみてください。

ハードウェアの組み立て
キット・パーツが到着して、3Dプリントパーツも印刷できたら実際に組み立てるのですが、本体についてはほぼほぼビルドガイド通りで困るところはありませんでした。唯一あるとしたらFYSETCのキットだと、一部のケーブルが短いのでドラッグチェーンが使えず、本体にケーブルタイで直接とめたぐらいでしょうか。

後、これは私の勘違いだったのですが、フィラメントリワインダー(Filamentalist Rewinder)を組み立てた際に、Tensioner_Armを688ベアリング対応のオプションのものを出してしまい、後々608ベアリングを使って組み立てた際に「全然フィラメント入る隙間ないじゃん!」という状況になってしまいました。オプションじゃない「Tensioner_Arm_Left.stl」「Tensioner_Arm_Right.stl」が608ベアリング用のものなんて、初見だとわからんでした。。。

ソフトウェアのインストール
メインボード配線とファームウェアインストール
今回のFYSETCのキットではメインボードとして、「ERB v2.0」というボードが付属していました。さらに、USB TypeA to TypeCのケーブルが一本付属しているので、ジャンパピンを適切に移動した後に3DプリンタのRaspberry PiとERBをつないで、Klipperを直接インストール。。。だと、firmwareの書き込み後rebootに失敗してしまい、できませんでした。
詳細はGitHub見ながら進めていただきたいのですが、Katapult Bootloader経由でKlipperファームウェアをインストールするとうまくいきました。
USBケーブルでERBと3DプリンタのRaspberry Piをつなぐ
Katapult Bootloader をERBにインストールする
GitHubからclone
make menuconfigでここの通り設定
make flash FLASH_DEVICE=2e8a:0003 # 2e8a:0003=rp2040のdevice id
Kilpperファームウェアを以下の通り作成
Klipperリポジトリに入る
make menuconfigでここの通り設定
make
KatapultからKlipperファームウェアをERBにインストールする
Katapultリポジトリに入る
cd scripts
python3 flashtool.py -d /dev/serial/by-id/[Katapultブートローダのシリアルid] -f ~/klipper/out/klipper.uf2
/dev/serial/by-id/[Klipperデバイスのシリアルid] があることを確認
そして、ここまではUSBケーブル1本の作業なのですが、実際に使用するときは24Vの電圧が欲しいので、ジャンパピンを全部外して、以下のようにケーブルを3Dプリンタのマザーボードとつなぐ必要があります。

ここまで来てようやくKlipper側にERCFというデバイスが存在することが認識されます。
Happy Hareの導入
Happy HareはERCFを強力にサポートするフィラメントチェンジャーコントローラです。Klipper拡張機能として実装されているみたいです。詳しいところは私もよくわかっていないのですが、Happy Hareを導入することでKlipperから簡単にERCFを動かすことができました。
インストールは簡単で、リポジトリをcloneしてきて、「./install.sh -i」を実行すると対話型でインストールができます。ここは公式で丁寧に解説してくれているので、こちらをご覧ください。
インストールが終わると、Klipperのconfigディレクトリの中に「mmu」ディレクトリが作成されて、デフォルトのコンフィグ群がおかれます。

mmuディレクトリ内のコンフィグ設定
デフォルトのままだと、まだいくつかのピンアサインがされていない可能性があるので、「base/mmu_hardware.cfg」を開いて、設定します。私の場合だとエクストルーダの入り口とホットエンドの入り口のセンサスイッチを使いたいので、以下のピンアサインを変更しました。
[mmu_sensors]
<中略>
extruder_switch_pin: ^PA3
toolhead_switch_pin: ^PA0
あと、今回はaddonであるごみ処理バケット(Blobifier)も使いたいので、「addons/blobifier_hw.cfg」にもピンアサインを設定します。
[mmu_servo blobifier]
# Pin for the servo.
pin: PA1
# Adjust this value until a 'BLOBIFIER_SERVO POS=out' extends the tray fully without a
# buzzing sound
minimum_pulse_width: 0.00053
# Adjust this value until a 'BLOBIFIER_SERVO POS=in' retracts the tray fully without a
# buzzing sound
maximum_pulse_width: 0.0023
# Leave this value at 180
maximum_servo_angle: 180
[gcode_button bucket]
pin: ^PA2 # The pullup ( ^ ) is important here.
press_gcode:
M117 bucket installed
release_gcode:
M117 bucket removed
_BLOBIFIER_COUNT_RESET
ここまで来たら、あとはKlipperの「printer.cfg」側で「mmu」ディレクトリ配下のコンフィグ群をincludeしてやります。
[include mmu/base/*.cfg]
[include mmu/addons/blobifier*.cfg]
Klipperファームウェアを再起動すると、ERCFが動き始めるはずです。
チューニング
ここまで来たら、あとは実際にマルチカラープリントできるまでチューニングをしていくことになります。自分が特につまずいたのは1点で、デフォルトのギア設定のままだと全然トルクが足りなくて、フィラメントを送り出すギアが空転してしまったので、以下のようにチューニングしています。
[tmc2209 stepper_mmu_gear]
uart_pin: mmu:MMU_GEAR_UART
run_current: 2 # ERCF BOM NEMA14 motor
hold_current: 0.1 # Recommend to be small if not using "touch" or move (TMC stallguard)
interpolate: True
sense_resistor: 0.110 # Usually 0.11, 0.15 for BTT TMC2226
stealthchop_threshold: 999999 # Spreadcycle has more torque and better at speed
[stepper_mmu_gear]
step_pin: mmu:MMU_GEAR_STEP
dir_pin: mmu:MMU_GEAR_DIR
enable_pin: !mmu:MMU_GEAR_ENABLE
rotation_distance: 3.765743 # Bondtech 5mm Drive Gears. Overriden by 'mmu_gear_rotation_distance' in mmu_vars.cfg
gear_ratio: 20:30 # E.g. ERCF 80:20, Tradrack 50:17
microsteps: 16 # Recommend 16. Increase only if you "step compress" issues when syncing
full_steps_per_rotation: 200 # 200 for 1.8 degree, 400 for 0.9 degree
もし、チューニングに際して困ったことがあれば、コメントいただければベストエフォートで回答します!
最後にチューニングを終えて、シンプルなマルチカラープリントをした3D Benchyを載せておきます😁
