ジャイロ制御のレーシングカーをテストする(その2)
■試作ハードとソフト
回路図はこれです↓
「gyrocar.pdf」をダウンロード
muRataのジャイロはいつもの秋月基板を使わず、ジャイロを裏返しに基板に接着して、細いスズメッキ線でハンダパッドから引き出しています。写真をご覧下さい。工夫すればもっと小さくできるでしょう。
ジャイロの出力は直接PICのADに入力しています。3.3Vで10ビットだから分解能は3mVほど、ちょっと感度不足です。ゆっくりした回転は検出できません。
ジャイロ基板は前の投稿の写真のように、スポンジで基板に取付けています。
モーター駆動中ドライバが発熱しますが、なんとか許容範囲内かなというところです。
ccscのプロジェクトファイルはこれです↓
「gyrocar.zip」をダウンロード
ジャイロは200usのタイマー割り込み4回に1回、つまり800usごとに読み込まれ、直近8回の平均をジャイロの値としています。まあまあローパスフィルタとして働きますが… ホントーは数十us周期でサンプリングしたいところです。
シリアルポートからはジャイロコンパスの値を9600bpsで送信します。レベルコンバータを使ってPCに接続できます。
プログラムのシーケンスは下記のとおりです。
リセット後ジャイロが安定するまで1分ほど待つ
↓
ボタンを押すと1秒後シリアルポートから、ジャイロ基準値:ジャイロの読み出し値:コンパスの値が100ms周期で送信される。コンパスが0が現在の方向、右回りで減少、左回りで増加。負数は補数表現。
↓
もう一度ボタンを押すと3秒後に走行開始。
↓
ボタンを押す度に走行を繰り返す
■実験結果の分析
走行時に振動の少ないグリップ走行で、コース5周分くらいだと、ジャイロコンパスはまあまあ安定です。シリアルでジャイロの状態をモニタしてみても、あまりずれません。
後輪をプラのタイヤに変えてスピンするようにすると、コンパスがずれてくるようです。スピンの振動の影響がまず考えられます。スピンした時のように、駆動輪を軽く接地させながら空転させ、ジャイロの出力をシンクロで見るとこんな感じです。
電圧軸500mV/div、時間軸10ms/divです。画面右端の波形が不連続になっているのは、そこでHOLDしたためなので、実際にそういう波形な訳ではありません。
これを見ると、100Hz-200mVPPくらいの結構大きなノイズが乗っているのがわかります。これはジャイロが機械的に振動するためと思われます。現在のプログラムは150Hzくらいのフィルタ特性なので、ちょっとキビシイかも知れません。かといって、フィルタのカットオフ周波数を落としてくると、計算量も増えるし、応答も遅くなるので、簡単にはいきませんね。
ジャイロから信号を引き出している固いケーブルを柔らかいものに変えたり、インシュレータを工夫して、車体の振動を伝えないことも重要です。ソフトやハードの工夫より、こっちの方が本命かも知れません。
それから、急速なスピンがジャイロの測定範囲を越えてないかの検討も必要でしょう。muRataのジャイロは測定範囲が300deg/sec、毎秒1回転くらいですから、あまり速い回転だと、測定値の直線性が崩れてきます。画像を見ると、もっと早そうなスピンもあります。
ともあれ、目隠し運転でも、この程度はいけることが確認できたのは収穫です。どんな模型の乗り物でも運転できる、ロボットドライバーなんかが出来たら面白いでしょう。
« ジャイロ制御のレーシングカーをテストする(その1) | トップページ | 秋月のXBeeを使ってみる »
「花岡ちゃんのウィークエンド」カテゴリの記事
- レーザー距離センサVL53L0Xを複数使うには(2022.05.01)
- 【訂正!】PIC24Fでレーザー距離センサVL53L0Xを使う(2022.04.13)
- PIC24Fでレーザー距離センサVL53L0Xを使う(おしまい)(2022.04.14)
- PIC24Fでレーザー距離センサVL53L0Xを使う(その3)(2022.04.13)
- PIC24Fでレーザー距離センサVL53L0Xを使う(その2)(2022.04.12)
コメント