【Ender-3改造】3Dプリンターにオートレベリングを追加した(BLTouch互換品)

 187,640 total views,  14 views today

ここでは、Ender-3のメインボード(以下、ボード)を交換することなくEnder-3に オートベッドレベリング(以下、オートレベリング)を導入する方法を紹介する。

【3Dプリンター改造】Ender-3・Ender-3 Pro用32bitボード「SKR mini E3」を導入した。
【Ender-3改造】Ender-3に32bitのメインボードを導入した(Marlin2.0.x)
【Ender-3改造】3Dプリンターのメインボードとモータードライバを取り替えて静音化した(TMC2208)

オートレベリングの動作の実際

まずはじめに、オートレベリングがどのように動作するのかを紹介しておく。

動画の後半でプリントが開始されると、XY平面上の動きに合わせて、Z位置が随時補正されていることが、Z軸モーターのカップリングの動きにより確認できる。

オートレベリングの導入手順

Ender-3にオートレベリングを導入する手順は、ざっくり言うと以下のとおりである。

  1. オートレベリング用のセンサー(BLTOUCH 互換品)をEnder-3に追加する
  2. Ender-3のファームウェアを書き換える
  3. オートレベリングの動作を確認する

オートレベリング用センサーの取り付け

オートレベリング用のセンサーには色々とあるが、ここではBLTouchのコピー品である3DTouchを使う。

BLTouchとコピー品(3D Touch)の精度の違いについてはこちら↓

  • BLTouch互換品
  • 純正BLTouch

ThingiverseからBLTouch用のマウントを探してきて、Ender-3に取り付ける。

センサーの取り付け位置

3DTouchは接触式のセンサーであり、ホールセンサーによってプローブの先端が上下する機構となっている。

したがって、オートレベリング実行時にはプローブの先端がベッドと接触する必要がある。

このとき、プローブの先端がノズルの先端よりもベッド表面から離れた位置にあると、ノズルの先端がベッドに衝突してしまう。

プローブがベッド表面との接触を検知するよりも前に、ノズルの先端がベッド表面に到達してしまうためである。

なので、オートレベリング時は、引き出された状態のプローブの先端が、ノズルの先端よりもベッド表面に近い位置になければならない

ベッドレベリング時の3DTouch先端とノズル先端の位置関係

逆にプリント時には、引き込まれた状態のプローブが、ノズルの先端よりもベッド表面から離れた位置になければならない。

プリント時にプローブの先端がプリント中の造形物に接触してしまうのを防ぐためである。

プリント時の 3DTouch先端とノズル先端の位置関係

オートレベリング(BLTOUCH互換品)をボードに接続

ここでは、ボードの交換が必要な場合と、ボードの交換が必要ない場合の方法について分けて紹介する

要ボード交換のBLTOUCH追加方法

ボードは、MKS GEN L V1.0を使用した。このボードはAmazonAliExpressから入手可能である。

このようなボードを選択した場合にはモータードライバを別途用意する必要があるが、たいていはオプション扱いでモータードライバとのセット品が何種類か用意されている

BLTOUCH互換品の配線は5本(茶、赤、オレンジ、黒、白)あるが、そのうちの3線(茶、赤、オレンジ)については、ボード裏のプリントを確認して、以下のピンと接続する。

  • G:茶
  • V:赤
  • D11:オレンジ

そして、残りの2線(黒、白)については、Zリミットスイッチ(-)用のピンに以下の通り接続する。

  • G:黒
  • S:白

ボード交換不要 のBLTOUCH追加方法

Ender-3に使われているボードでは、ピンの数に余裕がない。

そのため、この方法ではボード交換が必要ない代わりに、↓のようなBLTOUCH接続用の追加パーツが必要となる。

このようなパーツはAmazonAliExpressから入手できる。

アダプターと3DTouchから出ている3本の線(赤、茶、オレンジ)を以下の通りに配線する。

  • 5V:赤
  • GND:茶
  • Signal:オレンジ

3DTouchと接続したアダプターは、LCD用のピンに接続する。

残りの2本の線(白、黒)については、ボードを以下の向きで置いたときに、Zリミットスイッチ用のピンに対して以下の通りに配線する。

  • 右:白
  • 左:黒

ファームウェアを書き換える

Ender-3に使われているボードのメモリの容量に余裕がなく、一部の機能を無効にしないと、ファームウェア書き換えに必要な容量が確保できない。

ボード交換をしない方法でオートレベリングを追加する場合、一部の機能を無効にしなければならない関係上、LCDメニュー操作時のボタンのクリック音が鳴らなくなったり、ブート画面が表示されなくなるといった弊害がある。

そのため、実施する際はすべて自己責任で行っていただきたい

一部の機能を無効にしなかった場合は、下の画像のように容量がオーバーしてしまい、ファームウェアを書き込むこと自体ができない。

無論、ボード交換をしてオートレベリングを追加する方法の場合には一部の機能を無効にする必要はない。

ボード交換をしない方法でファームウェアの書き換えを行う際は、その前段階として、ファームウェアを書き込めるようにするための作業が必要となるが、それついては別の記事で紹介しているので、そちらを参照していただきたい。

ここでは、上に紹介した記事でEnder-3用のMarline1.1.9の書き込みが終わっているという前提で話を進める。

Configuration.hの設定

Configuration.h」という名前のタブを開く。

ブートスクリーンの設定

ブートスクリーンの表示を無効にする設定。容量確保のために行う設定であり、ボード交換を行う場合には、必要のない設定である

「コントロールキー」と「Fキー」を同時押しして、検索ボックスを呼び出し、 「SHOW_BOOTSCREEN」 と入力して検索を行う。

見つかった行の先頭に「//」を加え、

//#define SHOW_BOOTSCREEN

とする。

MOTHERBOARD」で検索し、ボード名が「BOARD_MELZI_CREALITY」となっていることを確認する。

Zプローブの設定

ZMIN_PROBE」で検索し、

見つかった行の先頭にある「//」を削除し、

#define ENDSTOPPULLUP_ZMIN_PROBE

とする。

同様に、「Z_MIN_PROBE_ENDSTOP」で検索し、

見つかった行の先頭の「//」を削除し、

#define Z_MIN_PROBE_ENDSTOP_INVERTING true

とする。

BLTouchの設定

BLTouch(+コピー品)を使用できるようにする設定。

define BLTOUCH」で検索し、

見つかった行の先頭にある「//」を削除し、

#define BLTOUCH

とする。

そこから2つ下の行に

#define SERVO0_PIN 27

を追加する。

Xプローブオフセットの設定

3DTouchのプローブ位置とノズル位置とのズレを修正するための設定。

スポンサーリンク

define X_PROBE_OFFSET」で検索し、

見つかった行の値を自分の環境に合わせて変更する。

私が使用したマウントパーツの場合、XプローブオフセットとYプローブオフセットの値は、作者が

  • define X_PROBE_OFFSET_FROM_EXTRUDER -44
  • define Y_PROBE_OFFSET_FROM_EXTRUDER -14

であるとしているが、実際に自分で測ってみたほうがよい。

ここでは私が実際に測定した値「-42」を入力している。

Yプローブオフセットの設定

3DTouchのプローブ位置とノズル位置とのズレを修正するための設定。

Xプローブオフセットと同様にYプローブオフセットの値も自分の環境に合わせて変更する。

ここでは、「-14」を入力している。

Zエンドストップの設定

MIN_SOFTWARE_ENDSTOP_Z」で検索し、

見つかった行の先頭に「//」を加え、

//#define MIN_SOFTWARE_ENDSTOP_Z

とする。

オートレベリングの設定

どのようなオートレベリング方式を使うかの設定。

ここでは、「BILINEAR」と呼ばれる方式を使う。

AUTO_BED_LEVELING_BILINEAR 」で検索し、

見つかった行の先頭にある「//」を削除し、

#define AUTO_BED_LEVELING_BILINEAR

とする。

RESTORE_LEVELING_AFTER_G28」で検索し、

見つかった行の先頭にある「//」を削除し、

#define RESTORE_LEVELING_AFTER_G28

とする。

Zホーミングの設定

Zホーミング時の移動速度を緩やかにするための設定。

Z_SAFE_HOMING 」で検索し、

見つかった行の先頭にある「」を削除し、

#define Z_SAFE_HOMING

とする。

メニューアイテムの設定

メニュー項目を減らす設定。 容量確保のために行う設定であり、ボード交換を行う場合には、必要のない設定である

SLIM_LCD_MENUS」で検索し、

見つかった行の先頭にある「//」を削除し、

#define SLIM_LCD_MENUS

とする。

スピーカーの設定

スピーカーの機能を無効にする。 容量確保のために行う設定であり、ボード交換を行う場合には、必要のない設定である

SPEAKER」で検索し、

見つかった行の先頭に「//」を加え、

//#define SPEAKER

とする。

ファンの設定

ファンのノイズを低減させるための設定。

FAST_PWM_FAN」で検索し、

見つかった行の先頭にある「//」を削除し、

#define FAST_PWM_FAN

とする。

Configuration_adv.hの設定

Configuration_adv.h」という名前のタブを開く。

ベイビーステップの設定

Zプローブオフセットを細かく調整できるようにするための設定。

BABYSTEP_ZPROBE_OFFSET 」で検索し、

見つかった行の先頭にある「//」を削除し、

#define BABYSTEP_ZPROBE_OFFSET

とする。

1つ上の行に移動し、

値を変更して、

#define BABYSTEP_MULTIPLICATOR 10

とする。

ARCサポートの設定

これは容量確保のために行う設定であり、ボード交換を行う場合には、必要のない設定である

ARC_SUPPORT」で検索し、

見つかった行の先頭に「//」を加え、

//#define ARC_SUPPORT

とする。

ファームウェアを書き込む

ツール」→「ボード」→「ボードマネージャー」の順に選択し、以下のとおりに設定する。

  • ボード:Sanguino
  • プロセッサ:ATmega 1284 or ATmega 1284P (16MHz)
  • シリアルポート:Ender-3のボードをつないだポート
  • 書込装置:AVRISP mkII

設定が終わったら、画面左上にある➡マークをクリックして、ファームウェアを書き込む。

しばらく待つと、書き込みが完了する。

ボード交換を行わない場合、書き込み完了後のログを見ればわかるとおり、容量にはほとんど空きがない

オートレベリングの動作確認

Zプローブオフセットの設定

ノズルの先端位置と3DTouchの先端位置にはズレがあるため、3DTouchの先端位置をノズルの先端位置に合わせるための補正をしておく必要がある。

それがZプローブオフセットの設定であり、そのための手順は以下のとおりである。

  1. OctoPrint(ラズベリーパイ用ソフトウェア)やPrintrun(PC用ソフトウェア)もしくは「TFT35-E3」(Ender-3用多機能タッチパネルディスプレイ)のようなシリアル通信によりG-codeが直接送信できるものと Ender-3を接続
  2. M190 S?」を実行(ヒートベッドを?℃に設定する、?の値はプリント時のヒートベッドの温度にする)
  3. M851 Z0」を実行(Zプローブのオフセットを0に設定)
  4. M500」を実行(設定をEEPROMに保存)
  5. M501」を実行(EEPROMに保存されている設定をロード)
  6. G28」を実行(オートホーム)
  7. G1 X110 Y110」を実行(ノズルの位置を、オートホーム時の3DTouchのプローブ位置に合わせる)
  8. G1 Z0」を実行(Z位置を0にする)
  9. M211 S0」を実行(Zが設定上の最小位置を超えて移動するのを可能にする)
  10. プリント時のノズルとベッドの距離が最適 (ノズルとベッドの間に紙がちょうど1枚挟まる程度の距離) になるまでZ位置を下げる(このZ位置の調整はLCDメニューから行うほうが効率的)。
  11. M211 S1」を実行(Zが設定上の最小位置を超えて移動するのを不可にする)
  12. 「M114」を実行し、表示された情報の中からZの値を確認する。
  13. M851 Z?」を実行(?には一つ前の手順で得たZの値をそのまま入れる、Zの値がマイナスだったらマイナスの値、プラスの値だったらプラスの値)
  14. M500」を実行(設定をEEPROMに保存 )

これでZオフセットの設定ができた。

Gコードの設定

プリント開始前のオートレベリングを有効にするには、使用しているスライサーソフト(Slic3r やCuraなど)でプリントスタート時のGコード欄に「G29」を追記すればよい。

Curaの場合であれば、「設定」→「プリンター」→「プリンターを管理する」→「プリンターの設定」 →「G-codeの開始」 で、プリントスタート時のGコードを編集できる。

G29」を追記する場所は「G28」の直後でいいと思う。

まとめ

  • Ender-3のオートレベリングを導入した。
  • 実際にプリントしてみてオートレベリングが機能していることを確認できた。
  • 次は新しいボードとモータードライバを変更して静音化する。