車体の傾きを検知して車高を変える機構の実験です。
傾き検知にはMPU6050という6軸モーションセンサを使用します。倒立振子で使い慣れたセンサーで車体の進行方向をY軸、左右をX軸として軸まわりの角度を検知するプログラムを書いてみます。
ArduinoとはSCL.SDAポートでI2C通信というオーソドックスな方法にします。
得られたXY軸まわりの角度データをmap関数でSG90の入力角度に変換して、XY軸の角度すなわち車体の傾きに応じて車高を変えるようにプログラムします。
試験はY軸方向の傾きのみで行ってみます。したがってX軸、Z軸の傾きには動作はしないことになるはずです。
以下その様子です。
Y軸の傾きに応じて車高は変更されていますが、ブレが若干激しいようです。さらにX,Z軸を動かすとその影響を受けているようです。プログラムは単純に目標角度からのズレを相殺するようにした比例制御のみです。
Y軸角度の測定値を平均化するようにプログラムを追加、平均時間を長くするとバラつきは少なくなりますが応答性は悪くなることになります。ただこの機構では応答性はさほど要求されないので3秒計測してその平均をとることに、さらにPID制御を追加して精度をあげました。
これでなんとか実用にはなりそうな挙動にはなりました。
あとは実機で調整していくことにします。
次回は車体の構想にとりかかります。
次回は車体の構想にとりかかります。
(続く)
コメント