Ender3v2 + SKR mini E3 v2.0にCR touchを導入する
背景
普段使いの3DプリンタとしてCreality製のEnder3v2を所有しているのだが、これまでメインボードをBIGTREETECH SKR mini E3 v2.0に交換した以外は素の状態で使用してきた。今回、ふとプリント精度を向上させたいと思いたちオートレベリング用のプローブを購入したので備忘録として導入の流れを記しておこうと思う。
CR touchを購入
格安3Dプリンタではベッドのオートレベリングに簡易的なタッチプローブがよく用いられており、BL touchや3Dtouchなどが有名である。
当初はBLtouchを購入する予定だったのが、知らぬ間にCreality純正のタッチプローブが発売されていた事に気づき、日本語での導入記事も見かけなかったため興味本位で購入してみた。なおAliexpressのCreality公式ショップで購入、送料込で約4000円だった。
CR touchとBL touchは何が違うのか
Creality公式HPには両者に違いがあるかのように記載されているが、ピン配置は5pinでBL touchと同様であり、海外Youtuberが投稿している検証動画での繰り返し精度は測定誤差レベルの差しかなく大きな優劣はなさそうだ。差があるとすれば下記の3点
・CR touchのほうが見た目の高級感がある
・Creality純正なのでプローブが最適な位置に取り付けられる金具がついている
・純正メインボードで確実に動作するという安心感がある
といったところだろう。
なお検証動画内では繰り返し精度約1.2umという産業用途にも使えそうな検証結果となっているが、この簡易な構造でそこまで精度が出るのかは少々疑問である。
CR touchをEnder3v2に取り付ける
早速CR touchを開封し、Ender3v2に取り付けていく。パッケージはAnkerっぽいような気取ったデザインで、側面の謎のキャラクターがいい味を出している。
付属品は本体、ケーブル、取付金具、ビス、結束バンドとEnderシリーズに取り付ける際に必要となる部品が一通り付属していた。
本体は全体が樹脂製の半透明カバーに覆われておりBL touchよりかっこいい
まず最初にホットエンド横のタップ穴に金具を取り付ける、M3×6とM3×8が付属しておりマニュアルでは8mm長のビスで取り付けろと書いてるのだが、フレームと干渉しそうだったので6mm長を使用。余った8mm長のビスでCR touchを取り付けた。
次に、メインボードに配線を行う。本体左手前裏側のカバーを取り外す。固定ネジは上面に1本、下面に3本ある。メインボードは純正ではなくSKR mini E3 v2.0に載せ替えてある。マニュアル上でコネクタ位置を確認し、Z-Probeと記載されている箇所に接続した。
配線は少しでも見栄えを良くしたいため、ケーブルを保護しているメッシュに通し、CR touchに接続した後に、結束バンドで整理した。
ファームウェアの設定を変更しメインボードに書き込む
CR touchを取り付けたのでメインボードのファームウェアを設定していく。なおエディタはVS code、拡張機能はPlatformIOを使用し、ファームウェアバーションはMarlin 2.0.9.1だ。VScodeとPlatformIOの組み合わせはMarlinの標準的なコンパイル環境であり、導入については下記の記事に詳しく記載されている。
Configuration.hを開き、Z軸プローブの追加を実施する。
Z軸の原点復帰はプローブを使用したいのでUSE_PROBE_FOR_Z_HOMINGの行頭にある//を削除し、設定を有効な状態とする。
#define BLTOUCHの行頭にある//を削除し、プローブを有効にする。今回はCR touchを使用しているが、基本的にはBL touchと同じ動作を行うので問題ない。
次にホットエンドノズルからプローブのオフセット量を設定する。スケールを用いて目視で測定したところX-44mm、Y-10mmであった。Zは後ほど調整するのでとりあえず0mmとしておいた。
そしてキャリブレーションの方式について設定する。手軽に実施できるレベリング方式として3点測定にて補正するAUTO_BED_LEVELING_3POINT、ベッド面を平面と仮定して傾き補正を行うAUTO_BED_LEVELING_LINEAR、双曲線と仮定して補正を行うAUTO_BED_LEVELING_BILINEARがある。今回はAUTO_BED_LEVELING_BILINEARを使用することとした。
RESTORE_LEVELING_AFTER_G28を有効にする。これで、G28での原点復帰動作後に以前計測した補正データが有効となる。
Z_SAFE_HOMINGを有効にする。Z軸の原点復帰がベッドの中央で実施される。
ネット上の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特有の問題なのかもしれない。二股ケーブルを作成することで接続可能であるが、無効にすることで動作確認できたためコメントアウトすることにした。
一通り設定を終えたらファイルを上書き保存する。
VScodeの下部に表示されているチェックマークをクリックし、プロジェクトをビルドする。
無事完了したら下記のような表示が出る。
私の環境の場合、Marlin-2.0.x/.pio/build/STM32F103RC_btt_maple内にfirmware.binファイルが作成される。
このfirmware.binファイルをマイクロSDカードにコピーする。マイクロSDはEnder3v2に付属してきたもので、容量8GB、ファイルシステムはFAT32でフォーマットし、アロケーションユニットサイズは4096バイトとしている。Ender3v2標準のDWIN液晶画面は使用するSDの容量とフォーマットにうるさいらしく、Marlinを導入した際にフォーマットしたものをそのまま使用している。
ファイルのコピーが完了したら、SDカードをEnder3v2に差し込み電源を入れると自動的にファームウェアの書き込みが始まり、書き込みが完了すると通常通り動作可能となる。液晶パネルに新たに「LEVEL」という項目が追加されており選択すると問題なくレベリングが実施された。
ヒートベッドが室温の状態での測定結果は下記の通りで、中央部がやや凹んでいるような結果となった。なお下記の結果はOctprintのターミナル上で確認した。
プローブのZ軸オフセットを調整する
実際のプローブとホッドエンド先端にはオフセットがあるため、プローブでのZ軸原点復帰後、紙を使ってホッドエンドとの距離を確認しオフセット値を決定した。最も良さそうであったZ-0.9mmに設定し、レベリングナットでベッドの高さを微調整した。
スライサーの設定で印刷開始時のヘッダー部にオートレベリング実行のGコード命令 G29を追加する。スライサーはCuraでver4.11.0を使用した。
Setting→priter→Manage Printersをクリック
Preferenceウィンドウが開いたらMachine Settingsをクリック
Start G-codeの原点復帰命令G28の直後にG29を追加する
追加したらcloseでウィンドウを閉じて設定完了
オートレベリングの効果を確認
テストパターンを印刷しオートレベリングの効果を確認した。0.4mmノズルを使用しているため幅が0.8mmに近ければOK。ベッドとノズルの距離が近ければ太く、遠ければ細く印刷される。
結果、これまではノギスでの測定値が外周部 約1.10mm、内周部0.80mmとなっていたが、外周部0.88mm、内周部0.84mmと改善した。レベリングの計測値からも明らかなように中央部の凹みを補正する形でヘッドが動いていることが確認できた。
以上