SimpleFOC でリアクションホイール姿勢制御モジュール2
前回はSimpleFOCによるリアクションホイール姿勢制御モジュールの制御を楽しみました。
モータはジンバル用の小型ブラシレスモータを使用しました。
ここではドローン用のモータで検証してみましたので報告いたします。
目次
ドローン用ブラシレスモータ 5010 750KV
ドローン用ブラシレスモータ 5010 750KVを用いて姿勢制御モジュールの製作を検討します。
ローターに重厚感がありこのままフライホイールとして活用できるのではないかと生唾を飲み込みました。
早速動作を確認したところ見事に倒立しました。
ブラシレスモータかと思ったら
リアクションホイールでした#まいにちチクショー pic.twitter.com/p6Q9sA9G9z— HomeMadeGarbage (@H0meMadeGarbage) September 26, 2024
構成はモータ以外は前回と全く同様です。
・コントローラ:ATOMS3
・磁気エンコーダ:AS5600
・モータドライバ:DRV8311H
1点問題点がありSimpleFOCでモータやエンコーダを初期化 [initFOC()]する際に過電流が流れてうまく動作しませんでした (後に解決)。
ここでは電源電圧を12Vから9Vに下げて初期動作の過電流を抑えています。
ドライバ変更
起動時にinitFOC()でモータを回転させてエンコーダの方向やオフセットを確認するのですが、その際にドローン用ブラシレスモータの配線抵抗が小さいために大きな電流が流れます。
そこで初期動作での過電流に耐えるべくパワトラ外付けの自作のドライバで動作を確認しました。
このくらい元気なモータのドライバはパワトラ外付けじゃないとキツイな
しんどいけどドライバ基板つくるか pic.twitter.com/Lf6CQreZ41
— HomeMadeGarbage (@H0meMadeGarbage) September 27, 2024
このドライバを用いることによって初期動作時に12Vで2A以上流れていることを確認しました。
初期化動作設定
initFOC()で初期化する際にあらかじめエンコーダの情報を記述することで初期回転をスキップできることがわかりました。
自作ドライバ使用時の初期動作で得たエンコーダの角度オフセットと回転方向を以下のように記述します。
1 2 |
motor.zero_electric_angle = 3.08; // rad motor.sensor_direction = Direction::CW; // CW or CCW |
エンコーダは絶対角度がわかるタイプである必要があります。
A/B相出力タイプのエンコーダにはこの手法は使用できません。
以上で初期化動作をスキップしてDRV8311Hでも5010モータの回転を確認することができました。
SimpleFOCのエンコーダの位置確認初期動作時に無理やりモータ回すため過電流が流れていたことが判明。
エンコーダのオフセットと回転方向の事前入力でこの初期動作をスキップできることが判明
パワトラ内蔵DRV8311Hでも元気に回せたわ。
1チップでピーク5Aまで流せるなんて良いプロセスつこてますね pic.twitter.com/znLt2tUyOU— HomeMadeGarbage (@H0meMadeGarbage) September 27, 2024
しかし、事前にエンコーダのオフセットを知るにはやはりモータ回転が必須ですしA/B相エンコーダでもモータ回転を楽しみたく悩んでいたところ良い情報を得ました。
ドローンモーターは巻線抵抗少なめで電流流れ過ぎちゃうのでできるだけ制御電圧低めに設定してあげてください。motor.voltage_sensor_alignを0.5Vぐらいにしてあげると良いかも。
— arms22 (@arms22) September 28, 2024
voltage_sensor_alignで初期化動作時の電圧を設定でき過電流を回避できるとのことでした。
voltage_sensor_alignで初期動作電圧を1V以下にすることで配線抗値の低いモータも動かせるようになりました。
2808モータでも倒立動作を確認できました。
1 2 |
motor.voltage_sensor_align = 0.5; motor.initFOC(); |
ブラシレスモータかと思ったら
リアクションホイールでした #まいにちチクショー pic.twitter.com/aFDAWREM8K— HomeMadeGarbage (@H0meMadeGarbage) September 28, 2024
起上り動作
初期化動作の設定や動作時の電流管理によってドローン用ブラシレスモータでも倒立動作を実現することができました。
そこで次に起き上がり動作を確認しました。
流石に起上りは苦しい pic.twitter.com/9pK0NUm3qH
— HomeMadeGarbage (@H0meMadeGarbage) September 27, 2024
しかし高速回転反転時にうまく駆動できません。
これはドローン用ブラシレスモータの配線抵抗が低いため反転時に誘導電流が大きく打ち消すことができないためだと考えます。
この際に電源電圧が上昇しドライバや1次電源にダメージを及ぼす可能性もありますからケアが必要です。
ケア検討
誘導起電力による電源上昇にはモータ電源にダイオードを挿入で対応し、さらに誘導電流低減にはモータ配線に抵抗0.1Ωを挿入しました。
この抵抗はスナバ抵抗といえばいいでしょうか、それともダンピング抵抗といえばいいでしょうか。
いい機会でしたので容量の大きい抵抗をAmazonで買っておきました。
動作確認
誘導電流のケアによって高速回転での反転も可能になりドローン用の低配線抵抗のブラシレスモータでも起き上がり倒立動作を確認できました。
ドローンモータでも立った pic.twitter.com/2uoQarxj4f
— HomeMadeGarbage (@H0meMadeGarbage) September 29, 2024
おわりに
ここではドローン用のモータを用いてSimpleFOCによる姿勢制御モジュール動作の検証を行いました。
SimpleFOCのエンコーダ初期化コマンドを正確に記述して、誘導電流のケアを施すことによってドローン用モータでも姿勢制御動作を確認することができました。
☟ちょっと大きめの筐体でも動作確認。補助的に少し持ち上げれば起き上がりもできました。
わざわざドローン用のモータ使用せずに配線抵抗の大きいカメラジンバル用モータなんかを使用すればいいのですが、最近ぜんっぜん売ってないの。
数年前には数百円で手に入ったんだけどね。
これからも色々なモータを味見して適材適所でモータを選定してものづくりしたいと思います。
ごきげんよう