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軸エンドストップについてまとめます。