3Dプリンタとして比較的メジャーな、Creality社製EnderシリーズとBigtreetech製SKRボードですが、Ender-5 ProとSKR2はいずれも情報が不足気味であったため、色々と苦労しました。購入後四苦八苦すること約1ヶ月。ようやく形になってきたので記事にまとめます。
経緯
3Dプリンタライフを始めて約1年。オートレベリングやランアウトセンサ、デュアルエクストルーダ化など色々欲望・願望が高まって来ており能力不足を実感。
(私が購入した3Dプリンタのボードはv1.15でIOは完全に埋まっており、ほぼ拡張はできないと判断。)
サードパーティ製のマザーボードへ換装。制御系を全てリニューアルすることとした。
必要なもの
ハードウェア
-
3Dプリンタ
-
Creality社製 Ender-Pro (github)
- (Ender3は3Dモデルから、ボードの回路図、ファームまで何でも載っているのにも関わらず、Ender5は中身空っぽで全く更新されないというシュールなイシューが発行される状況)
-
Creality社製 Ender-Pro (github)
-
マザーボード
-
Bigtreetech社製 SKR-2
- SKR1.4の後継。
- Enderシリーズを使う方はSKR miniシリーズをよく使っていらっしゃいますが、IOが足りないので採用見送り。
-
Bigtreetech社製 SKR-2
-
TMC2208モータドライバボード
- SKR2にはモータドライバが付属していなかったため購入
- 静音化やエンドストップスイッチ省略も可能とのこと。
-
ディスプレイ
-
Bigtreetech社製 TFT
- Ender5純正ディスプレイが使えなかったため購入
- タッチスクリーン&アイコンの操作性は意外とGood
-
Bigtreetech社製 TFT
-
筐体
- Enderシリーズの筐体にポン付け出来るSKR miniシリーズを使わなかったため、適当なアルミ筐体を作成。どうせならと、OctoprintをインストールしたRaspberryPi 4(8GB)とその電源を格納。
ソフトウェア
-
Marline github
- 実際は初心者故、ボードごとのカスタマイズが完了しているソフトMarline for SKR2を使用。最新ではない可能性あり。
- VScode
-
Auto Build Marlin
- VSCode用プラグイン
- platform IOでビルドする例が多いがこちらの方が環境構築が楽。
最低限の設定
ファームウェアを入手(Bigtreetech製のレポジトリ。ボードのハードウェアマニュアルと共にSRK2用のカスタマイズ済み)。
git clone https://github.com/bigtreetech/SKR-2
座標系の設定
まずはX・Y・Z軸エンドストップ位置を設定するが、座標軸の定義を決めておく必要がある。X・Y軸はLCDディスプレイのアイコンに合わせ左手前を0.0に設定。Z軸はディスプレイとは逆になるが、プラットフォーム最上昇位置を0とする座標と定義。そのうえで、エンドストップ取り付け位置はXYZそれぞれ、右・奥・上であることを確認した上で設定。
ホームポジションとエンドスイッチの場所を指定(Configration.h)。
# define X_HOME_DIR 1
# define Y_HOME_DIR 1
# define Z_HOME_DIR -1
# define USE_XMAX_PLUG
# define USE_YMAX_PLUG
# define USE_ZMIN_PLUG
印刷範囲を設定(configration.h)。
# define X_BED_SIZE 220
# define Y_BED_SIZE 220
# define X_MIN_POS 0
# define Y_MIN_POS 0
# define Z_MIN_POS 0
# define X_MAX_POS X_BED_SIZE
# define Y_MAX_POS Y_BED_SIZE
# define Z_MAX_POS 300
モータ設定
購入したモータドライバ(今回はTMC2208)に合わせて編集(Configration.h)。
# define X_DRIVER_TYPE TMC2208
# define Y_DRIVER_TYPE TMC2208
# define Z_DRIVER_TYPE TMC2208
# define E0_DRIVER_TYPE TMC2208
# define E1_DRIVER_TYPE TMC2208
モータの回転方向を設定(Configration.h)。
# define INVERT_X_DIR false
# define INVERT_Y_DIR false
# define INVERT_Z_DIR false
# define INVERT_E0_DIR false
軸ごとの移動量を設定(configration.h)。
(後の試運転で定規を使って移動量を確認します。)
# define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 93 }
LCDとの接続設定
LCDとの接続を設定(Configration.h)。
(不要かも)
# define SERIAL_PORT_3 3
# define CUSTOM_MACHINE_NAME "Ender-5 Pro Cstm"
おそらくエクストルーダの電流が過剰なため修正(Configration_adv.h)。
# if HAS_TRINAMIC_CONFIG
// 中略
#if AXIS_IS_TMC(E0)
// 中略
#define E0_CURRENT 600
試運転
電源、モータ、LCD等を接続して動作を確認する。
軸ごとの回転方向を設定。
(こちらも試運転でLCD指示と実際の移動方向が一致するかを確認)
ヒータのPID制御
PID制御の設定有効化したりオートチューニングによりゲインを最適化するとノズル・ベッドの昇温が早くなる。
ノズル温度制御
ノズルは元々PID制御となっているためオートチューニングメニューを有効化する(configration.h)。
# define PID_EDIT_MENU
# define PID_AUTOTUNE_MENU
ベッド温度制御
ベッドはON-OFF制御となっているためPID制御を有効化する(Configration.h)。
# define PIDTEMPBED
試運転
LCDディスプレイの温度設定にPIDチューニングが表示されるはず。オートチューニングを実施するとしばらく画面が固まるが数分後に完了する。同定したゲインはEEPROMへ保存できるので保存。
Next Modify
次回は、BLTouchを用いたオートレベリング及びZ軸エンドストップについてまとめます。