赤外線距離センサー IR-600
浅草ギ研の製品の中で、シリアル通信を使う距離センサーにIR−600があります。ここではPC(VisualC#.net)でこのIR−600からの距離データを受け取ってみましょう。尚、PCとTTL装置のシリアル通信やプログラミングについての基本は前のページ(Winアプリを作ってみる、PCとRCサーボコントローラ)を参照願います。
IR−600の仕様についてはこちらを参照願います。このページの <ドキュメント>取り扱い説明書 を見ると、測定した距離を4800bpsのシリアル通信で出力するセンサーということがわかります。ということでいままで行ってきた方法で接続できそうです。
すでに自作ロボットを作られている方はこのIR−600を見ると、どこかで見たことがあるように思えるかもしれません。実はこれはツクモロボット王国や千石電商で売られているシャープのPSDセンサ「GP2D12」にシリアル通信機能を追加したもので、概観はほとんど同じです。オリジナルのGP2D12は電圧の強弱で距離を出力するので受け側はADCを使い、IR−600はシリアル通信で受けるという違いです。
ということで、IR−600を使う場合は「受ける方にADCが無い(PCなど)」の場合に使います。
ピンは4つあり、そのうちの3つを使います。写真は添付のピンヘッダをはんだ付けし、2550コネクタで作ったケーブルにさしたところです。
GP2D12がベースですが、コネクタはそのまま付いてますのでGP2D12(つまりアナログ電圧出力)としても使用できます。下の写真はGP2D12のコネクタをちょん切ってケーブルをつないだところです。これはいろいろ実験できるようにしてますが、IR−600を購入した場合はこのコネクタは無視でよいでしょう。
回路図
接続はいままでやってきたようにPCとTTL機器(つまりIR−600)との間にRS232Cドライバ/レシーバICを入れます。また、今回のIR−600は前回のRCサーボコントローラのように5V電源を持っていませんので5V電源回路も作ります。
<5V電源回路>
電子部品店などで一般的に売られている5Vレギュレータはxx7805xxというものが多いのですが、パワーを食うマイコンなどをつないだ場合は電流がひっぱれなくて電圧が落ちてマイコンがリセットする場合がありますがこのような場合は低ドロップタイプの5Vレギュレータを使います。今回はLM2940CTを使用してますが、私の場合、これをまとめ買いしてます。実際に、電源が原因で動かなかったということが何回かあったので、面倒なので常にこれを使うようにしてます。
<その他>
IR-600とMAX232AのVccとGNDには上の5V電源回路から取った電源をつなぎます。今回、IR-600からデータを送るだけですので、PCのCOMポートはRx(受信)だけつなげば良いです。COMポートの信号GNDも他のGNDにつなぎます。COMポートの7,8番ピンはRTS/CTSで、「RTS/CTSフロー制御でPCから送信の場合」にしか関係ないですが一応つないでおきました。
で、できたのがこんな感じです。
実際にはこの後にPCからデータを送信する機器をつなぐ予定なのでCOMポートのTx(TTL側から見ればRx)などもつないで、MAX232を経由して通信できるようにヘッダピンなどをつけています。コネクタ類は2550コネクタで簡単に作ってます。
D−sub9ピンメスはこんな感じでつないでます。オレンジがTx、黄色がRx、黒が信号GNDです。6,7番ピンはショートされています。
プログラム
送信とほとんど同じです。とりあえずソースは次の通り。AGComm.dllを参照に追加するのを忘れないで下さい。(詳しくは Winアプリを作ってみる を参照)
ポートをオープンするまでは送信プログラムの時と同じですが、IR−600は通信速度が4800なので
myComm.BaudRate = 4800;
となります。 IR−600からはどんどんデータが送られてくるので、ReceiveData()でデータを取得し、1つだけをConsole.WriteLine()で表示します。
0.5秒おきに10回だけデータを取った結果が次のようになりました。
手をかざす−>160前後
手を離す(天井まで約2.5m)−>ほぼ0
これで、PCに近づいたものの距離を測定できるようになりました。
2005年6月8日 |
|
|