Ender3Proにオートレベラを追加する

どうやってもワケわからなくなるので、あんまり書きたくなかったんだけど。

ドローンの部品作るのに 3Dプリンタだ!というのが丁度1年ほど前。
一時期ぶん投げたり、思い出したようにフィラメント揃えたり。
亀のような歩みで、しかしながらちゃんと進み、ようやく形になりだした。
海外で売っているハードなヘアスプレーが、デッキに吹いておくと材料が反らないとか言ってて、同じスプレーないんで、同じ材料使ってるの試したり。
(現在は100均の合成のりがベストとなっている)

そんなこともあり、今年に入り我チームでは、もう1台 Ender3Pro を追加。
その後、理屈も理解したし、そろそろちゃんと30万とかの高いやつとかでもいいんじゃね?
と、いろいろ調査して悩んだ結果、やっぱり安い Ender5 を追加を決定。
もうすぐ 3台体制になりそうだ。

ということで、重い腰をあげ、当初予定してた改良を行おうという記事。
正直どうやってもわかりやすく書ける気がしなかったのだけど、複数台やる過程や修理の時に思い出せないというのがよくあるので、つまるところ覚え書きだ。

Ender3 とか Ender5 は、Creality という会社の格安 3Dプリンタで、2万5千円ぐらいから買える。
https://github.com/Creality3DPrinting/Ender-3
オープンソースで展開されており、そのあたりが安価であることと、ノウハウが集まりやすく、とにかく工夫すればなんとかなる。
しらべるとドローンの改造ネタよりよっぽど情報が多い。
まあコレで十分じゃないか?というのが感想。
様々な改修方法があるが、その中でも今回は「オートレベラ」というのをやってみる。

FDM式の 3Dプリンタは、温めたプラスチックをノズルの先から垂らし、それを積層していくことで形にする。
なので、デッキとノズルの高さ設定がポイント。
複数点を計測し、紙などでクリアランスを測りプリントするのだ。
これを自動でやるのが「オートレベラ」となる。
センサーは純正の BL_Toutch というのがあるが、パチの 3D Toutch とか、まあ似たようなのがいっぱいある。
おそらくどれでもいい。

ココで制御系の簡単な構成を説明する。
制御基板は AVR マイコンで、Arduino互換。
モータドライバや各種センサは入るようになっている。
なんかこのあたりはドローンの FC に似てますね。高性能基盤とかも売ってます。
これに U8glib の液晶がつく。
Mini-USB端子と MicroSDカードスロットがあり、この SDカードにデータを置き、液晶で見ながら操作するというのが基本的な構造。

オートレベラをつけるためには、Z軸のリミットスイッチの部分にタッチセンサーを割り込ませ、制御基板のファームを改造してやることで利用可能となる。
ファームは Merlin というものを使うのだが、最初は bootloader の書き込みが必要。
そして Bootloader の書き込みには AVR ライタの類が必要となる。(ココがめんどい)
世間で実践した例を見ると、Arduino Uno を AVRライタ改造して ArduinoIDE から書き込むパターンが多いようだが、これはこれで大変よね。
ということで、最近は AVRライタまでセットになったのが売ってる。
https://www.amazon.co.jp/dp/B07SHS8CJS/
こういう部品セットのがオススメ。4~5000円。
変換基盤x2、センサー、AVRライタ、マウンタ、ケーブル各種。
ニッチな製品に思えるが、中華ショップも含めた多数売っている。
なお、それっぽい QRコードあって、そこに説明書ありそうだが、説明書はない。

AVRライタはこんな感じで組み合わせる。

このあたりから写真とってないので、肝心なところなのに端折っちゃうが、調べればたくさん出てくる。
AVRライタを PC の USBに接続し、制御基板のファームを書き込みできる状態までやる。
ファームはコチラ。
https://creality.com/download/creality3d-bl-touch-firmware_c0006
Ender3は、無印とProとあるが、コレ中身同じじゃないかな?
これを解凍すると「progisp+1.72」というフォルダがあり、その中にある「progisp.exe」が AVRライターのプログラム。

①で「ATmega1284P」を選択
②でダイアログを開き
③で番地を「DC D6 FC」として
④で「Write」して閉じる
⑤でファイルを開き、同じフォルダにある「Marlin.cpp.hex」を選択
⑥で焼付

これで bootloader の焼付が完了。
この状態ではファームは空の状態なので別途ファームを焼き付けることになる。
ファームの焼付方法は何種類かある。
このまま AVR ライタで焼き付ける場合は、同じアーカイブの中に入っている「Ender-3 Pro1.1.6BLTouchV3.1PowerLossContinueEnglish.hex」を同様の方法で焼き付ける。
Octoprint を使ってたら、そこから焼き付けるのもあり。

ただし上記の方法では、バイナリが出来上がっている状態なので、細かい設定等ができない。
その場合は、ArduinoIDE を使ってビルドしてバイナリを作ることで可能。
ArduinoIDEはコチラからダウンロード。
https://www.arduino.cc/en/main/software
Merlin のソースはコチラ。
https://marlinfw.org/meta/download/
2.0.x系は 32bit のもので、今回の ATmega1284P は 16bit の 1.1.x系を使う。
解凍して「\Ender3_3Dtoutch_Marlin-1.1.x\Marlin\example_configurations\Creality\Ender-3」からヘッダファイルを「Marlin」のフォルダにコピー。
「Marlin.ino」を ArduinoIDE で開いて、各種ヘッダファイルを調整する。
タッチセンサーの項目を組み込むとともに、メモリが足りないのでメニューとかの機能を削る。
液晶に使っているので「U8glib」のライブラリも忘れず追加。

おなじみのPID設定とかもできますよ。

ということをやるとできる。
あとセンサーとのオフセットとかの調整もあって、ようやく自動になります。
動かすときには Cura の Gコードで、G28 のあたりに G29 (オートレベラ起動)を追加します。
これもヘッダファイルで G28 に連携する設定ありますが、まあ入れとけ。
まだモノは見てないけど、おそらく Ender5 も同じじゃないかな。
いきあたりばったりだが、今回もなんとかなった。

右側の青LEDがタッチセンサー。奥の青LEDのあたりが今回の増設ポイント。