X
    カテゴリー: Ender-3

【Ender-3改造】Ender-3に32bitのメインボードを導入した(Marlin 2.0.x)

 155,141 total views,  12 views today

32bitの3Dプリンター用メインボードを購入して、Ender-3にファームウェアとしてMarlin 2.0を導入した。

目次

32bitメインボード

Ender-3の純正メインボードやMKS GEN LのようなメインボードはAtmel社の 8bitマイコン(ATmega1284P、ATmega2560等)を使用 している。

しかしながら、今では3Dプリター用メインボードは32bitが主流となってきているようである。

ということで、Ender-3に32bitのメインボードを導入してみた。

私が今回導入したのは「SKR  E3 DIP」というボードで、モータードライバー4個(TMC2130 SPI ×4)とのセットで4000円弱だった。

追記:ただし、今からEnder-3用の32bitのメインボードを買うならモータードライバが組込み済みのSKR mini E3のほうがおすすめである。

「SKR mini E3」のレビュー記事追加↓

なお、日本のAmazon(マーケットプレイス)でもBIGTREETECHの公式ストアが取り扱いを始めており、日本国内からの発送となっているので、購入の際はAmazonを使った方が早く届いて良いと思う。

SKR E3 DIP」は、Ender-3用に特化していて、サイズがEnder-3の純正ボードと同じで、ピンの配置も純正ボードに非常に似通っているため、導入が容易であると思う。

上:Ender-3純正ボード、下:SKR E3 DIP

32bitメインボードの利点

コントールボードを8bitのものから32bitのものに変えることで、何が変わるのかを一言でというと、一度の演算で処理できるデータ量が大きくなるということになる。

3Dプリンターとは、複数のモーターの動作を制御しながら、溶融した熱可塑性樹脂を任意の形状に積層させる機械 (※FDM方式の場合)なのであるから、 3Dプリンターにおいて、多くの演算を要するものは何かといえば、ステッピングモーターの動作制御に他ならない。

ステッピングモーターの動作はプリント精度に関わるものであり、より複雑で微細なステッピングモーターの動作制御は、プリント精度を向上させるものである。

プリント精度向上のために、ステッピングモーターの動作をより滑らかにするには、より複雑で微細なステッピングモーターの動作制御が必要となり、より多くの演算が必要となる

ステッピングモーターの微細な動作制御の参考動画

このように、32bitのコントールボードは 、ステップ角0.9°のステッピングモータの導入であったり、ステッピングモータードライバでより細かなマイクロステップ(128マイクロステップや256マイクロステップ)での動作を有効にするときなどに力を発揮する。

「Marlin 2.0.x」

32bitのメインボードでは、ファームウェアとしてMarlin 2.0.xが使える。これはMarlin 1.1.xの発展版であるが、コンパイルするために必要な環境はMarlin 1.1.xとは異なっている。

PlatformIO IDEの導入

Arduinoベースの8bitメインボードでは、ファームウェアであるMarlin 1.1.xのコンパイルにArduino IDEが使えた。

しかし、Marlin 1.1.xの発展版であるMarlin 2.0.xについては、一部の32bitメインボードでArduino IDEが引き続きサポートされるようであるが、Marlin 2.0.xのコンパイルにはPlatformIO IDE を使うことが推奨されている。

PlatformIO IDE

PlatformIO IDEは、テキストエディタであるMicrosftのVisual Studio Codeの拡張機能として提供されている。

Visual Studio Codeのインストール

公式ページから、自分のPC環境にあったバージョンのものをダウンロードする。

インストーラ版をダウンロードした場合は、インストーラを起動し、使用許諾所に同意してインストール作業を進める。

インストール時のオプションを選択して、次の作業へ進む。

内容を確認して、インストールを行う。

しばらく待つとインストール作業が完了する。

ちなみに、この記事執筆時点(2019年8月19日)での最新版のバージョンは、↓となっている。

PlatformIO IDEのインストール

Visual Studio Codeウィンドウの左端一番下にある「Extensions」タブをクリックする。

検索窓に「platformio」と入力し、表示された検索結果の中から、「PlatformIO IDE」を選択する。

「Install」のボタンをクリックして、インストールを行う。

しばらく待つと、PlatformIO IDEのインストールが完了する。

PlatformIO IDEの起動

Open Project」ボタンをクリックして、Marlin 2.0.xのフォルダを開く。

PlatformIO IDEでのコンパイル

編集し終わったMarlin 2.0.xのソースファイルをコンパイルするには、画面の左下のほうにある、✔マークをクリックする。

何事もなければ、しばらく待つとコンパイルが完了する。エラーが出でコンパイルが完了しない場合には、内容を確認して該当箇所の修正を行う必要がある。

「Marlin 2.0.x」の書き込み

コンパイルが終わったら、Marlin 2.0.xフォルダ内の「BIGTREE_SKR_MINI」フォルダ( Marlin 2.0.x ⇒.pio⇒build⇒BIGTREE_SKR_MINI)内に「firmware.bin」というファイルが作成させる。このファイルを書き込んだSDカードをメインボードに差し込んだ状態で、メインボードの電源を入れれば自動的にファームウェアが書き込まれる。

Ender-3用Marlin 2.0の設定変更箇所覚え書き

Marlin 1.1.x同様、 Marlin 2.0.xでもEnder-3を含む各種3Dプリンター用の設定ファイルが同梱(※)されているので、ファームウェアのアップデート関しては該当機種用の設定ファイルをコピーしてきてコンパイルを行えば事足りる

※Ender-3の場合、 設定ファイルの場所は 「Marlin-bugfix-2.0.x/config/examples/Creality/Ender-3

しかしながら、オートレベリングを導入している場合や、メインボード、ホットエンド、ステッピングモーター、 モータードライバの交換といった改造を行っている場合には、それらの改造に合わせた設定を行わなければならないため、設定変更箇所を覚え書きとして残しておくことにする。

なお、ここではメインボードにBIGTREETECHのSKR-E3-DIPを使用する場合について書いている。

オートレベリング用センサーを導入した場合

配線

BLTOUCH系のセンサーを導入する場合、配線は↓の通りとなる。

  • SERVO:(左から順に)オレンジ、茶、赤
  • Z-STOP:(左から順に)黒、白

2019年12月20日追記:
ここで使用しているセンサーは、Trianglelab製のものであるがその他のメーカー製のものの中には、3ピンのコネクタで真ん中が赤なっている場合があるので、注意が必要である。
このようなセンサーをボードのピン配置に対応させないままボードに差し込んでしまうと、センサーが故障してしまう
そのため、配線を行う際にはボード裏のシルク印刷の表記をよく確認してピンとケーブルの接続を正しく行う必要がある。

ピンとケーブルの色の対応は以下の通り。

  • SERVO
    • GND ⇒ 茶
    • +5V ⇒ 赤
    • その他 ⇒ オレンジ
  • Z-STOP
    • GND ⇒ 黒
    • その他 ⇒ 白

※注:画像は、SKR E3-DIP V1.0の場合

「Configuration.h」の設定変更箇所

オートレベリング用のセンサーとしてBLTOUCH(互換品含む)を導入した場合、「BLTOUCH」の設定を有効にしておく。

変更前
  • コメントアウト解除
変更後
プローブオフセットの設定

プローブのノズルからのオフセット位置を設定する。

変更前
変更後

使用したい、オートベッドレベリングの方式を選択する。

変更前
  • コメントアウト解除
変更後
変更前
  • コメントアウト解除
変更後
エンドストップの設定

エンドストップ(MIN側)について、画像の通り設定を変更しておく。

変更前
  • コメントアウト解除
変更後
変更前
  • false ⇒ true
変更後

メインボードを交換した場合

「platformio.ini」の設定変更箇所

「default_envs」の値を使用するボードのものに変更する。ボードが「SKR E3 DIP」の場合、「STM32F103RC_btt」となる。

default_envs = megaatmega2560 ⇒ default_envs = STM32F103RC_bigtree

変更前
補足

モータードライバにTMC2209を使用する場合は、追加で以下の変更が必要となる。

  • [common]
    • TMCStepper@>=0.5.0,<1.0.0 ⇒ #TMCStepper@>=0.5.0,<1.0.0
    • https://github.com/bigtreetech/TMCStepper を追加
変更前
変更後
  • [env:STM32F103RC_btt]
    • build_flags に -DHAVE_SW_SERIAL を追加
変更前
変更後

「Configuration.h」の設定変更箇所

ボード名の設定

「#define MOTHERBOARD」の値を変更する。ボードが「SKR E3 DIP」の場合、「 BOARD_BIGTREE_SKR_E3_DIP」となる。

変更前
  • #define MOTHERBOARD BOARD_RAMPS_14_EFB ⇒ #define MOTHERBOARD BOARD_BIGTREE_SKR_E3_DIP
変更後

ホットエンドを交換した場合

「Configuration.h」の設定変更箇所

ホットエンドのPIDの設定

E3Dv6(クローン品含む)などのホットエンドに交換をした場合には、PID Autotune実行し、得られたPIDの値に書き換える。

PID Autotuneの実行手順
  • PrintrunやOctoPrintなどターミナル機能を備えているものとEnder-3をUSB接続する。
  • ターミナルから、「M303 E0 S200 C8」を実行してPIDの値を得る。
  • 得られたPIDの値を「M301 P? I?? D??? 」を実行して入力する(※)。
  • M500」を実行し、入力したPIDの値をEEPROMに保存する。

※ 「?」、「??」、「???」には、それぞれ、「Kp」、「Ki」、「Kd」の値が入る

変更前
  • #define DEFAULT_Kp 15.16
  • #define DEFAULT_Ki 0.97
  • #define DEFAULT_Kd 59.22
変更後
ホットエンド用温度センサーの設定

Trianglelab製E3Dv6クローン品の場合、ホットエンド用温度センサーの設定を次のように変更する。

変更前
  • #define TEMP_SENSOR_0 1 ⇒ #define TEMP_SENSOR_0 5
変更後

エクストルーダーを交換した場合

エクストルーダーをE3DのTitan(タイタン)ExtruderやBondtechのBMG Extruderといったギアードエクストルーダー(クローン品含む)に交換した場合には、ギア比に応じてエクストルーダー用ステッピングモーターのステップ数を変更する必要がある。

なお、ステップ数の求め方については、次節「ステッピングモーターを交換した場合」の中で説明しているのでそちらを参照のこと。

ステッピングモーターを交換した場合

ステッピングモーターをステップ角1.8°のものから、ステップ角0.9°のものに交換した場合には、モーターのステップ数の値を変更する必要がある。

「Configuration.h」の設定変更箇所

モーターのステップ数の設定

各部モーターのステップ数を設定する。

X、Yモーター のステップ数の求め方

360° / モーターのステップ角 × マイクロステップ数 / タイミングプーリーの円周

例)1.8°角ステップモーター、1/16マイクロステップ、 20歯・歯ピッチ2mm(2GT)のタイミングプーリーの場合、360° / 1.8° × 16 / (2mm × 20) = 80 ステップ/mm

Zモーターのステップ数の求め方

360° / モーターの ステップ角 × マイクロステップ数 / リードスクリューのピッチ

例) 1.8°角ステップモーター、1/16マイクロステップ、8ミリピッチのリードスクリューの場合、 360° / 1.8° × 16 / 8 mm = 400 ステップ/mm

Eモーターのステップ数の求め方

360° / モーターの ステップ角 × マイクロステップ数 × ギア比 / ドライブギアの円周

例) 1.8°角ステップモーター、1/16マイクロステップ、ギア比1、ギアの直径11mmの場合、360° / 1.8° × 16 × 1 / (11mm × 3.14…) = 93 ステップ/mm

私の環境では、0.9°ステップ角のステッピングモーター(マイクロステップ1/64)とエクストルーダーにBondtech社のギアードエクストルーダーである「BMG Extruder」のクローン品(ギア比3)を使用している。

変更後
モーターの回転方向の設定

必要に応じて、モーターの回転方向を逆転させておく。

変更後
モータードライバのリファレンス電圧の設定

「#define X_CURRENT」、「#define Y_CURRENT」、「#define Z_CURRENT」、「#define E0_CURRENT」の値を変更する。

TMC製モータードライバのリファレンス電圧の計算についてはこのサイトが参考になるが、簡単に言えば、以下の通りとなる。

VREF = IRMS × √2 = IMAX

  • VREF:モータードライバのリファレンス電圧
  • IRMS:電流の実効値 ( = IMAX / √2)
  • IMAX:最大電流

Ender-3の純正モーター(X、Y、Z:0.84A、E:1.0A)の場合、

  • X、Y、Z:VREF = IMAX = 0.84 V
  • E:VREF = IMAX = 1.0V

となるが、ここではさらに0.9を乗じて、

  • 0.84 V× 0.9 = 0.756 V
  • 1.0 V× 0.9 = 0.9 V

としている。

変更前
  • X、YZ:800 ⇒ 756
  • E0:800 ⇒ 900
変更後

モータードライバを交換した場合

「Configuration.h」の設定変更箇所

使用するドライバとモードの設定

静音化等を目的にLV8729や、TMCシリーズのモータードライバに交換している場合には、該当するモータードライバの設定を有効にしておく

※TMCシリーズでは、 Step-Directionモードでの動作については、ドライバ名の後ろに「_STANDALONE」がついたものを選択し、それ以外のモード(SPI、UART)では、「_STANDALONE」のつかないものを選択する。

※ここではTMC2130のSPI通信を選択

変更前
変更後

「Configuration_adv.h」の設定変更箇所

モータードライバの電圧の設定

詳細は、ステッピングモーターを交換した場合の同項目を参照。

SPIモードの設定

TMC2130TMC5160でSPIモードをしない場合には設定不要。

変更前
  • コメントアウト解除
変更後
センサーレスホーミング

TMC2130TMC2209といったセンサーレスホーミングに対応したモータードライバを使用する場合、センサーレスホーミングの設定を有効にしておく。

変更前
  • コメントアウト解除
変更後

センサーレスホーミングの感度の設定はデフォルトの8前後にしておけば、特に問題ないように思う。

なお、Zモーターのセンサーレスホーミングに関しては、BLTOUCH互換品を使用するつもりなので無効にしている。

  • #define X_STALL_SENSITIVITY 8 ⇒ #define X_STALL_SENSITIVITY 7
  • #define Y_STALL_SENSITIVITY 8 ⇒ #define Y_STALL_SENSITIVITY 7
変更後

センサーレスホーミングを有効にする場合、HOME_BUMPを0にするよう推奨されているので、その通りにしておく。

  • #define X_HOME_BUMP_MM 2 ⇒ #define X_HOME_BUMP_MM 0
  • #define Y_HOME_BUMP_MM 2 ⇒ #define X_HOME_BUMP_MM 0

また、各エンドストップ(MIN側)のCOM(ground)とNC(Signal)を逆転させておく。

変更前
  • false ⇒ true
変更後

さらに、各エンドストップ(MIN側)をプルアップさせておく。

変更前
  • コメントアウト解除
変更後

まとめ

管理人:

コメントを見る (22)

  • 最近Ender-3を購入したのですが、こちらのボードを使ってオートレベリングは可能でしょうか?

    • オートレベリング用のセンサーが必要になりますが、可能です。このボードでオートレベリングを追加する方法について、後ほどこの記事に追記します。

      • 返信ありがとうございますmm
        ではそちらの記事を参考にオートレベリングの追加に挑戦してみようと思います!

  • はじめまして。あまりのマニアックぶりに圧倒されました!
    32bit化の効果はどうでしたか?
    私は6月にsnpamaker2.0をポチったんです。
    でも届くのは来年3月なのでそれまでの練習用にEnder-3を購入しました。
    面白い記事ばかり掲載されていますね。
    またお邪魔します。

    • 32bit化してたことによる恩恵は印刷面に関しては特に感じていません。
      ただ、Marlinファームウェアの書き換えをSDカード経由でできるようになり、いちいちPCと3Dプリンタを直接接続する必要がなくなったのが便利に感じています。
      あと、Marlinファームウェアの更新は1.1.xよりも2.0.xのほうが更新頻度が高いので、32bit化はしておいたほうがいいように思います。

      • 印刷品質に効果が感じられないのは残念でしたね。
        でも、確かに無線が使えるのは便利ですね。
        私はpcとプリンタの設置場所が異なるので部屋の行ったり来たりが面倒です。

        • こんばんは。
          ご存知かもしれませんが、
          BigTreeTech SKR mini E3
          という32bitのコントロールボードを知りました。
          滑らかで動作音も静かだそうです。
          Ender3専用で手間なく交換できそうだったので今日ぽちってしまいました。

  • 2か月前にEnder-3Proを購入し、32bitボードへの交換と3DTouchセンサー追加にて貴重な情報を参考とさせて頂いています、ありがとうございます。
    さて、本ページの3DTouchセンサーコネクタ信号並びが現物基板と異なっており、+5VとGNDが入れ違っております。
    こちらの画像を参考に配線したところ、3DTouchを昇天させてしまいました。
    慌てて買いなおし、コネクタ信号を確認して上記に気が付いた次第です。
    被害が広がりませんよう、お手数でも対処をお願いいたします。
    (ちなみに、メーカーサイトGitHubの説明図も同様に入違っておりましたのでメーカーにも連絡しておきました。)

    それにしても3Dプリンタは楽しいですね!またいろいろと参考にさせて頂きます!

    • 情報をいただきありがとうございます。
      該当箇所の記事の内容を変更いたしました。

  • 素人質問ですいません!
    モータードライバ交換する際、TMC2208を使用しようか考えてるのですが、リファレンス電圧の設定でMarlinでの設定以外にもモータードライバ本体のポテンショメータでの設定も必須ですよね?

    • 必須かどうかは分かりませんが、ハードウェア上(ドライバ本体)とソフトウェア上(ファームウェア)の両面で設定しておくのが確実だと思います。

  • Hi Admin, is there any way to contact you in private? I would need some help if it were possible with the TMC5160 drivers. Thanks so much

  • 大変参考になります。
    質問お願いします。
    最終段階のコンパルエラーで苦戦しています。
    エラーコード
    #error "Oops! Select 'Sanguino' in 'Tools > Boards' and 'ATmega644P' or 'ATmega1284P' in 'Tools > Processor.'"

    これはどちらかを選択しないとダメなのでしょうか?
    素人なのですみません。

  • BMGで検索してたら、またもこちらにたどり着いてしまいました。
    1年以上前に試されてるんですね。
    使用感はどんな感じでしょうか。
    目に見えて品質は変わりますでしょうか?
    今日注文したばかりなのですが到着が楽しみです。

    • BMGタイプのエクストルーダーは2つのギアによってフィラメントを両タイプから挟み込む形で、
      ギアが1つのタイプのエクストルーダーと比べると、フィラメントの押し出しや引き戻し(リトラクション)がより精緻に行えるようになるため、
      糸引きに関して大きく違いが出てくると思います。

      • ありがとうございます。
        実はダイレクトタイプかと思ってぽちったのですが、ボーデンタイプでした。
        でもギア2個の効果があるのですね。違いがあるといいなぁ。

        • 私の書き方が悪く誤解を招いてしまったかもしれませんが、
          BMGエクストルーダーは、ダイレクト方式でもボーデン方式でもどちらでも使えます。

          ダイレクト方式で使ってる動画
          ・3D Print 200% FASTER on CR-10S w/ BondTech Extruder + HotEnd (Step by Step) - Upgrade Install [2020](Bondtech BMG + CR10-S
          https://youtu.be/qzI6V3xfYpc?t=576

          ・BMG dual drive extruder on Creality CR-10 3d printer(クローンBMG + CR-10
          https://youtu.be/he-LrpDTUPc?t=633

          ボーデン方式で使ってる動画
          ・Bondtech BMG on Ender 3 Pro(Bondtech BMG + Ender 3 Pro
          https://youtu.be/PzY2ABrrynA?t=186

          ・Trianglelab BMG Extruder - Installation & Tests(クローンBMG + Ender 3
          https://youtu.be/oRpGCAuaZ9M?t=294

          • ありがとうございます。
            実はまだやってないんです。
            ダイレクトエクストルーダーは頭でっかちになってしまいますね。私にも難易度高そうです。
            4つ目のリンクが、そのまんま使えそうなので、これを試してみたいと思います。