wanwanの興味あるもの実験室

arduino、mbed、M5stack その他興味のあるものをちょこちょこと

Ender3v2 + SKR mini E3 v2.0にCR touchを導入する

背景

 普段使いの3DプリンタとしてCreality製のEnder3v2を所有しているのだが、これまでメインボードをBIGTREETECH SKR mini E3 v2.0に交換した以外は素の状態で使用してきた。今回、ふとプリント精度を向上させたいと思いたちオートレベリング用のプローブを購入したので備忘録として導入の流れを記しておこうと思う。

f:id:wanwan24101:20211016232331j:plain

CR touchを購入

 格安3Dプリンタではベッドのオートレベリングに簡易的なタッチプローブがよく用いられており、BL touchや3Dtouchなどが有名である。

 当初はBLtouchを購入する予定だったのが、知らぬ間にCreality純正のタッチプローブが発売されていた事に気づき、日本語での導入記事も見かけなかったため興味本位で購入してみた。なおAliexpressのCreality公式ショップで購入、送料込で約4000円だった。

AliExpress.com Product - CREALITY 3D CR Touch Sensor Auto Bed Leveling with a Metal Probe For Ender-3 Max /V2/Ender-3/3Pro/Ender-5/Pro/CR-10 Series

CR touchとBL touchは何が違うのか

 Creality公式HPには両者に違いがあるかのように記載されているが、ピン配置は5pinでBL touchと同様であり、海外Youtuberが投稿している検証動画での繰り返し精度は測定誤差レベルの差しかなく大きな優劣はなさそうだ。差があるとすれば下記の3点

・CR touchのほうが見た目の高級感がある

・Creality純正なのでプローブが最適な位置に取り付けられる金具がついている

・純正メインボードで確実に動作するという安心感がある

といったところだろう。

 なお検証動画内では繰り返し精度約1.2umという産業用途にも使えそうな検証結果となっているが、この簡易な構造でそこまで精度が出るのかは少々疑問である。

www.crealityofficial.co.uk

www.hotrodhippie.com

CR touchをEnder3v2に取り付ける

 早速CR touchを開封し、Ender3v2に取り付けていく。パッケージはAnkerっぽいような気取ったデザインで、側面の謎のキャラクターがいい味を出している。

f:id:wanwan24101:20211016232233j:plainf:id:wanwan24101:20211016232240j:plain

 付属品は本体、ケーブル、取付金具、ビス、結束バンドとEnderシリーズに取り付ける際に必要となる部品が一通り付属していた。

f:id:wanwan24101:20211016232248j:plainf:id:wanwan24101:20211016232257j:plain

 本体は全体が樹脂製の半透明カバーに覆われておりBL touchよりかっこいい

f:id:wanwan24101:20211016232306j:plainf:id:wanwan24101:20211016232322j:plain

 まず最初にホットエンド横のタップ穴に金具を取り付ける、M3×6とM3×8が付属しておりマニュアルでは8mm長のビスで取り付けろと書いてるのだが、フレームと干渉しそうだったので6mm長を使用。余った8mm長のビスでCR touchを取り付けた。

f:id:wanwan24101:20211016232338j:plainf:id:wanwan24101:20211016232356j:plain

 次に、メインボードに配線を行う。本体左手前裏側のカバーを取り外す。固定ネジは上面に1本、下面に3本ある。メインボードは純正ではなくSKR mini E3 v2.0に載せ替えてある。マニュアル上でコネクタ位置を確認し、Z-Probeと記載されている箇所に接続した。BIGTREETECH SKR Mini E3 V2.0 - Wiring Diagram

f:id:wanwan24101:20211016232412j:plain

 配線は少しでも見栄えを良くしたいため、ケーブルを保護しているメッシュに通し、CR touchに接続した後に、結束バンドで整理した。

f:id:wanwan24101:20211016232420j:plain

ファームウェアの設定を変更しメインボードに書き込む

 CR touchを取り付けたのでメインボードのファームウェアを設定していく。なおエディタはVS code拡張機能はPlatformIOを使用し、ファームウェアバーションはMarlin 2.0.9.1だ。VScodeとPlatformIOの組み合わせはMarlinの標準的なコンパイル環境であり、導入については下記の記事に詳しく記載されている。

all3dp.com

 Configuration.hを開き、Z軸プローブの追加を実施する。

Z軸の原点復帰はプローブを使用したいのでUSE_PROBE_FOR_Z_HOMINGの行頭にある//を削除し、設定を有効な状態とする。

f:id:wanwan24101:20211016030733p:plain

 #define BLTOUCHの行頭にある//を削除し、プローブを有効にする。今回はCR touchを使用しているが、基本的にはBL touchと同じ動作を行うので問題ない。

f:id:wanwan24101:20211015050513p:plain

 次にホットエンドノズルからプローブのオフセット量を設定する。スケールを用いて目視で測定したところX-44mm、Y-10mmであった。Zは後ほど調整するのでとりあえず0mmとしておいた。f:id:wanwan24101:20211015051532p:plain

 そしてキャリブレーションの方式について設定する。手軽に実施できるレベリング方式として3点測定にて補正するAUTO_BED_LEVELING_3POINT、ベッド面を平面と仮定して傾き補正を行うAUTO_BED_LEVELING_LINEAR、双曲線と仮定して補正を行うAUTO_BED_LEVELING_BILINEARがある。今回はAUTO_BED_LEVELING_BILINEARを使用することとした。

f:id:wanwan24101:20211016020146p:plain

 RESTORE_LEVELING_AFTER_G28を有効にする。これで、G28での原点復帰動作後に以前計測した補正データが有効となる。

f:id:wanwan24101:20211016021208p:plain

 Z_SAFE_HOMINGを有効にする。Z軸の原点復帰がベッドの中央で実施される。 

f:id:wanwan24101:20211016022830p:plain

 ネット上のBL touch導入記事を見るとZ_MIN_PROBE_USES_Z_MIN_ENDSTOP_PINを有効にするよう指示されているが、これを有効にするとメインボード上のZ_MINコネクタの信号と競合してしまい、プローブを使用したZ軸の原点復帰がうまく動作しなかった。下記の動画ではZ_PROBEとZ_MINコネクタにそれぞれ配線を実施しているが、CR touchは5ピンコネクタのためZ_MINに接続することができない。定かではないがこれはSKR mini E3特有の問題なのかもしれない。二股ケーブルを作成することで接続可能であるが、無効にすることで動作確認できたためコメントアウトすることにした。

/**
 * Enable this option for a probe connected to the Z-MIN pin.
 * The probe replaces the Z-MIN endstop and is used for Z homing.
 * (Automatically enables USE_PROBE_FOR_Z_HOMING.)
 */
//#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN

www.youtube.com

 一通り設定を終えたらファイルを上書き保存する。
VScodeの下部に表示されているチェックマークをクリックし、プロジェクトをビルドする。

f:id:wanwan24101:20211016024831p:plain    

 無事完了したら下記のような表示が出る。

f:id:wanwan24101:20211016024950p:plain

 私の環境の場合、Marlin-2.0.x/.pio/build/STM32F103RC_btt_maple内にfirmware.binファイルが作成される。

f:id:wanwan24101:20211016025231p:plain

 このfirmware.binファイルをマイクロSDカードにコピーする。マイクロSDはEnder3v2に付属してきたもので、容量8GB、ファイルシステムFAT32でフォーマットし、アロケーションユニットサイズは4096バイトとしている。Ender3v2標準のDWIN液晶画面は使用するSDの容量とフォーマットにうるさいらしく、Marlinを導入した際にフォーマットしたものをそのまま使用している。

 ファイルのコピーが完了したら、SDカードをEnder3v2に差し込み電源を入れると自動的にファームウェアの書き込みが始まり、書き込みが完了すると通常通り動作可能となる。液晶パネルに新たに「LEVEL」という項目が追加されており選択すると問題なくレベリングが実施された。

f:id:wanwan24101:20211016232428j:plain

 ヒートベッドが室温の状態での測定結果は下記の通りで、中央部がやや凹んでいるような結果となった。なお下記の結果はOctprintのターミナル上で確認した。

f:id:wanwan24101:20211016181758p:plain

プローブのZ軸オフセットを調整する

 実際のプローブとホッドエンド先端にはオフセットがあるため、プローブでのZ軸原点復帰後、紙を使ってホッドエンドとの距離を確認しオフセット値を決定した。最も良さそうであったZ-0.9mmに設定し、レベリングナットでベッドの高さを微調整した。

f:id:wanwan24101:20211016232443j:plainf:id:wanwan24101:20211016232451j:plain

 スライサーの設定で印刷開始時のヘッダー部にオートレベリング実行のGコード命令 G29を追加する。スライサーはCuraでver4.11.0を使用した。

 Setting→priter→Manage Printersをクリック

f:id:wanwan24101:20211016201222p:plain

 Preferenceウィンドウが開いたらMachine Settingsをクリック

f:id:wanwan24101:20211016201241p:plain

 Start G-codeの原点復帰命令G28の直後にG29を追加する

f:id:wanwan24101:20211016201321p:plain

 追加したらcloseでウィンドウを閉じて設定完了

オートレベリングの効果を確認 

 テストパターンを印刷しオートレベリングの効果を確認した。0.4mmノズルを使用しているため幅が0.8mmに近ければOK。ベッドとノズルの距離が近ければ太く、遠ければ細く印刷される。

www.thingiverse.com

 結果、これまではノギスでの測定値が外周部 約1.10mm、内周部0.80mmとなっていたが、外周部0.88mm、内周部0.84mmと改善した。レベリングの計測値からも明らかなように中央部の凹みを補正する形でヘッドが動いていることが確認できた。

f:id:wanwan24101:20211017002316j:plainf:id:wanwan24101:20211017002323j:plain

以上