ロボマスモーター(M2006)を自作ドライバで回す

 どうもこんにちは。さばねっこです。

 

 突然ですが皆さん、ロボマスモーターは使っておりますでしょうか。

m.dji.com

m.dji.com

 最近のロボコン界隈でのロボマスモーターの流行り具合は凄まじいですよね。
 先日の学生ロボコンも、強いチームは大体採用している印象でした。昨年の高専ロボコンでもいくつかのチームが採用していましたね。今年はどうなることやら。

 このロボマスモーターの何がいいって、機械的に見ても制御的に見ても、レベルの高い合格点を超える性能をオールウェイズ出してくれるところですよね。

 このサイズ感で連続1Nm出るんですよ。頭おかしいんじゃないの。

M2006

 しかもめっちゃ小さくて安全性の高い専用ドライバまで販売されています。これは採用しない理由がない。

 

 

 ……でも高いのよ……。

 まとまった予算があればいいのですが、ABチームが完全に別予算なクソ状況の弊学高専ロボコン界において、導入はかなり難しい。

 というわけでドライバを自作することにしました(???)。

 

 まあ実際にはOBの方に、「モーターは買ってあげるけどドライバは自分で用意してね♡ もしくは高専ロボコン地区大会で優勝してね♡♡(意訳)」という試練を課されたからです。何故。

 

 というわけでやっていきます。

 

ドライバの用意

 まずドライバ回路を用意するわけですが、実はたまたま暇つぶしにBLDCドライバを設計していたのでこれを使います。

github.com

 ※mainブランチ(実際に発注した基板)はミス多すぎワロタで死んでるので参考にするならver2_devブランチの方でお願いします。

 

 4層基板でJLCPCBでPCBAしてもらいました。一枚当たりの部品はコネクタ抜きで5ドルくらいに収まりました。最高です。
 一応連続20Aぐらいのつもりです。でもGNDパターンがカスなので微妙。まあ設計しなおして再発注するつもりなので…。

 あ、そういえば電源入力のコネクタにXT30(2+2)を採用してみました。電源とCAN信号を一つのコネクタでやり取りできます。めっちゃ便利でおすすめ。

XT30(2+2)

 まあ入手性は割とゴミなんですけどね。僕はアリエクで入手しました。

https://ja.aliexpress.com/item/1005003667387663.html?spm=a2g0o.order_detail.order_detail_item.5.5fbf16912J76b8&gatewayAdapt=glo2jpn

 

 パワー系の回路は問題なく動作したのでとりあえずOKです。

 

ロボマスモーターのエンコーダー

コネクタ

 ロボマスモーターを自作ドライバで回すうえでの一番の障壁ってエンコーダのコネクタですよね。そうだよね。

エンコーダーのコネクタ

 全く見たことのないコネクタだったので探さないといけません。

 まあでも、こういう圧着端子はJST製と相場が決まっているので取り合えずカタログから探します。1.25㎜ピッチのロック付きで絞り込むと…

www.jst-mfg.com

 …これやん。

 というわけでGHコネクタでした。あっさり見つかってよかった。

 DJIレベルの企業ならワンチャン独自コネクタ…?とも思ったのですが汎用品で助かった。JSTすごいですね。

出力形式

 コネクタが見つかったのはいいですが、まだ肝心のエンコーダーの出力形式がわかりません。というのも4本の信号線の内、2本が電源で信号線は残りの2本だけなんですよね。

 一般的なホールセンサなら3本の信号線になるはずなのでとても謎。

 というわけでオシロで見てみました。

 まだコネクタが届いていなかったので無理矢理接続します。

 まさかのアナログ出力。出力が90度ずれているので、ローターの電気角に対するsinとcosが出力されているようです。

 赤がエンコーダー出力(正規化済み)で、橙がPWM角に対するsinです。
 モーターはめちゃめちゃゆっくり回しているのでPWM角はほぼローター電気角のはず。

  ベクトル制御をする際にpark変換という変換をするわけですが、そこで電気角に対するsin、cosが必要になります。いちいち計算しなくてもこのエンコーダー値を正規化するだけでいいので最高ですね。
 park変換する程度であればこれくらいの精度でも多分大丈夫。

 角度を知りたくなったらarctanしないといけないので演算が遅くなって面倒ですが…。

 ただ、エンコーダがアナログ出力というのは想定していなかったので、無理矢理エンコーダーコネクタをアナログ入力に対応させます。

 ちなみに、もともとこのエンコーダーポートは、インクリメンタル、SPI、I2Cなどの様々なインターフェイスを使用できるように設計していたのですが、この改造でさらに意味わかんない感じになってしまいました。

 ホールセンサ/ABX/SPI/I2C/ADC/UARTが使える超マルチポートでございます。
 意味が分からない。 

回す

 ここまで来ればあとは適当にdq電流をPIDするだけですね。

なぜか激ヤバゲインで回してる動画しかなかった()。本当はもっと静かに安定して回せます。

 

 

 まあ、あとはいい感じにゲインなどを調整して通信系を整えるだけなので大したことはないと思います。これから頑張る(頑張るとはいっていない)。

 

 エンコーダーの出力が想定外でしたが、それ以外は普通に回すだけだったのでベクトル制御の経験があればそれほど難しくは無いと思います。

 専用ドライバのC610は4500円もするので作る価値は…。面倒だし信頼性も微妙なのでC610/C620を買うべきですね。

 

結論:金があるなら純正買え

(あ、このドライバは完全に趣味なので弊学ロボコン部が使うことは多分ないです。後輩の皆さんは純正買って幸せになってください。)

 

追記

 なんか内容薄味すぎ太郎だったのでモーターを分解した感想でも。

 ありがちなドローン用と違って重量を気にしなくていいので結構ガチガチですね。

 多分この部分は全部金属の塊ですよね。モーターを回しているとギアヘッドが結構熱くなっていたので、ギアヘッド側に熱を逃がす設計思想でしょうか。
 ドローン用モーターと違って風による強制冷却は期待できないのでまあ妥当。