SimpleFOC ライブラリの応用
前回までにMakerbase社製 ESP32搭載ブラシレスモータコントローラを用いてSimpleFOCライブラリの基本的学習を済ませました。
SimpleFOCへの理解が深まりましたので、いよいよ応用です。
応用してこそのエンジニアリングです。
目次
おかもち
以前試したブラシレスモータによる おかもちをSimpleFOCライブラリを用いて実施してみました。
ここでは前回の学習と同様にMakerbase社製 コントローラとエンコーダAS5600付きブラシレスモータを用いました。
IMUでモータ動かしたいじゃないですか#SimpleFOC pic.twitter.com/GwoEIdHBEv
— HomeMadeGarbage (@H0meMadeGarbage) September 12, 2024
Makerbase社製 コントローラ
エンコーダAS5600付きブラシレスモータ
コントローラの2台目のエンコーダを接続するコネクタにIMUセンサMPU6050を接続してI2C通信させています。
動作
#SimpleFOC でおかもち pic.twitter.com/yDzxkYpKLE
— HomeMadeGarbage (@H0meMadeGarbage) September 12, 2024
ここではSimpleFOCのクローズドループ制御の回転位置制御モードを用いました。
1 |
motor.controller = MotionControlType::angle; |
IMUによって検出された角度(kalAngle )とモータの角度(エンコーダ値)の差でモータを制御して平衡を保ています。
1 |
motor.move(kalAngle * PI / 180.0 - sensor.getAngle()); |
SimpleFOCのクローズドループ制御 回転位置制御モードは以下のようなブロック図で構成されます。
指定角度とエンコーダによってセンシングされた角度の差をPID制御によってモータを駆動しています。
実験ではこのPIDを調整しながら動作を楽しみました。
1 2 3 |
motor.P_angle.P = 15; motor.P_angle.I = 1; motor.P_angle.D = 1; |
このパラメータもう少し追い込めばスムーズなおかもちになるかもしれません。
回転位置のPID調整はESP32をWiFi APモードにしてスマホから調整ました。
この時のライブラリバージョンは以下のとおりです
・ESP32 ver. 2.0.13
・SimpleFOC ver. 2.3.3
参考
SimpleFOCのコーディングには以下を参考にしました。
・Getting to know the SimpleFOClibrary code
・SimpleFOCGenerator :モータやエンコーダ、動作モードを選択することでコードが自動生成され便利!
姿勢制御モジュール
SimpleFOCによってブラシレスモータを割と自由自在に動かせるようになってきたので、ここではもはやHomeMadeGarbageのシグネチャーテックと言っても過言ではない姿勢制御モジュールを試してみます。
おかもちと同様にIMUセンサによってモータを制御します。
まぁた余計なことを#SimpleFOC pic.twitter.com/Bilrhg6g15
— HomeMadeGarbage (@H0meMadeGarbage) September 12, 2024
動作
SimpleFOCで姿勢制御
モータのスピード足りんわ pic.twitter.com/KnFClqYCKq— HomeMadeGarbage (@H0meMadeGarbage) September 16, 2024
残念ながらモータのスピードが足りず安定倒立は実現できませんでした。
以後 モータを変えて再度チャレンジしたいと思います。
ここではクローズドループのトルク制御モードでモータを駆動しました
1 |
motor.controller = MotionControlType::torque; |
トルク制御モードは非常にシンプルなループで構成されます。
IMUによる機体の角度と角速度とエンコーダによるモータ回転速度をフィードバックしてトルクを指定して倒立を目指しました。
筐体を変えてみましたが結果は同様でスピードたらず。。
SimpleFOCで姿勢制御
やっぱスピード足りんのでモータ変えないとダメだわ pic.twitter.com/2rO68eSbpV— HomeMadeGarbage (@H0meMadeGarbage) September 16, 2024
モータ動作自体はSimpleFOCによってうまく出来ております。
おわりに
ここではSimpleFOCライブラリを用いて応用を試しました。
実現したい動作にあわせてコーディングし動作を確認することで、私とSimpleFOCとの距離は非常に近くなりブラシレスモータ活用が容易になりました。
姿勢制御モジュールではモータスピードが足りず、またコントローラ自体が大きく負荷となりモータやドライバの変更が必須となりました。
Makerbase社製コントローラではなく自作のドライバで大きめのブラシレスモータ動作をSimpleFOCを用いて動作確認できましたので今後色々なモータやドライバを活用したいと考えております。
自作ドライバで SimpleFOC を楽しむ pic.twitter.com/bq53pFnDp5
— HomeMadeGarbage (@H0meMadeGarbage) September 14, 2024
更なるブラシレスモータの応用を目指して勉強を進めます。
追記
姿勢制御モジュール倒立成功 (2024/9/19)
モータスピードが足らず倒立できてませんでしたがコード内で指定したカレントリミットが効いていたことが判明しました。
無事に倒立
カレントリミット上限を変更して本来のモータトルクを活用できました。
motor.current_limit :2A -> 8A に変更