DIYハードウェア

3DプリンタのEnder3をダイレクト化・オートレベリング化

この記事は約10分で読めます。

2年前に購入した3Dプリンタ、Ender3。

Crealityの3Dプリンタ Ender3 を買った。これは遊べる
あまりに多忙で、つい疎遠になっていまいました。 そのような中でも一つだけこのブログのネタにふさわしいことがありましたので、久しぶりに投稿します。 さて、既に3Dプリンタは1台持ってるんですけど、 このたび、どうしても別素材のフィラメントを使う用途が生じまし...

購入当初からやってみたかったカスタム

ダイレクト化

を、この度ようやく2年越しで実現することが出来ました。

3Dプリンタのダイレクト化とは?

フィラメントを加熱したホットエンドを通し溶融させて押し出し積上げる「熱溶解積層(FDM)方式」な3Dプリンタには、

  • フィラメントを押し出す押出機「エキストルーダ」と
  • フィラメントを熱して溶かす「ホットエンド」の

位置関係次第で、次の2つのタイプに分類されます。

ボーデン式

ボーデン式とは、エキストルーダの位置がホットエンドから離れているタイプです。
エキストルーダとホットエンドはPTFEチューブで繋がっていて、このチューブでフィラメントが送り出されます。

写真右がエキストルーダで、チューブでつながれている中央がホットエンドです。
Ender3は写真の通りボーデン式です。
右のエキストルーダからフィラメントがモーターによって押し出され、チューブを通ったフィラメントが中央のホットエンドで温められ、溶融したフィラメントがベッドに積み上げられていきます。

ボーデン式の原理イメージとして、自転車のブレーキをご想像下さい。

自転車のブレーキは、チューブの中にワイヤーが通されています。

ブレーキレバーを引っ張ることでワイヤーがチューブ内で相対的に引っ込む形となり、離れた位置にあるブレーキキャリパーが連動して引っ張られます。

ボーデン式のエキストルーダも同様にフィラメントがチューブに押し込まれることで、チューブ内で相対的にフィラメントが押し出され、ホットエンドからフィラメントが押し出される、という仕組みです。

ダイレクト式

一方ダイレクト式とは、エキストルーダとホットエンドが一体直結しているタイプです。

Reprap Prusa i3クローンのAnet A8やArunar m508などはこのダイレクト式です。

なぜ2つの方式があるの?
それぞれメリット・デメリットがあるからです。

簡単に述べますと、

ボーデン式のメリット

モーターという重量物をプリンターヘッドから除くことによりヘッド回りを軽量化出来るので、造形精度が良いです。

ダイレクト式のメリット

柔らかいフィラメントを使う時に、PTFEチューブ内でフィラメントが縮んだり曲がったりする余地が減るので、フィラメントの送出精度が良いです。

今回ダイレクト式にカスタムした理由

前述のEnder3記事の投稿時期でお察しのかたもいらっしゃるかと存じますが、2年前にEnder3を買った直接のきっかけは実は「コロナによるマスクの供給逼迫」でした。

TPUという柔らかい素材でマスク代わりになるようなものを自在に自作することが出来るなら、どのような時代になっても乗り切れるのではないかという企てです。
また当時はまだエッセンシャルサービスなどという業種の切り分けが不明瞭な時期だった中で「ものづくりをリモートする」可能性を想像できるようになりたいという狙いもありました。

実際にEnder3購入後すぐTPUフィラメントも購入し、いろいろなマスクを何度も印刷してみました。
しかしTPUでのマスク印刷は大物ですので、時間がかかりフィラメントを浪費する割にノズルつまりがしばしばみられ、多くの印刷失敗が生じてしまいました。

この無駄を解消しようと、ダイレクト式のメリット「柔らかい素材でも安定したフィラメント送出」を狙ったのが、今回のダイレクト式カスタムの動機です。
2年間ずっと温めてきた企てをようやく実行する環境が整いました。

ダイレクト式にカスタムするための準備

無印Ender3の場合、

マザーボードの交換はしといた方がいい

と思います。
詳細は後述しますが、ファームウェアをとことんカスタムすることになるからです。

私は購入直後にすぐ32bitボードに入れ替えていました。

またファームをカスタムするにあたり、

リモートで3DプリンタをPCに接続してGcodeを操るソフトウェアも必要

です。
具体的には、

  • Raspberry Piで同様の3Dプリントサーバを作る
  • Slic3rのようなソフトウェアをインストールしたPCを用意

のいずれかを行って3Dプリンタをつなぐことになると存じます。

私は今回、先日作った3Dプリントサーバ

OctoPrintをubuntu Server 20.04なminiPCにインストールし、3DプリンタのEnder3をネットワーク対応に
5年ほど前の当時、Arduino unoよりも安く入手した ZOTAC HD-ID11というAtom搭載のベアボーンminiPC。 一度記事にしましたが 最近は使っておらず、30GBのSSDはそのままでメモリは今は4GBになってます。 そのうちNASにでも...

を使いました。

ダイレクト化の具体的手順

2年前に行ってた32bitボード化の際に、ファームウェア「Marlin」をビルドして書き換えしています。

しかしその時の手順を書き残していませんでしたので、ついでに今回は32bitボード化で必要な手順も書き加えておきました。
ファームウェアの書き換えには、2年前にも既に32bit化で参考にさせていただきましたこちらのサイト

【Ender-3改造】Ender-3に32bitのメインボードを導入した(Marlin 2.0.x)
145,708 total views,  5 views today 32bitの3Dプリンター用メインボードを購入して、Ender-3にファームウェアとしてMarlin 2. …

が非常に参考になります。

なお私が使用中のボードはBIGTREETECHのSKR E3 DIP V1.1です。

32ビット化で既に行っていたモーター周りの設定

モータードライバは32bit化の際にTMC2208にしましたので、既に次のように変更しています。

モータードライバ変更
Configuration.h

アンコメント
#define X_DRIVER_TYPE  TMC2208
#define Y_DRIVER_TYPE  TMC2208
#define Z_DRIVER_TYPE  TMC2208
#define E0_DRIVER_TYPE TMC2208

SpreadCycleモード
Configuration.h

コメントアウト
//#define STEALTHCHOP_XY
//#define STEALTHCHOP_Z
//#define STEALTHCHOP_E

コメントアウト
//#define HYBRID_THRESHOLD

Titanエキストルーダ

ダイレクト式にするにあたって、エキストルーダをTitanクローンに、ホットエンドをE3DV6クローンに変更しました。

また、Titanはギアが組み込まれており、モーター自体が出力するトルクは小さくてもすみます。
ついては少しでもダイレクト化のデメリット「プリンタヘッド回りの重量化」を抑えて造形精度を落とさないように、

この軽量パンケーキモーターも購入しました。

これらモーター・エキストルーダ・ホットエンドを

Ender 3 davevo direct by davevo
Direct with Titan extruder and E3D hotend on ENDER 3. I used pancake motor but can you use normal NEMA17. I use retraction 1.2mm

Thingiverseでみつけたこちらを印刷して組んだ写真がこちらです。

ホットエンド位置が純正状態からずれてしまいましたので、3Dプリンタ本体のLCD画面の「Set Home Offset」で、
X = -3mm
Y = -12mm
にて補正しました。

モーターのEのステップ変更

【3Dプリンタ】Ender3 V2をダイレクトエクストルーダー化させる手順!(Titan)
【3Dプリンタ】Ender3 V2をダイレクトエクストルーダー化させる手順!(Titan)

こちらのサイトが参考になります。

自分の場合は381にすることでちょうど100mmとなりました。

Configuration.h

#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 95 }

#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 381 }

ホットエンドE3DV6の設定

TPUフィラメントが中折れしないようにホットエンド内にPTFEケーブルを埋め込みます。
ケーブル長は実測で49mmとしました。

PIDを設定

前述のファームウェア書き換えの参考サイトを頼りにGcodeで計測した結果、

Configuration.h

Recv: #define DEFAULT_Kp 34.44
Recv: #define DEFAULT_Ki 3.23
Recv: #define DEFAULT_Kd 91.81

と設定しました。
#define TEMP_SENSOR_0 1
の末尾の1を5にしました。

ついでにオートレベリングセンサー「3DTouch」も導入

写真左の赤く光る注射器のようなものがオートレベリングセンサーです。

このセンサーを導入すると、zストップをエンドスイッチに頼らなくても良くなるので、ガラスベッドなど高さの違うベッドを使い分ける際に楽になります。

Configuration.h

アンコメント
#define USE_PROBE_FOR_Z_HOMING
#define BLTOUCH

#define NOZZLE_TO_PROBE_OFFSET { -30, -10, 0 }
に修正

アンコメント
#define AUTO_BED_LEVELING_BILINEAR
#define RESTORE_LEVELING_AFTER_G28
#define Z_SAFE_HOMING

アンコメント
#define ENDSTOPPULLUP_ZMIN_PROBE
#define ENDSTOPPULLDOWN_ZMIN_PROBE
#define MULTIPLE_PROBING 2

Configuration_adv.h

アンコメント
#define BABYSTEP_ZPROBE_OFFSET
アンコメントして変更
#define BABYSTEP_MULTIPLICATOR_Z  10
#defineBABYSTEP_MULTIPLICATOR_XY 10

3DTouchセンサーの先とホットエンドの位置関係から、3DTouchには1mmのスペーサーを足しました。
あわせて3Dプリンタ本体のLCD画面の「Probe Z Offset」を自分の環境で0.750mmに設定しました。

以上でダイレクト化の設定は終了です。
記事も長くなってしまいましたが、前述の3Dプリントサーバを導入したおかげで、作業的には一気呵成となりました。

PLAフィラメントで3DBenchyを印刷した様子です。

フィラメントが切れそうになったので、20mmの高さで一旦Pause Printした様子がうかがえるだけで、印刷結果は概ね良好でした。

裏側の折り返し点が多少目だつ程度で、全体的な仕上がりはボーデン式の時と大差ないように思えます。

TPUフィラメントでも印刷してみました。

COVIDマスクを印刷する予定で買ったTPUですが、ご存じの通りマスク供給はほどなく潤沢になってしまいました。
TPUの出番はこれまでマスク以外では皆無でした。

折角ですので今回はスマホケースでも印刷。

内側に糸引きが見られます。
ただしこの内側にはサポート材を入れましたので、サポート材をとったら糸もなくなりました。
そして何といってもフィラメント詰まりの送出不良が解消されました。

ダイレクト化の結果は、特にデメリットは感じない一方、

  • フィラメントの送出不良が解消された
  • フィラメントの交換が楽になった
  • レベリングセンサー導入で印刷前設定も楽になった

と、今回の改良は非常に満足いくものになりました。

企て実行までの2年もの間、とっくの昔にマスクの供給逼迫は解消されました。
もはやTPUの安定印刷が実現できてもすぐには何もできませんが、何事も経験。
出来るうちに出来ることを増やしていきます。

コメント