モーターの制御1[マイクロマウス]

Posted by KFTamang on Thursday, March 18, 2021

TOC

最初の課題:モーターの制御

マイクロマウスのソフトウェアで最初のマイルストーンとなるのがモーターの制御でしょう。 モーターの回転を滑らかに制御できるようになることが、スムーズな走行の基礎となるからです。 とりあえず左右のモーターそれぞれに移動速度を指定してやると、指定値に追従することを目標としてみます。

DCモーターの基本

そもそもDCモーターについてよくわかっていなかったので調べたところ、およそ二つの面があるようです。

  1. 流れる電流に比例するトルクを生み出す
  2. 回転数に比例して電圧(逆起電力)が生じる

電流と電圧はお互いに影響を及ぼしあってはいますが、まったく別のものです。 (純粋な抵抗のようにで電圧と電流が比例するような単純な関係にはなりません。) 例えばトルクはかかっているが軸は回転していないという状況では、電流は流れているが逆起電力がゼロになります。 逆に、理想的な無負荷状態では、軸の回転を維持するのにトルクが必要ありません。 この場合は電流はゼロでも逆起電力はゼロとなりません。 現実的にはモーターの軸に何も接続しない無負荷状態がこれに近く、モーターの摩擦トルクと釣り合う分以外の電流は必要ありません。

DCモーターの電気的な等価回路は以下のようにインダクタ、抵抗、電圧元が直列になった単純なものだそうです。 (DCモータを使ったマイクロマウス入門③から引用) モーターの等価回路 このうち、コアレスモーターの場合、インダクタンスLは小さいので無視してよいらしいです。 Rはモーターの巻き線抵抗、Eは回転数に比例する逆起電力です。

逆起電力Eは回転数ωと逆起電力定数KEによって E=KEω と表されます。

また、軸に生じるトルクTはトルク定数KTと電流Iによって T=KTI と表されます。

この逆起電力定数とトルク定数は、モーターの電力・運動エネルギー変換器という機能の効率を電気的・力学的それぞれの側面から見たもので、 本質的に同じものを表現しています。 数式としても等価で、 KE[V/rpm]=2π60KT[Nm/A] と変換されます。(右辺の分母にある60というのはrpmに変換する際に混ざった60秒が由来です。)

フィードフォーワード制御のための計算

モーターをフィードフォーワード制御するために、望みの速度、加速度のときにモーターに与えるPWM制御のデューティー比を計算しましょう。 デューティー比をrD、バッテリー電圧をVbatとします。 モーターの両端の電圧Vmotはインダクタンスが無視できるので、 Vmot=IR+E となります。 この電圧がバッテリー電圧のデューティー比倍に等しいので Vmot=rDVbat 以上の式を連立してデューティー比を求めると rD=RT/KT+KEωVbat という式が得られます。

ここで回転数ωとトルクTはそれぞれ機体の速度と加速度に比例します。 この関係を数式で表すと、vを機体速度、aを機体加速度、rをタイヤ半径、nをギアの減速比、mを機体質量として、 T=mra2n ω=60v2nπr となります。 Tの式の分母に2が入っているのは、タイヤが二つで加速度が倍になるからです。

DCモーターSCR13-2005の特性

今回使用したDCモーターであるSCR13-2005の特性を見てみましょう。 シチズンマイクロ社から公開されているデータシートを見てみましょう。 これによるとトルク定数は KT=4.49[mNm/A] です。 先の変換式から逆起電力定数を計算すると KE=0.470[V/krpm] となります。単位の分母がkrpmになっていることに注意してください。 (余談ですがシチズンマイクロ社の担当の方に問い合わせたところ違う値を教えられました。どういうこと?)

フィードフォーワード制御を行ってみる

とりあえずフィードフォーワード制御のお試しということで、計算上v=1m/sの速度で定速運転をするときのデューティー比を与えてみましょう。 定速運転なので加速度a=0なので rD=60vKE2nπrVbat=0.673×vVbat この式にv=1m/sを代入すると、例えばバッテリー電圧Vbat=7.2Vのときデューティー比は rD=13.9%となります。

(2021/05/08追記) 計算式を見返していたところ、タイヤ半径を入れるべきところに直径を入れてしまっていることを発見しました。 つまり係数は二倍の1.346となります。

実際にこの値をデューティー比としてモーターを動かしたのが以下の動画になります。 (バッテリー電圧は制御ループ内で測定して使っています。)

動画を見返すと、2秒時点から6秒時点まで4秒間でおよそ20回タイヤが回転しています。 タイヤ径が25mmなので空転状態で0.78m/sに相当する回転数です。 モーター自体に摩擦トルクがあること、ギアとタイヤのベアリングで摩擦が生じることを考えると、目標値の78%はまあまあ妥当な数字に思えます。

今回はここまでです。次回はフィードバック制御を足すか、それとも摩擦トルクをフィードフォーワード制御に取り込むか、どちらかに仕様と思います。

参考資料

マイクロマウスシリーズ