SimpleFOC で倒立振子2

Home > 電子工作 > SimpleFOC で倒立振子2
すき 0
うんこ 0

前回はSimpleFOCによる倒立振子をESP32搭載のMakerbase社製のコントローラを後いて検証いたしました。

SimpleFOC で倒立振子1

 

Makerbase社製のコントローラ

 

ここでは前回の問題点を解決しながら倒立振子の実現を目指します。

 

AudiostockでBGM・効果音を販売中!

エンコーダ修理

前回壊してしまったAS5600 磁気エンコーダモジュールを修理します。

 
☟この磁気エンコーダモジュール

 

Amazonで別のAS5600基板を購入してICを載せ替えました。

 

修理したエンコーダを前回作成した倒立振子につけて片輪走行を確認しました。
無事にエンコーダ修理終了です。

エンコーダアナログ出力検証

倒立振子製作に際して機体の姿勢を検知するIMUセンサ(MPU6050)と磁気エンコーダの2個で計3個のI2C通信が必要となります。
しかし、ESP32には2個のI2Cチャンネルしかないためここでは別の磁気エンコーダ出力インターフェースを検討します。

磁気エンコーダAS5600にはI2Cの他にアナログ出力もあります。

 

SimpleFOCライブラリにはアナログ出力エンコーダの関数も用意があり、サンプルコードを用いて動作確認しました。
 https://docs.simplefoc.com/magnetic_sensor_analog

エンコーダによる回転検知をアナログ出力で取得してクローズドループ制御で動作確認しました。

しかし、うまくモータを回すことができませんでした。 ESP32で電圧をリニアにセンスするのが難しいことが要因かもしれません。

またESP32のアナログ入力ピンはWiFi使用時に使えなくなるピンがあるなど(ADC2が使えなくなる)の制約もあるので別のデジタル検知できるインターフェース方が良さそうです。

ここではブラシレスモータドライバには以下を使用しました。

 

ちなみにAS5600のI2C出力ではしっかり回転制御を確認できました。

 

モータは従来通りのコレ

新規エンコーダ検証

磁気エンコーダ AS5600の倒立振子への使用が難しいことがわかりましたので別のエンコーダを試します。

A/B相のパルス出力のある磁気エンコーダを見つけました!
磁気エンコーダ AS5601

AS5601はI2C通信でA/B相のパルス数や各種設定を変更可能です。
データシートによるとA/B出力分解能を8~2048まで可変できるとのことです。

オシロで観測したところA/B相からはそれぞれ1周で2パルス出力していましたので出力分解能は4逓倍することを想定しているようです。

電源投入時のA/B相のパルス数はI2Cで1度だけ不揮発メモリ(OTPメモリ)に書き込むことで変更が可能でした。

以下にしたがってA/B出力分解能を8から最大の2048(各相 1周 512パルス)に変更しました。
 設定レジスタの焼き付けによる分解能の固定

モータ動作

早速 AS5601のA/B相出力を用いてクローズドループ制御モータ動作を確認してみました。

無事に回転しました!!

SimpleFOCにはもちろんA/B相エンコーダ用の関数も用意がありますのでそちらを使用しました。
 https://docs.simplefoc.com/encoder

 
AS5601は AS5600の基板を活用して以下のように実装しました。

たまたまモータの固定ネジ穴とAS5601基板の穴位置がハマりました。

 
ちなみに磁気エンコーダに付属の磁石は円の半分で磁極が別れています。

倒立振子作製

AS5601によってI2Cインターフェース問題が解決できたので早速 倒立振子を組んでいきます。

 

AS5601のA/BピンをMakerbase社製のコントローラの従来I2CのSDA/SCLピンに接続します。
コネクタを加工しました。

 

無事にモータ2個の回転動作を確認できました!

 

☟ちょっとコードにミスがあり前後進がまっすぐ進めていないww

 

コード修正で無事にええ感じに走行

おわりに

I2Cインターフェース問題などを解決して無事にSimpleFOCによるブラシレスモータ制御によって倒立振子を実現することができました。

エンコーダのインターフェースも各種試すことができて良い経験となりました。

SimpleFOCによってブラシレスモータを自由自在に制御できるようになりましたから (リアクションホイール姿勢制御モジュールと倒立振子作れたら大概のことできるっしょ)、以後大いに活用したいと思います。

 

ブラシレスモータが元気ですから起き上がりも余裕

 

ブラシレスモータは適切に選定すれば高トルクと高速回転の両立も可能でしょうから、以前つくったWheel-Legged Robotでは中腰での倒立振子動作しかできませんでしたが元気に直立させることもできるかもしれません。

 

今後も勉強を重ねて色々作っていきたいと思っております。

 

 

追記

2024/10/12 モータ交換

以下ブログに記載の通り本倒立振子はI2Cマルチプレクサを導入して磁気エンコーダ出力をA/B相出力からI2C通信に変更しました。

そして I2Cマルチプレクサ

ここでは更にモータとエンコーダモジュールを変更しましたので記載します。

 

使用していたモータが現在高額になってしまい入手しにくいので交換します。合わせて磁気エンコーダも安い物に変更し固定方法を検討します。

このモータから

 
このモータに変更

 

エンコーダもAS5600搭載の以下の低価格品に替えてみる

 

モータとエンコーダを固定する治具を3Dプリント

治具とモータの固定には磁石と干渉しないように非磁性の真鍮ネジを使用しました。

動作

モータ動作確認

 

倒立振子動作も問題なし。無事に交換が終了!

次の記事

SimpleFOC でリアクションホイール姿勢制御モジュール

コメントはこちらから

メールアドレスが公開されることはありません。コメントのみでもOKです。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください