ANYCUBIC MEGA-S 静音ステップモータードライバーへ交換の巻①
いよいよお待ちかね、静音ステップモータードライバーに交換したいと思います。
これで深夜でも動かせるようになるのでいろいろとはかどるはず。
え?ホーミングはどうなったか? 一応納得の行く所までたどり着きました。動画でご覧下さい。(30秒から動作開始です。) マップはEEPROMに持っていて、四隅を測定してマップの合わせ込みを行っています。
インダストリアルなサウンドが鳴り響きますね。
静音ドライバーへの交換ですが、ストック状態のMEGA-S各軸のステッピングモーターがどの位の電流で動作しているのかを把握して、交換後も同じ電流値に合わせる作業が必要です。
インターネット上では「何Vに設定する」とか「ここでは何Vが推奨されている」とかの情報はあるのですが、実際に測定して計算しているサイトに巡り合わなかったので実際に計算してみる事にしました。
電流値は Vrefの測定を行い計算する事で求まります。 計算にはセンス抵抗の値も必要なので A4988のヒートシンクを剥がして確認しました。
100mΩ(0.1Ω)ですね。
各軸の Vref の測定結果から下記の計算式で Imax(最大電流)を求めた結果に、1/√2を乗ずると定格電流Irmsを算出できます。
ストック状態での測定結果と計算結果一覧です。
軸名 計測値 → 定格電流(最大電流)
X軸 0.9V → 795mA (1125mA)
Y軸 1.027V → 905mA (1284mA)
Z軸1 0.936V → 827mA (1170mA)
E軸 0.780V → 689mA (975mA)
Z軸2 0.919 → 813mA (1148mA)
Marlinの Serialでの設定のデフォルト値が800mAなので妥当なところだといますが軸によっても結構違います。 Y軸が電流値が一番高いですがガラスベッドが重たいので何となく理解できます。 Z軸も割と大きい値に成っていますね。何でしょう?瞬発力がいるんですかね?
バラツキを考えれば、基本は800mA(XZ軸)、重たい軸は900mA(Y軸)、軽い軸は700mA(E軸)、そんな感じで調整されているのかも知れませんね。
次にTMC2208へ設定する Vrefの値ですが、こちらもまたセンス抵抗の値が必要になります。今回使用したモジュールのセンス抵抗は110mΩでした。
電流値は下記の計算で求まります。
このままでは計算がし難いのでVvrefを左辺に持っていくのに式を変換すると、
Vvref = 目標電流値 IRMS(A) / (325/(150+30))*(1/√2)*(1/2.5)
Vvref = 目標電流値 IRMS(A) / 0.510688231
となりますので、式に当てはめた算結果一覧です。
X軸 0.795A → 1.211V
Y軸 0.905A → 1.378V
Z軸1 0.827A → 1.260V
E軸 0.689A → 1.506V
Z軸2 0.813A → 1.238V
~ お詫び ~
この計算結果の記事は過去から修正しています。
以前間違った計算結果を載せていましたのでお詫びします。
センス抵抗が110mΩの場合の一覧 参考データ
0.6A 0.914V
0.7A 1.107V
0.8A 1.218V
0.85A 1.295V
0.9A 1.371V
1.0A 1.523V
センス抵抗が150mΩの場合の一覧 参考データ
0.6A 1.175V
0.7A 1.371V
0.8A 1.565V
0.85A 1.664V
0.9A 1.762V
1.0A 1.958V
取り付けの向きはボリュームを見ると一見逆方向に見えますがこれで正解です。GNDピンの位置を確認して取り付ければ良いと思います。
基盤にセットしてVrefを設定して印刷を開始してしまえばモーターは逆転になりますがこれだけで動作してしまいます。デフォルトの設定であればA4988のように振舞えるようになっているんですね。
ちなみに A4988の MS3ピンに対応する TMC2208のピンは PDNピンに成っていて下記の機能のON-OFFが割り当てられています。
1.7自動停止パワーダウン
自動電流削減により、アプリケーションの消費電力と冷却要件が大幅に削減されます。 デフォルトでは、PDN_UART入力ピンをGNDに接続することにより、静止電流の低減が有効になります。 実行電流の半分よりわずかに多くなることにより、停止電力損失を33%未満に削減します。
こちらはファームウェアではOFF(5V)に設定されているようです。電流を高めに使用していて熱で困っている場合は使って見るのも良いかも知れません。(ピンを切ってGNDに繋ぐ)
ファームウェアはモーターの正転逆転の設定だけを入れ替えておけば大丈夫です。TMC2208_STANDALONE とか設定出来るようになっていますが、内部的には何もしてないと思います。
1326 #define INVERT_X_DIR false
1327 #define INVERT_Y_DIR true
1328 #define INVERT_Z_DIR true
1336 #define INVERT_E0_DIR true
X軸とY軸の設定電流が違うのが何か気持ち悪いですが、X軸にエクストルーダーを載せて、Y軸との重量を合わせたうえで設定電流を揃えるのが印刷にいい結果をもたらしそうです。(Y軸のダイエットも当然ですが、)
換装後の動画はこちらです。初めの動画と見比べて頂けるとわかりやすいと思います。
試運転をしましたが、A4988特有の鱗文様は見事に消えました。ただ、縦溝?木綿豆腐感は消える事がありませんでした。
ステッパーを交換すれば良くなるのかもと思っていたのですが残念です。 これは何が原因なのでしょうか?考えられるのは Timer/Counterで発生させるPulseにCPUが介入するタイミングで揺らぎが発生するのか...?ベルトの凸凹が影響しているのか? 原因はXY軸なのかE軸なのか? 次回はPulseを発生させる必要のない Serial接続を行って色々確認してみたいと思います。
今回のポン付け交換では StealthChop™モード、16microstep に固定されてしまっていますが、3Dプリンターにおける静音ステッパーの利点の95%は利用出来ているようなので、E軸に問題が出ていなければ無理して Serial接続する必要もないかと思います。
スッテプモータードライバーの選択ですが、TMC2208 の許容される電流値は 1.4Aなので電流アップとかしなければ十分使用できます。TMC2209 は2.0Aまで対応ですので余裕があり発熱も少なく済みます。
これは半導体のオン抵抗の違いから来ていて TMC2208が 280mΩ、TMC2209が 170mΩとなっているので2209の方が発熱が少なく耐性が高くなっています。これだけでも選択する理由になりそうですが2209はセンサーレスホーミングが有名です。これは StallGuard™ という機能を使用しているようでが CoolStep™も2209にしか載っていない有用な機能のようです。
https://www.trinamic.com/technology/motor-control-technology/stallguard-and-coolstep/
これを知っていればTMC2209を用意したのですが、調べる前に買ってしまったので今回はTMC2208を使用しました。TMC2225は2208のパッケージ違いで面積が大きく成っているので放熱に有利に成っています。(TMC2225はBabystep64が標準になるのでFWの調整は必須になります。)