ANYCUBIC i3 Mega-S にTMC2208を取り付ける

オートレベリングの導入後、特に不満もなく使ってきた3Dプリンタ(ANYCUBIC i3 Mega-S)だが、動画サイトに見る3Dプリンタに比べ、動作音の大きいことが気になりだした。そこでモータードライバを TMC2208 に交換した。結果は効果絶大で、別物と思えるほど静かな3Dプリンタになった。

TMC2208 について WEB検索してみると、その使い方として、(1) スタントアロンモード(Standalone mode)と (2) UARTモード(Universal Asynchronous Receiver/Transmitter mode)の2種類あることが分かった。

スタンドアロンモードは、あらかじめドライバボードの動作を設定しておき、ソケットに挿されている既存のドライバボードと挿し替えるだけなので、交換は容易である。ファームウェアを変更する必要はあるが、設定ファイルを数行編集するだけだ。ただ、電流値を変更する際は、その都度3Dプリンタの裏蓋を外し、ドライバボードの電圧を計測しながら可変抵抗器を調整するのが面倒である。それと、励磁方式を変えてしまうと元の励磁方式に戻すことができないのが難点だ。

一方、UARTモードは、 Gコードによって励磁方式や電流値を設定することができるので、明らかに使いやすい。しかし、配線を追加し、配線に合わせたファームウェアのビルドが必要になる。

UARTモードによるANICUBIC i3 Mega-S の運用方法をWEB検索してみた。スタンドアロンモードの記事は見つかるものの、UARTモードでの運用記事は見つからない。交換作業は困難を伴うだろうが、運用の利便性を追求してUARTモードで使うことにした。

※ご注意:投稿内容はボードの改造が含まれますので、こちらを一読ください。

 

UARTに必要なリソース

UART には送受信用に2本のポートが必要である。ANYCUBIC i3 Mega-S には、ステッピングモーターが5個あるのでの、10本のポートが必要になる。さらに、受信ポートにはピン変化割込(PCINT)かハードウェアシリアルが必要である。
TRIGORILLA 上のピン割り当ては下図を参照した。この情報を元に下表のとおりピンを割り当てることにした。

図1.TORIGORILLAの標準ピン割り当て図

設定するピン割り当て表

 

 

コントローラ(TORIGORILLA)の改造

上図 Servo Ports(1) のピンヘッダが付いていないピン(D4・D5・D6・D12)にピンヘッダをハンダ付けする。

ピンD18・D19は図1のとおり HUB(11) のコネクタに接続されており、これをUARTで使用するための改造が必要になる。ライザカードとコントローラを接続するピンのうち Limit Switches(9) の D18・D19 のソケットを外し、ライザカードと縁切りする。

縁切りした端子を別のピンに振り替えるため、ピンヘッダをハンダ付けする。

QIコネクタとリード線で配線を振り替える。

 

 

コンデンサーの除去

配線完了後、ピンD66 だけ受信が出来ない現象が生じた。原因を探るため、Arduino MEGA2560 に Marinファームウェアをインストールしてみた。Arduino では通信できたので、TRIGORILLA との違いを追ってみた結果、TRIGORILLA にはピンD66 と GND の間にコンデンサーが接続されていた。コンデンサーが信号を平滑にしているのではないかと考え、ピンD66 に接続されているコンデンサーを除去した結果、通信できるようになった。

 

 

TMC2208ドライバボードの改造

下図のとおり、UARTのソケット側のピンを切除する。ソケット側の配線が他のピンと接続されているので、切り離すのが目的である。

 

 

TMC2208ドライバボードとTRIGRILLAの配線

TMC2208ドライバボードとTRIGORILLAの配線は下図のとおりである。
送信はダイレクトに、受信は1kΩの抵抗を介して接続を行う。


Marlinファームウェアのビルド

ファームウェアはMarlin Firmwareを使用した。marlinfw.orgダウンロードページから“Marlin-bugfix-2.0.x.zip”と“Configurations-bugfix-2.0.x.zip”ファイルをダウンロードして使用した。設定ファイル“Configuration.h” と “Configuration_adv.h” は “Configurations-bugfix-2.0.x.zip\Configurations-bugfix-2.0.x\config\examples\AnyCubic\i3 Mega”  フォルダ下のファイルを用いる。下記のファイルを編集し、platformIO でビルドした。


Configuration.h の編集

  26: #define I3MEGA_HAS_BLTOUCH    // -> enable
  27: #define I3MEGA_HAS_TMC2208    // -> enable
 737: #define Z2_MIN_ENDSTOP_INVERTING true // -> add line
 762: #define ALL_DRIVERS_TYPE TMC2208   // TMC2208_STANDALONE -> TMC2208
 849: #define DEFAULT_MAX_ACCELERATION  { 2000, 2000,  60, 10000 }  // org.{ 3000, 2000,  60, 10000 }
 865: #define DEFAULT_RETRACT_ACCELERATION  2000   // 3000 -> 2000
 866: #define DEFAULT_TRAVEL_ACCELERATION   2000   // 3000 -> 2000
1082: #define NOZZLE_TO_PROBE_OFFSET { 0, -22, -2.78 }  // { 0, -23, -1.54 } -> { 0, -22, -2.78 }
1134: //#define EXTRA_PROBING    1  // -> commentout
1219: #define INVERT_X_DIR false // true  -> false
1220: #define INVERT_Y_DIR true  // false -> true
1221: #define INVERT_Z_DIR true  // false -> true
1226: #define INVERT_E0_DIR true   // false -> true


Configuration_adv.h の編集

2752: // #define MONITOR_DRIVER_STATUS // -> commentout
2767: #define HYBRID_THRESHOLD // -> enable
2849: #define TMC_DEBUG // -> enable
4010: #define PINS_DEBUGGING // -> enable


pins_RAMPS.h の編集

 68: #define SERVO0_PIN         4  // 11 -> 4 for BLTouch
 72: #define SERVO1_PIN        -1  // 6 -> -1
 75: #define SERVO2_PIN        -1  // 5 -> -1
 78: #define SERVO3_PIN        -1  // 4 -> -1
102: #define Z_MIN_PIN         20  // 18 -> 20
105: #define Z_MAX_PIN         21  // 19 -> 21
174: #define MAX6675_SS_PIN    -1  // 66 -> -1
312: #define X_HARDWARE_SERIAL Serial1   // add line PIN 18,19
319: #define E0_HARDWARE_SERIAL Serial2  // add line PIN 16,17
330: #define X_SERIAL_TX_PIN   18  // 40 -> 18
333: #define X_SERIAL_RX_PIN   19  // 63 -> 19
343: #define Y_SERIAL_TX_PIN    5  // 59 -> 5
346: #define Y_SERIAL_RX_PIN   11  // 64 -> 11
356: #define Z_SERIAL_TX_PIN    6  // 42 -> 6
359: #define Z_SERIAL_RX_PIN   12  // 65 -> 12
362: #define Z2_SERIAL_TX_PIN  37  // -1 -> 37
365: #define Z2_SERIAL_RX_PIN  66  // -1 -> 66 remove Condenser
369: #define E0_SERIAL_TX_PIN  16  // 44 -> 16
372: #define E0_SERIAL_RX_PIN  17  // 66 -> 17


pins_TRIGORILLA_14.h の編集

118: #define FIL_RUNOUT_PIN  21    // 19 -> 21

通信状態の確認

ANYCUBIC i3 Mega-s と PC を USB で接続すると、ターミナルに次のとおりレスポンスがある。着色行のとおり “OK” の表示があれば TORIGORILLA と TMC2208 の通信が正常に行われている。

> start
> Marlin dir bugfix-2.0.8
>
> echo: Last Updated: 2021-05-27 | Author: (none, default config)
> echo:Compiled: May 27 2021
> echo: Free Memory: 1106  PlannerBufferBytes: 1312
> TFT Serial Debug: Main board reset... J17
> TFT Serial Debug: Ready... J12
> TFT Serial Debug: Finished startup      
> //action:notification Anycubic i3 Ready.
> echo:V83 stored settings retrieved (789 bytes; crc 23743)
> //action:prompt_end       
> Testing X connection... OK
> Testing Y connection... OK
> Testing Z connection... OK 
> Testing Z2 connection... OK
> Testing E connection... OK 
> echo:SD card ok

TMC2208 がどのように設定されているか詳細を確認するには Gコード M122 を送信する。

M122
>          X       Y       Z       Z2      E
> Enabled          false   false   false   false   false
> Set current      800     800     800     800     800
> RMS current      795     795     795     795     795
> MAX current      1121    1121    1121    1121    1121
> Run current      25/31   25/31   25/31   25/31   25/31
> Hold current     12/31   12/31   12/31   12/31   12/31
> CS actual        12/31   12/31   12/31   12/31   12/31
> PWM scale
> vsense           1=.18   1=.18   1=.18   1=.18   1=.18
> stealthChop      true    true    true    true    true
> msteps           16      16      16      16      16
> interp           true    true    true    true    true
> tstep            max     max     max     max     max
> PWM thresh.      98      98      658     658     65
> [mm/s]           100     100     3       3       30
> OT prewarn       false   false   false   false   false
> pwm scale sum    14      14      14      14      14
> pwm scale auto   0       0       0       0       0
> pwm offset auto  36      36      36      36      36
> pwm grad auto    14      14      14      14      14
> off time 3       3       3       3       3
> blank time       24      24      24      24      24
> hysteresis
>  -end            -1      -1      -1      -1      -1
>  -start          1       1       1       1       1
> Stallguard thrs
> uStep count      8       8       8       8       8
> DRVSTATUS        X       Y       Z       Z2      E
> sg_result
> stst
> olb
> ola
> s2gb
> s2ga
> otpw
> ot
> 157C
> 150C
> 143C
> 120C
> s2vsa
> s2vsb
> Driver registers:
>          X       0xC0:0C:00:00
>          Y       0xC0:0C:00:00
>          Z       0xC0:0C:00:00
>          Z2      0xC0:0C:00:00
>          E       0xC0:0C:00:00
>
>
> Testing X connection... OK
> Testing Y connection... OK
> Testing Z connection... OK
> Testing Z2 connection... OK
> Testing E connection... OK
> ok

TMC2208 の設定に関わる主な G-code は次のとおり。
M122:ドライバーの現在の設定を返す
M350:マイクロステップの設定
M569:stelthChop と SpreadCycle を切り替え
M906:ステッピング モーターの電流をミリアンペア単位で設定


シェアする

  • このエントリーをはてなブックマークに追加

フォローする

コメント

  1. pXn Emerica より:

    Appreciated.