Ender5 Pro with Bigtreetech SKR2


3Dプリンタとして比較的メジャーな、Creality社製EnderシリーズとBigtreetech製SKRボードですが、Ender-5 ProとSKR2はいずれも情報が不足気味であったため、色々と苦労しました。購入後四苦八苦すること約1ヶ月。ようやく形になってきたので記事にまとめます。

経緯

3Dプリンタライフを始めて約1年。オートレベリングやランアウトセンサ、デュアルエクストルーダ化など色々欲望・願望が高まって来ており能力不足を実感。

(私が購入した3Dプリンタのボードはv1.15でIOは完全に埋まっており、ほぼ拡張はできないと判断。)

サードパーティ製のマザーボードへ換装。制御系を全てリニューアルすることとした。

必要なもの

ハードウェア

  • 3Dプリンタ
  • マザーボード
  • TMC2208モータドライバボード

    • SKR2にはモータドライバが付属していなかったため購入
    • 静音化やエンドストップスイッチ省略も可能とのこと。
  • ディスプレイ

    • Bigtreetech社製 TFT
      • Ender5純正ディスプレイが使えなかったため購入
      • タッチスクリーン&アイコンの操作性は意外とGood
  • 筐体

    • 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

ボードの方もピンヘッダをUARTモードに設定

モータの回転方向を設定(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軸エンドストップについてまとめます。