M5Stack BLDCモータードライバユニット 火入れ
M5Stack用BLDCモータードライバユニットを購入しました。
もろもろ味見してみたので報告いたします。
目次
1st 火入れ&味見
開封から火入れをライブ配信しました。
以下のドキュメントを参考に専用ライブラリを導入してブラシレスモータの回転を確認しました。
BLDCモータードライバユニットはドライバIC DRV11873を用いてSTM32を介してI2C制御しています。
1st動作の様子は以下のとおり
ブラシレスモータは以下を使用しました。
配信ではライブラリのサンプルコードを参考に上の動画のオープンループによる回転とクローズドループによる回転を確認しました。
更にATOMS3を用いて内蔵のIMUと連動させての回転も確認しました。
M5Stack用BLDCモータードライバユニット
回った回った pic.twitter.com/EaHmEwLVwF— HomeMadeGarbage (@H0meMadeGarbage) May 19, 2024
モジュール複数使用
ライブ配信のコメントでドライバユニットの複数使用の設定方法を教えてもらったので試してみました。
ユニットのI2Cアドレスを変更するサンプルコードで一方のアドレスを変えて同一I2C信号で2個のブラシレスモータ(ユニット)を制御します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
... M5UnitBLDC driver1, driver2; void setup() { ... driver1.begin(&Wire, UNIT_BLDC_ADDR, 2, 1, 200000U); driver2.begin(&Wire, UNIT_BLDC_ADDR+1, 2, 1, 200000U); ... } ... |
無事に2個動作しました。
M5Stack用BLDCモータードライバユニット
2個回しでけた pic.twitter.com/1N3ZsF9Nfz— HomeMadeGarbage (@H0meMadeGarbage) May 20, 2024
M5StuickC Plus2 でも動作確認
M5Stack用BLDCモータードライバユニット
M5StickC Plus2で味わう
これが一番単純な構成だし何よりトレンディ pic.twitter.com/kkGmimvlYg— HomeMadeGarbage (@H0meMadeGarbage) May 20, 2024
倒立振子
2個のブラシレスモータを動かせるようになったのでこれより倒立振子の制作を目指します。
M5StickC Plus2とドライバユニットとブラシレスモータで倒立振子を構成
またなんかしてる pic.twitter.com/XUty6mSdcZ
— HomeMadeGarbage (@H0meMadeGarbage) May 20, 2024
オープンループモード
オープンループモードサンプルコードを参考にモータを回転させて倒立振子動作を試してみました。
なんか正転逆転の切り替え時に急激に回転しちゃって立てへん
まじめにドライバ勉強しないとダメだ pic.twitter.com/l4jF3AkFXK— HomeMadeGarbage (@H0meMadeGarbage) May 20, 2024
うまく動きませんでした。。
回転方向を切り替える際に回転速度0を指定してモータステートをスタンバイにする必要があり手順が厳しくスムーズに反転切換動作ができません。
正転逆転の切り替え時というかまわり始めが急気に回っちゃうだね
オープンループはあきらめよう
しかしスタンバイモードにしてからじゃないと正転反転が切り替えられないという知見を得た pic.twitter.com/Dzfi4TJEqs
— HomeMadeGarbage (@H0meMadeGarbage) May 21, 2024
さらに回転開始時に急峻にまわってしまいます。
オープンループモードで倒立振子は難しいようです。
クローズドループモード
クローズドループモードサンプルコードを参考に検証を進めました。
クローズドループのサンプルコードには回転速度を検出する関数も使用されていたので観測してみました。
CLOSED_LOOPモードで回転数観測
やはり低速回転開始時のオーバーシュート パないあとCLOSED_LOOPモードだと回転方向切り替えに時間がかかる。。。
M5Stack用BLDCモータードライバユニットちょっと厄介だな pic.twitter.com/bfcYrz9Ryf
— HomeMadeGarbage (@H0meMadeGarbage) May 21, 2024
やはり回転開始時のオーバーシュートが見て取れます。
クローズドループではモータ制御のPIDパラメータも調整可能のようなのでこのオーバーシュートの改善は可能だと思います。
一番の問題はクローズドループモードではスタンバイ状態から動作状態への移行に時間がかかることです。
M5Stack用BLDCモータードライバユニット
だいぶ見えてきたクローズドループだとモータステートSTANDBYからRUNNINGになるまで約2.7秒もかかってる。。
オープンループだと2msec以下でステート切り換わるんだけどね
これはキツイ pic.twitter.com/DgTPyXwAkQ
— HomeMadeGarbage (@H0meMadeGarbage) May 21, 2024
測定したところスタンバイ状態から動作状態に切り替わるのに約2.7秒かかっていました。
このユニットでは回転方向の切り替えには必ずスタンバイ状態にする必要があるので、クローズドループモードでも倒立振子の実現は難しいようです。。
おわりに
ここではM5Stack用BLDCモータードライバユニットを味見してみました。
倒立振子の実現を目指して色々検証しましたが現状このユニットで倒立振子は難しいようです。
回転方向の切り替えの手順に内部コントローラSTM32による制約があり ちょっと使いにくいので今度分解してドライバIC DRV11873を直接おいじりできないか検証してみたいと思います。