■ PIC-BASIC で超音波距離センサーを使う ■

浅草ギ研の超音波距離センサーの測定値を PIC-BASIC で読み取ります。
使用するセンサーは以前売られていた5ピン端子のものです。 最近、超音波距離センサーはバージョンアップされて、もう同型は入手する事が出来ません。
浅草ギ研のHPに 使用事例が載っていますので、そちらも参考にしてください。

■回路
2つのLEDは動作確認用です。
初めての電子回路工作でセンサーを動かせているかが判らなかったので、入/出力ピンが High の時に光るようにしました。 なくても大丈夫です。
電解コンデンサはベースボードからの電源にノイズ成分がのっていたので取り付けたものです。 測定結果が安定しているよう(頻繁に0を返していない)なら取り付ける必要はありません。

旧型の超音波距離センサーは5ピンですが、うち1本は未使用です。 回路図はセンサーを正面から見た時のピン配置になっています。

■プログラム
超音波センサーの入力ピンを10μs以上 High にしてから Low にすると超音波を発信します。
センサーは自分の出した瞬間の超音波を拾わないように少し待ってから超音波が返ってくるまでの間、 出力パルスを High にします。この長さを測ることで対象物までの距離を計測します。

カウント部が IF文 と WHILE文 に分かれています。 IF文の部分で「超音波を拾わないように少し待って」に対応しています。 実行した場合に値を返さずに無限ループするようなら、この IF文 の数を増やして対応すればいいでしょう。

プログラムは単純にカウンタを返すだけです。距離の算出は省きました(汗)
'	PIC-BASIC で超音波距離センサーを使う
'
DIM Pcnt    AS BYTE

    '------------- LCD初期設定
    INITLCD
    CLEARLCD
    '------------- ポート初期設定
    INPUT  re.BIT0
    OUTPUT re.BIT1

    WHILE(1)
        GOSUB PLUSCNT

        '--------- 距離表示
        SETPOS 1,0
        PUTLCD "CNT:",Pcnt, "   "
        SLEEP 500
	WEND

PLUSCNT:
    Pcnt = 0
    '------------- センサーON
    HIGH re.BIT1
    SLEEP 1
    LOW  re.BIT1
    '------------- HIGH の時間をカウント
    IF re.BIT0 = 1 THEN Pcnt = Pcnt + 1
    IF re.BIT0 = 1 THEN Pcnt = Pcnt + 1
    IF re.BIT0 = 1 THEN Pcnt = Pcnt + 1
    IF re.BIT0 = 1 THEN Pcnt = Pcnt + 1
    WHILE (re.BIT0 = 1)
        Pcnt = Pcnt + 1
    WEND
    RETURN
 

■測定結果
縦置きと横置きの場合を測定しました。
組み合わせると3次元空間での測定値がイメージできるかと思います。
対象物なしの時の値は66でした。これは部屋の隅までの距離です。
最大遠(家外に向けて計測)の時の値は 235 でした。

縦置きの場合
距離 cm 2015 10← 5軸線上 → 510 1520
5 6666 66 3 2 366 6666
10 6666 66 4 4 466 6666
15 6666 7 6 6 6 7 6666
20 6666 9 8 8 8 9 6666
25 6611 101010 1010 1066
30 1312 111111 1111 1313
35 1413 131313 1313 1415
40 1515 151414 1515 1516

横置きの場合
距離 cm 2015 10← 5軸線上 → 510 1520
5 6666 66 3 3 366 6666
10 6666 6 5 4 5 6 6666
15 6666 8 6 6 6 8 6666
20 6610 8 8 7 8 9 1066
25 6611 10 9 9 910 1166
30 6612 111111 1111 1366
35 6614 131313 1313 1466
40 1615 141414 1415 1616


あらゆる被害についてオイラは一切の責任を負いませんのでご了承を。
記載漏れや間違いなどありましたらご指摘よろしくお願いします。


■戻る