コロナで引きこもり生活が続いて思わず3Dプリンタを購入してしまった人いますよね
でもマイ3Dプリンタを買ったのに研究室や会社の3Dプリンタと同じように
ただ使っているだけってもったいなくない?
というわけで今回は3Dプリンタの改造について紹介していきます
改造したい人におすすめの3Dプリンタ
3Dプリンタにもいろんな種類がありますが
個人的におすすめのプリンタはEnder 3です
お値段なんと3万円!
おすすめポイント
- 囲われてないので部品の交換が楽
- メカも回路も全てがオープンソース
- Githubに全部のってる
- 改造している人が多い
- 改造するときの情報が得やすい
- 改造パーツのSTLファイルがThingiverseに転がっている
具体的にどんな改造ができるのか紹介していきます
アップグレードパーツを取り付けてみよう(★☆☆☆☆)
Ender 3をより使いやすくするためのパーツをいろんな人が作って無料で公開しています
ThingiverseなどでEnder 3
と検索するといろいろ出てきます
私が実際に使っているのはディスプレイカバーです
リンクからSTLファイルをダウンロードしてプリントしたら取り付けるだけでプチアップグレード
改造に必要なパーツを自分で設計しよう(★★☆☆☆)
他人が作ったSTLファイルをダウンロードするだけだと簡単すぎて物足りないあなた
Ender 3はメカもオープンソースなので改造パーツを設計しやすいです
Githubに全てのパーツのSTEPファイルが上がっているのでまずはダウンロードしましょう
SOLIDWORKSユーザーはこっちの方がいいかも
ダウンロードしたファイルを全部まとめてFusion360にアップロードすると
あら不思議
アセンブリまでちゃんとされた状態で見れるじゃないですか
あとは元のモデルをみながら改造パーツを設計していくと
フード3Dプリンタに生まれ変わりました
注射器の中にペースト状の食べ物を入れて使うことができます
メインボードを交換してみよう(★★★☆☆)
ここまできたらもう後戻りはできませんね
将来のことを考えてメインボードを交換しておきましょう
メインボードを買おう
私が使っているのはSKR V1.4です
他にもいろんな種類がありますがSDカードスロットがついてるものを選んだ方が使いやすいと思います
SKR V1.4はモータドライバを5個まで載せることができるのでエクストルーダーを2個まで拡張できます
またデュアルZ軸にも対応しています
SPIモードやUARTモードのモータドライバを使用するときに煩雑なジャンパー線を増やさなくてもボード上のジャンパーピンの設定だけで容易に対応可能です
拡張機能としては
などに対応しています
公式のマニュアルはGithubにありますよ
ファームウェアを書き換えよう
メインボードを買ったらファームウェアを書き換えましょう
3Dプリンタで多く使われているのはMarlinというファームウェアです
まずは公式サイトからダウンロードしましょう
SKR V1.4では32bitのARMマイコンが使われていますが、Marlinのv1は対応していないのでv2にしましょう
次にMarlin/configに書かれているリンクからEnder 3用のフォルダをダウンロードしてMarlinディレクトリ以下におきます
リンクからいろんな3Dプリンタの設定ファイルが入ったzipをダウンロードすることができます
Ender 3の設定ファイルはconfig/examples/Creality/Ender-3
にあります
この中の4つのファイル
- _Bootscreen.h
- _Statusscreen.h
- Configuration_adv.h
- Configuration.h
をMarlinディレクトリ以下におきます
元々あったファイルは置き換えてください
それでは編集していきましょう
と言いたいところですがMarlin v2ではPlatformIOを使うので
まずはVSCodeのExtensionの中からPlatformIO IDE
をインストールしましょう
Atomにもあるらしい
インストールできたら以下の3つのファイルを編集していきます
- platformio.ini
- Configuration.h
- Configuration_adv.h
詳しくはTeaching Techの動画を見てください
ここではメモ程度に変更点を列挙しておきます
[platformio]
src_dir = Marlin
boards_dir = buildroot/share/PlatformIO/boards
default_envs = LPC1768
#define SERIAL_PORT -1
#define SERIAL_PORT_2 0
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_BTT_SKR_V1_4
#endif
#define E0_AUTO_FAN_PIN P2_04
ここまでできたらPlatformIOでBuildしましょう
Buildしてできた.pio/build/LPC1768/firmware.bin
というファイルを
をSDカードにコピーして
メインボードのSDカードスロットに挿し込めば準備完了です
配線しよう
配線する前にSKR V1.4用のケースをプリントしておくのがおすすめです
ラズパイとSKR V1.4が入るケースのSTLデータが公開されているのでこれをプリントしましょう
(合計24時間ぐらいかかるので注意)
プリントできたらTeaching Techの動画を見ながら配線を行いましょう
リミットスイッチのコネクタのつめを切ったりします
配線が終わったら電源をつけてみましょう
ディスプレイがちゃんと表示されたら成功です
モータドライバを載せよう
ディスプレイがついてもまだモータを動かすことはできません
モータドライバを載せてファームウェアの設定をする必要があります
3Dプリンタで使われるモータドライバにもいろいろありますが
とりあえずA4988を使いました
TMC2208などを使えばモータを静音化できますがそれは次回にします
モータドライバに合わせてファームウェアを変更しましょう
#define X_DRIVER_TYPE A4988
#define Y_DRIVER_TYPE A4988
#define Z_DRIVER_TYPE A4988
#define E0_DRIVER_TYPE A4988
#define INVERT_X_DIR false
#define INVERT_Y_DIR false
#define INVERT_Z_DIR true
#define INVERT_E0_DIR false
Buildして.pio/build/LPC1768/firmware.bin
をSDカードにコピーして電源を入れてください
これができたらA4988のポテンショメータを回して出力電流の制限を行いましょう
詳しくはこのブログを見てください
ちゃんと調整できたらディスプレイからMove Axis
などの機能を使って
それぞれの軸の動作チェックを行いましょう
SDカードからプリントできるようにしよう
SDカードにGcode入れてプリントしたいですよね
一行変更しましょう
#define SDCARD_CONNECTION ONBOARD
これでいつも通りPrint from Media
でSDカードからファイルを選択して
プリントできるようになっているはずです!
軸を追加してみよう(★★★★☆)
あー!あと1軸あればあんなことができるのにな!
と思うことありますよね
SKR V1.4ならできます
NEMA17
という規格のステッピングモータをもう一個買いましょう
そしてもちろんモータドライバも買っておきましょう
ファームウェアを変更しよう
本当はX,Y,Z軸とは独立の新たな軸U軸みたいな感じにしたかったのですが
どうすればいいかわからず、、
(誰か教えてください)
2個目のX軸という設定にすると
- 1個目と同時に動くデュアルX軸モード
- 2個目のエクストルーダを取り付ける用のX軸として動くモード(2個目のエクストルーダの設定が必要)
のどちらかのモードになってしまったので
仕方なく2個目のE軸として設定を行いました
#define EXTRUDERS 2
#define TEMP_SENSOR_1 1
#define E1_DRIVER_TYPE A4988
#define INVERT_E1_DIR false
ノズルの予熱が不要の場合
ちなみに私はこのプリンタをフードプリンタとして使っているので追加で変更点があります
通常はPLAやABSなどをフィラメントとして用いていますが
その場合、ノズルが冷えた状態でE軸を動かしてフィラメントを無理やり押し出すと
故障の原因になりますよね
そこでデフォルトではPREVENT_COLD_EXTRUSION
というモードが設定されています
しかしこのままだとノズルの温度を170度ぐらいにあげないと出力してくれないし
そもそもフードプリンタには不必要なホットエンド部分の配線もしなければならないので
私はこのモードをオフにしています
//#define PREVENT_COLD_EXTRUSION
//#define EXTRUDE_MINTEMP 170
これでファームウェアの変更ができたら
ディスプレイに2個目のE軸が表示されているはずです
Move Axis
から動作チェックしてみましょう
Gcodeについて
Gcodeでは
G1 X100 Y100 E10
のようなコマンドを使ってモータを動かしますが
E軸を追加した場合は
1個目のE軸と2個目のE軸をT0
, T1
というコマンドで切り替えることができます
ただしEnnで指定するnnは2軸で共通なので注意
自分でGcodeを生成している人はこのコマンドを使って制御を行いましょう
もちろんCuraなどのフリーのスライサーソフトでもE軸の追加を行うことができます
(CuraだとEnder3はE軸の追加に対応していないのでオリジナルの3Dプリンタを追加で設定する必要があるはず)
詳しくはTeaching Techの動画を見てください
5軸目のパーツを設計しよう
5軸目も動くようになったら
モータに取り付けるパーツを設計しましょう
好きなところに軸を追加すれば完成です
ラズパイと繋いでみよう(★★★★★)
WiFi経由でGcode送りたいなー、プリント中の様子をカメラでチェックしたいなー、ホットエンドに目標温度を与えた時のステップ応答見たいなー
OctoPrintならできます
ダウンロードページからzipファイルをダウンロードしたら
OctoPiというラズパイ用のイメージファイルがあるので
ラズパイのSDカードにイメージファイルを書き込みます
Raspberry Pi Imagerを使うのがおすすめですよ
書き込みが終わったらダウンロードページの説明にしたがって設定を行います
まずはSDカード内のファイルoctopi-wpa-supplicant.txt
を編集してWiFiの接続情報を加えます
## WPA/WPA2 secured
network={
ssid="KemakoWiFi"
psk="12345"
}
準備できたらSDカードを挿入したラズパイとメインボードをUSBケーブル(TypeA - TypeB)で繋ぎます
この状態でラズパイの電源を入れてしばらく待ったら
$ ssh pi@octopi.local
でssh接続できます
(パスワードはraspberry)
接続できたら必要な設定をしていきます
$ sudo raspi-config
パスワードを変えたり、タイムゾーンをTokyoにしたりします
ここまでできたら http://octopi.local にアクセスしてみましょう
出てきた画面にしたがって設定を進めていくと
OctoPrintの画面が見れますね
左のConnectionというところからConnectというボタンを押すと
Ender-3の状態が確認できます!
ラズパイのカメラをEnder3につければ
カメラでチェックすることもできます
さらにターミナルからGcodeを送信することもできるし
Gcodeファイルをアップロードして印刷することもできます
3万円の格安プリンタが高機能になって高価なプリンタに近づいてきましたね
最後に
キットではじめる3Dプリンタ自作入門という本がおすすめです
この本を読むとざっくり理解できます
そのあと私の推しYoutuberのTeaching Techをみると
他にもいろんな改造が紹介されていて楽しいですよ
モータドライバの交換やNeoPixelの接続、PIDチューニングについては
続編をご覧ください