ねずーの回路図とテスト用ソースコード
ここらで現在の回路とソースコードについて説明しておきましょう。
先ずは回路図からです。こちらからダウンロードできます。
ジャイロの回路、秋月のモジュールを使ってますが、実質これだけしか使っていません。私のように秋月のモジュールを利用する場合は、下の写真のようにチップコンデンサC6を外し、写真のパッドから圧電ジャイロG1の出力を直接引き出します。あとは電源を供給するだけです。
ジャイロと加速度センサは3.3Vで動作させていますが、PSDには5V必要です。この回路ではサーボの電源から給電しているため、PSDを有効にするにはモータースイッチをONにする必要があります。
サーボの電源は電流合成用のダイオードを通ってきているので、ダイオードの準方向電圧降下分電圧が下がっています。実測すると0.6Vくらいですが、なんと言っても元電源が4.8V定格なので、動作下限電圧が4.5V(実際は4Vくらいでも動くようですが…)のPSDにはちょっときついです。
バッテリーから直接取るように変更した方が良いでしょう。
次はソースコードです。
このソースは、マニュアルにある通り、Version2.0.4のEx_ALLというプロジェクトフォルダをコピーして製作しました。
主な関数の説明です。
・go_fwd、go_bkd
走行時間とモーターパワーを引数にして前進、後進をする関数です。ジャイロコンパスで現在の方向を保持します。
5msごとにジャイロ出力(角速度)を積算しコンパスを更新します。コンパスが現在の方向(0)から200以上ずれたら直進補正のために左右のモーターパワーを調整しています。
・right_turn、left_turn
旋回角度を表す数値「ジャイロターゲット値」を渡すとその角度まで旋回します。おおよそ15000で90度旋回します。ブレーキがかかり難いので最終的に角度を調整するプロセスが入っています。
何らかの理由で指定角度旋回できなくとも、10秒でタイムオーバーになりリターンします。このとき戻り値として1(旋回できた時は0)を返すので、呼び出し元で状況を把握できます。
・keep_fwd、keep_bkd
引数としてモーターパワーを渡すと、50ms間、直進補正しながら走行してリターンします。センサのチェックをしながら連続的に呼ぶことで、走行中の障害物に対応することが出来ます。50msという継続時間は、PSDの計測周期(約50ms)で決めています。これなら1回呼ぶごとに新しい計測値をゲットできます。
また、keep_fwdでは実行中、x方向の加速度センサの最大・最小値をグローバル変数に記録します。呼び出し元で衝突の検出ができるようにするためです。
« ねずーの反射神経テスト・「とびだすな!ロボは急に止まれません?」 | トップページ | ドライブサーバの仕様を考える »
「ちょこっとCoron」カテゴリの記事
- SoftModem用インターフェイスのまとめ(2010.10.05)
- iRover走行テスト!ジャイロはやっぱり振動に弱い(2010.07.29)
- iRoverにもCoron搭載(2010.07.27)
« ねずーの反射神経テスト・「とびだすな!ロボは急に止まれません?」 | トップページ | ドライブサーバの仕様を考える »
コメント