正弦波駆動の応用 ーブラシレスモータ駆動への道11ー

Home > Advent Calendar > 正弦波駆動の応用 ーブラシレスモータ駆動への道11ー
すき 1
うんこ 0

HomeMadeGarbage Advent Calendar 2022 |16日目

前回はクローズドループ正弦波駆動によるブラシレスモータの制御に再挑戦しました。

クローズドループ正弦波駆動 リベンジ ーブラシレスモータ駆動への道10ー

 

ここでは正弦波駆動を応用して色々試しましたので報告します。

 

 

ブラシレスモータの回転位置を指定

前回と全く同じシステム構成で可変抵抗でモータの回転位置を指定しての制御を実施しました。

可変抵抗での指定角度と磁気エンコーダによる測定角度の誤差をPI制御して正弦波の波高値にして、位相は測定角度を電気角に変換して使用し制御しています。

ブラシレスモータをサーボ感覚で動かせるようになりました。

 

可変抵抗を6軸 IMUセンサに変えて制御してみました。

前出の可変抵抗によるモータ回転位置指定をIMUの傾き角度に変えただけですが、何かができそうな感じがにわかにあふれ出しました。

 

おかもちリベンジ

以前製作したおかもちを本システムをベースに作ってみたいと思います。

PI制御

磁気エンコーダを排除して、IMUによる傾き角度を使用して板が平行になるようにブラシレスモータを制御しました。

IMUセンサは板の下側に設置して、板が平行になる(0°)ようにIMUの角度をPI制御した値を正弦波の位相としました。
正弦波の位相は一定 (約1V)としました。

なかなか良い動きを実現できています。

PID制御

さらにIMUによる角速度も使用してPID制御にしてみました。振幅は一定。

制御がよりヌルヌルして外乱に迅速に反応できるようになりました。

PID制御 振幅可変

次に正弦波駆動の位相のPID制御に加えて振幅をIMUによる傾きのP制御で導出するようにしました。

傾きが大きくなるほど振幅が大きくなってモータへの電流が増えます。

動画ではわかりにくいですが、振幅可変によって応答性が少し改善し板の平行保持力が向上しました。

板の保持力は振幅を常に最大(7.4/2 V)にすれば強くなりますが、大きな電流がずっと流れ続けてもったいないので振幅を傾きに応じて可変としました。

 

Arduinoコード

位相をPID制御で振幅をP制御で生成するおかもちのコードを以下に記します。

 

疑似正弦波を生成するためにドライバ駆動ピン(IO25~27)はledcWriteを用いて20kHz PWM出力します。分解能は10ビット(0~1023) (L. 105-113)。

ESP32はデュアルコアで使用しcore0でIMUセンサMPU6050のカルマンフィルタを通した傾きと角速度をセンシングします (L. 67-99)。

core1で正弦波駆動でブラシレスモータを回します。
IMUの傾きと角速度を用いてPID制御で正弦波の位相thetaMを導出します (L. 128, 129)。
IMUの傾きからP制御で正弦波の振幅amp2を導出します (L. 131, 132)。

導出された正弦波をPWM変換してドライバを駆動します (L. 139-141)。

動作

改めて位相をPID制御で振幅をP制御で生成するおかもち動作。

配線が邪魔なので改めてコントローラを選定しドライバも小型化して おかもちを完成させたいと思います。

使用したモータのトルクが大きくないので 、重いものを載せれるようにギアの勉強もしたほうが良いかもしれません。

 

「正弦波駆動の応用 ーブラシレスモータ駆動への道11ー」への1件のフィードバック

コメントはこちらから

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

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