2010年7月15日木曜日

1.0 散歩のお供







何を作るかあれこれ考えたが、孫の後をついてくる車に決定。センサーはラジコンの無線も検討したが方向の検出が面倒そうなので、超音波を使うことにした。
孫が小さい車を引っ張って歩くとその後をもう1台の車がついてくる、という構成にした。
小さい車は定期的に超音波を送信し、後ろの車がそれを左右2つのセンサーで受信して左右の時間差で方向を検出する。また、後ろの車も超音波を送信し、前の車からの反射音が戻ってくるまでの時間で車の間の距離を測定する。距離がある程度(30cmくらい)に近付くとそこで止まるようにした。

ボディ:
送信側(小さい車)は受信側(後ろの車)からの超音波を反射しやすいように後面と側面後部を平らな面にし、小さい車輪をつけてひもで引っ張るようにした。
受信側は前輪2輪を別々にモーターで駆動する。後輪は曲がりやすくするために1輪とした。後輪が左右に曲がり、車輪がスムーズに回転し、しっかりボディに固定できる形を作るのに結構苦労した。

ハードウエア:
送信側は8ピンのPIC12F683を使用。単4電池2本から5Vに昇圧する電源とPICの他は超音波の送信機をドライブする部分にコンデンサが1つつくだけのシンプルな構成。
受信側は28ピンのPIC18F2431を使用。電源部、PIC、超音波センサー用のアンプ2チャンネル、モーター駆動用のIC(TA7291P)2つ、状態表示用のLED、設定用のボリュームとスイッチ等がある。
電源はPIC用は単4電池2つから5Vに昇圧、モーター用には別の基板に単3電池を4本用意し、ケーブルで接続する。

ソフトウエア:
送信側はPICの理解も兼ねアセンブラで作成した。超音波の発生はソフトのループで行う。
200ms毎に40KHzの超音波を50サイクル発生する。
受信側はCで作成。送信側からの超音波の受信と方向検出、超音波発生と反射音の受信による距離測定、モーター駆動、が主な処理。
方向測定は2つの超音波入力で割り込みをかけ、最初の割り込み時に右だけONなら右、左だけONなら左、両方ONなら中央と判断する、角度は気にしない。また、200ms以上受信信号が来ない場合は方向未定とする。
距離測定用の超音波発生は送信側と同じようにソフトで40KHzの超音波を10サイクル発生する。一定時間(約1ms)後に超音波入力をチェックし、左右どちらかがONなら距離近接と判断する。このアプリケーションでは左右同時測定で問題ないが、次のアプリケーションで左右別々に距離の測定を行う必要が生じたので、このアプリケーションでもまず右の距離を測定し、次に左の距離を測定している。
モーター駆動は、方向不明または距離近接なら停止、方向右なら左だけ駆動、方向左なら右だけ駆動、方向中央なら左右を駆動とする。
動作時に壁などに近付いて止まってしまうことがあり、ここからの救出のため距離近接時に送信側の方向が変化したら少し後ろに下がるようにした。壁で止まってしまったら壁と受信側の車の間に送信側の車を通すと、受信側がいったん後退しその後また送信側を追いかけてくる。

孫の反応:
クネクネ動くのが気持ち悪いのか、追いかけてくるのが怖いのか、「いやだいやだ」「やめてやめて」と言って逃げてしまった、、。嫌われてしまったがめげずに製作をつづけることにする。

0 件のコメント:

コメントを投稿