大陸間弾道ミサイルからサバの味噌煮定食まで、何でも作れる最強メーカー、ハピマファクトリーへようこそ!

ANYCUBIC i3 MegaのモータドライバをTMC2208に交換+CFWを導入して静音化&高精度化

はじめに

f:id:happy__mountain:20191230173653j:plain
こんにちは。ハッピーマウンテンです。

以前、激安中華3DプリンタのANYCUBIC i3 Megaを買ったのですが、印刷中の音が大きく、夜中には使えないという欠点がありました。積層型の3Dプリンタは印刷に時間がかかるので、夜中でも使えるようにモータドライバを交換して静音化しようと思います。

 

 

モータドライバの選定

i3 MegaにはモータドライバとしてAllegro社のA4988が使用されています。

このモータドライバは安い3Dプリンタでは定番らしいのですが、ステッピングモータの制御の精度があまり高くないらしく、駆動時に特有の「ピーガガガガ…」という音がします。この現象を「コギング」といい、精度の良いモータドライバを用いるとある程度は抑制できるそうです。

そこで、精度が高いと評判のTrinamic社のモータドライバであるTMC2208を用いることにしました。i3 Megaの制御基板にも対応しています。

 

このモータドライバには「SpreadCycle」や「StealthChop2」といったモードがあり、静穏性とトルクに違いがあります。

  • SpreadCycle

このモードは静穏性よりトルクを重視したモードで、高速でステッピングモータを動かすことができます。トルク重視とはいっても、A4988に比べるとコギング音はかなり減ります。

  • StealthChop2

このモードは静穏性を重視したモードで、トルクが控えめな代わりにかなり静かになります。

 

 Trinamic社のモータドライバはほかにも数種類あります。その中でもi3 Megaが対応しているのは、TMC2100や、TMC2130などです。主な違いは通信方法で、以下のページにわかりやすく載っています。

一番手軽に扱えるのはTMC2100です。各モードの設定をジャンパだけで行えます。TMC2208ではStealthChop2モードはジャンパで設定できますが、SpreadCycleモードはUARTでPCから設定してやる必要があるようです。TMC2100買えばよかった…

今回はSpreadCycleモードでいきたいので、PCからUSB-シリアル変換器を用いてTMC2208に設定を書き込んでいきます。

 

接続と書き込み

書き込みや設定に必要なものは以下になります。

  • TMC2208ドライバ基板
  • USB-シリアル変換機(FT232RLを搭載したものが無難)
  • 1kΩ抵抗
  • USBケーブル
  • ブレッドボードなどの配線するもの
  • テスターなどの電圧を測る器具

今回は、ドライバ基板をAliExpressで購入しました。i3 Megaは5軸なので、最大で5個必要になります(移動量の多い軸だけ変えるとかでもOK)。5個で2000円強くらいです。

上記のドライバ基板のピン配置などはこちらに記載されています。

 

先程も述べましたが、StealthChop2モードで運用する場合はPCからの書き込みは不要です。MS1ピンとMS2ピンを下記のように繋げるだけで設定できます。基本的にはステップ数は1/16にしておけばよいと思います。

MS1 MS2 ステップ数 ステップ補完 モード
GND VIO 1/2 1/256

StealthChop2

VIO GND 1/4 1/256

StealthChop2

GND GND 1/8 1/256

StealthChop2

VIO VIO 1/16 1/256

StealthChop2

SpreadCycleモードで運用したい場合はPCから設定を書き込む必要があります。

 

では実際に書き込んでいきましょう。まず、書き込むためのツールと、書き込みデータが必要です。

書き込みツールはScriptCommunicatorを用います。これは、スクリプトを用いてシリアル通信を行うことができるターミナルソフトウェアです。ダウンロード、インストールしておきます。

書き込むスクリプトは、下記からダウンロードします。ScriptCommunicatorディレクトリに入っている、「TMC2208.scez」というファイルがそれです。

 

PCと接続

ダウンロードが終わったら、PCとTMC2208を接続します。今回使用するドライバ基板は、UARTピンの位置がジャンパで選択できるようなので、図のようにジャンパを半田付けして短絡させます。UARTピンの位置はどちらでもいいらしいですが、今回は上側にしました。

f:id:happy__mountain:20191229035233p:plain

 

次に、ブレッドボードなどを用いて、USB-シリアル変換器とTMC2208を以下のように配線します。

f:id:happy__mountain:20191222013225p:plain

ここで気を付けることは、USB-シリアル変換器側の電源は必ず5Vにすることです。3.3Vと間違えないようにしましょう。実際に接続すると以下のようになります。

f:id:happy__mountain:20191230025227j:plain

 

配線できたら、PCとUSBケーブルで接続します。接続後、「コントロールパネル」→「デバイスとプリンター」からUSB-シリアル変換器が認識されているか確認します。プロパティを開き、「ハードウェア」タブからポート番号も確認しておきましょう(今回はCOM3となっています)。

f:id:happy__mountain:20191229151655p:plain

 

設定の書き込み

接続ができたら、先程ダウンロードした「TMC2208.scez」をダブルクリックして開きます。すると、以下のようなウインドウが出てきます。

f:id:happy__mountain:20191229234058p:plain

 

まず、ポート番号の設定を行います。先程確認したポート番号を選択し、「Connect」をクリックします。これでTMC2208との通信が可能になります。
f:id:happy__mountain:20191229145141p:plain

 

次に、「OTP Programmer」タブを開きます。OTP Programmerは、TMC2208内のOTPメモリに設定を書き込むモードです。TMC2208はUARTで設定を行えますが、電源を切ると消えてしまいます。そこで電源を切っても消えないOTPメモリに設定を書き込みます。ただし、OTPメモリは1回しか書き込みを行えず、書き込みを間違っても直すことができません。なので、書き込む際は十分注意しましょう。

まずはSpreadCycleモードの設定を行います。「OTP Programmer」タブ内の、「OTP BYTE」の値を2に、「OTP BIT」の値を7に変更します。すると下部に「Name: otp2.7」と表示されるので合っているか確認して「Write 1-bit to OTP memory」をクリックします。すると確認ダイアログが2回出るので両方OKすると書き込み完了です。

f:id:happy__mountain:20191229235701p:plain

 

次にTOFFの設定を行います。「OTP BYTE」、「OTP BIT」ともに1に変更し、先程と同じ通りに書き込めば完了です。

f:id:happy__mountain:20191230000301p:plain

 

書き込み後、「Register Settings」タブを開き、「Read all Registers」をクリックしてレジスタの値を更新します。その後「OTP_READ」を確認して「OTP_EN_SPREADCYCLE」が0x1、「OTP_PWM_GRAD」が0x2になっていれば正常に書き込みができています。TMC2208とPCの通信は上部の「Disconnect」をクリックすれば終了されます。

f:id:happy__mountain:20191229153654p:plain

あとはこの書き込みをすべてのドライバに対して行えば設定完了です。

 

3Dプリンタへ取り付け

ドライバの設定ができたので、i3 Megaに取り付けていきます。ドライバ基板にヒートシンクを貼り付けておきましょう。

i3 Megaのマザーボードへは本体底面カバーを開けるとアクセスすることができます。ドライバの上にファンが取り付けられているので、外します。外すと以下のようにマザーボードが見えます。

f:id:happy__mountain:20191230023145j:plain

左にある赤い基板がドライバ基板です。これをTMC2208に換装します。マザーボード側にピン配置が書かれているので、取り付けの方向を間違わないようにしましょう。

 

カスタムファームウェアの導入

次にカスタムファームウェアを導入します。i3 Megaの場合、モータドライバをTMC2208に換装するとモータの回転方向が逆になってしまいます。これ自体はモータのコネクタを逆に差し込めばよいのですが、折角なのでカスタムファームウェアを導入しましょう。

上記リンクからファームウェアをダウンロードします。使用するのは「Marlin-Ai3M-(バージョン)-TMC2208.hex」というファイルです。もしモータのコネクタを逆に差している場合は「Marlin-Ai3M-(バージョン)-TMC2208_reversed.hex」を用います。

次にPCとi3 MegaをUSBで繋ぐためのドライバを、こちらからダウンロードします。デフォルトのファームウェアもついでにダウンロードしておけば、いつでも元に戻すことができます。

マザーボード上の電源を切り替えるジャンパーを、DC電源からUSBに変えます。これでUSB電源で動作できるようになります。

f:id:happy__mountain:20191230034345p:plain

PCとUSBケーブルで接続しファームウェアを書き込みます。書き込みにはCuraを用います。「設定」→「プリンター」→「プリンターを管理する…」→「ファームウェアアップデート」→「カスタムファームウェアをアップロードする」で書き込みができます。

書き込み後、Curaの「モニター」タブからi3 Megaにコマンドを送ります。「G-codeを送る」欄で「M502」と入力しエンターキーを押します。その後同じように「M500」を入力し送信すればカスタムファームウェアの導入は完了です。ジャンパーをDC電源に戻してUSBケーブルは抜いておきましょう。

 

Vrefの設定

カスタムファームウェアが導入できたら、Vref電圧の設定を行います。Vref電圧が高いほどモータのパワーを上げることができますが、ドライバの発熱も大きくなり、脱調の原因となります。

テスターを以下のように接続し、i3 Megaの電源を入れ、可変抵抗をドライバで回してVrefを調整します。Vrefの値は0.9~1.0[V]くらいにすると良いようです。

f:id:happy__mountain:20191230030506p:plain

Vrefをすべて設定し終えたら、ファンと背面カバーを元に戻して換装完了です。お疲れ様でした。

 

おわりに 

今回は3Dプリンタのモータドライバを換装しましたが、換装後はかなり静かになりました。多少の駆動音はしますが、「ピー」という耳障りな音がなくなり、ファンの方がうるさい程までには静穏化できました。

現状は若干冷却不足を感じるのと、ファンがまだうるさいので、今後はファンを換装し静穏化と性能向上を目指していきたいと思います。

ご覧いただきありがとうございました。

©2019-2021 Hapima Industrial, All rights reserved.