■PID制御によるモータの駆動■

■PID制御とは■

エアコンの温度制御や、自動車の速度制御など、一つの目標値を設定すると、現在の値をセンサで読み取り、自動的に目標値に近づけるようにヒーターやアクセルの操作量を自動調整する方法がある。PID制御はこの自動制御方式の一つで、操作対象が一つで目標値と操作量に比例関係がほぼ成り立つ場合に摘要できる古典制御法である。これまで一番よく使用されてきた自動制御方法である。

今回の課題では、曲がった壁からの距離を目標値(10cm)に保持するように自動的に制御することを考えよう。

PIDは、次の3要素を組み合わせて制御することを意味している。

■P制御■

3要素の中で、一番制御に強い影響を与える部分が比例制御である。

操作量 = Kp * 誤差
 ※誤差 = (目標値 - 現在値)

Kpは比例定数で、この値が大きいほど急速に目標値に近づくが、大きすぎると目標値を行きすぎてしまう(オーバーシュート)ため、適切な値を選ぶ必要がある。※極端に比例定数が大きいと、目標値をオーバーし、さらに元に戻そうとして逆に戻しすぎてしまうことを繰り返し、値が振動してしまう。

■PI制御■

次に、積分制御を加えてPI制御がある。(※積分制御だけを単独で使用することはなく、比例制御と併用する)。比例制御では、目標値に近づけば近づくほど操作量が0に近づくため、最終的に目標値にピッタリ合わせ込むことができない場合がある。そこで、目標値との誤差を累積させ、その累積値に比例させた量を、操作量に加えることが考えられた。累積値を使用することから積分制御と呼ばれる。

操作量 = Kp * (誤差 + Ki * 誤差の累積値)

これなら、目標値との間にわずかな誤差が残っても、時間とともに誤差の累積値が大きくなり、いずれ誤差を補正するような操作が行われることになる。

■PID制御■

PI制御で、残る問題は応答性である。つまり、急に目標値が変更になった場合(例えば壁が直角にまがった場合など)や外乱(壁に突起など障害物があった場合など)に、制御が追いつかずに目標に近づくのが遅れてしまう問題がある。そこで、今回の誤差が前回の誤差と比べて大きかった時に、思い切り操作量を変化させることで、急な変動に機敏に対処することが考えられた。前回との誤差の差を考えることから微分制御と呼ばれる。微分制御も単独では使用されずに、通常PI制御とともに使用されて、PID制御と呼ばれる。

操作量 = Kp * (今回の誤差 + Ki * 誤差の累積値 + Kd * 前回の誤差と今回の誤差の差)

■定数の決め方■

比例定数などは、最適な値を決めるための理論や方法がいろいろ存在する。しかし、ここではそれを説明する講義ではなく、実際に実験で確かめることが目的である。KpやKi, Kdを適切に実験的に調整してみよ。