車輪を速度制御する

演習その5でモータ制御を扱いました。演習その5ではモータの回転方向をFORWARD、BACKの2つの信号で、印加電圧をPWMで与えて回転数を自由に制御することができることを学びました。しかしながら、上図のようにキャスターを取り付け平面を移動する台車を考えた場合、ある一定のPWMを与えたからといって台車の移動速度が一意に決まるということはありません。地面との摩擦抵抗、平面の傾斜度、電池の消耗などあらゆる要素が絡んでその時々で移動速度は変化します。

人間が自動車の運転をするときのことを例にとりましょう。この場合アクセルのふみ具合がPWMのデューティ比に相当します。制限速度50km/h場合、目標値である50km/hとスピードメータの読みを比較して車のスピードが50km/hより遅かったらアクセルを踏む、早かったらアクセルを緩める操作を行います。目標値とのずれが大きければアクセル操作量を大きくし、目標値付近では操作量はほとんどありません。

上記動作は車の速度を測定し、その速度と目標値との差からアクセル操作量を判断して操作するフィードバック制御となります。

PUPPYの場合でも車輪の回転角をロータリエンコーダでモニタできるので横にして台車のように使った場合の移動速度は簡単に求めることができます。そうして求まった実際の移動速度と目標速度を比較しPWMの出力値を増減させればいいのです。

移動速度を目標速度に近づけていくために今回はPI制御を用います。PI制御について詳しくは専門書を見ていただくとしてここでは、実際に動かしてみて実感してみることを目的に進めていきます。

ある時刻kでの台車の移動速度をω(k)、目標速度をωdとすると移動速度と目標速度との偏差e(k)は

と表されます。デジタルPI制御ではk時点での制御入力u(k)は

となります。Kp、Kiはそれぞれ比例ゲイン、積分ゲインと呼ばれ、u(k)はこの場合PWM設定値となります。Kp、Kiの設定方法はいろいろなものがありますがここでは簡易的に求めてみます。

まず、Kpから求めていきますが、Kiを0とすると

となりますが、台車が停止してる状態から最大速度ωmaxになるようなときを考えると偏差は

で、PWMデューティ設定用のレジスタに設定できる最大値は100なので

となります。

演習課題

ここで台車の最大速度ωmaxを実際に測定してみます。測定方法は前回の演習の方法でもいいでしょうし、他の方法でもかまいません。測定した最大速度からKpを求めましょう。

演習課題ができたらココ