以前、「赤外線測距センサーを注文し直し(^^;」というエントリーで書いたように、最初に購入した測距センサーでは測距出来る距離が考えている要件に足りなかったので、別のセンサーを改めて購入し直した。
その部品が先週届いたのだが、今日になって、やっと Arduino につないでみることが出来た。測距センサーは SHARP GP2Y0A21YK。測距範囲が 10~80cm のやつ。
接続図(回路図に非ず(^^; 回路図、よくわかんねえ(^^;)はこんな感じ。
「小さな電源の場合は、電源ピン付近に10uF程度のコンデンサを入れた方が安心」という記事を見たので、「赤外線測距モジュールで物体の距離を測ってみます(1/2)」というページを参考にコンデンサも入れてみた。
んで、センサーから目標物の距離によって、Vo コネクタから出力される電圧が変化するので、それを Arduino のアナログ入力ピンで拾うんだけど、数値はボルト数ではない。
アナログ入力ピンから読んだ値 ÷ 1023 × 5 でボルト数になるみたいだけど、わざわざボルトに直して値の評価をする必要もないし、そもそも、どうも電圧にも個体差があるようだ。
ということで、こういうプログラムを作って、距離によって実際の値がどのように変化するか調べてみた。
/** GP2Y0A21 sensor tester*/void setup() {pinMode(8, OUTPUT); // デジタルピン 8番から 5V 供給Serial.begin(9600) ; // 9600bpsでシリアル通信のポートを開きますdigitalWrite(8, HIGH); // 電源ON}void loop() {int ans ;ans = analogRead(0) ; // センサーから読込むSerial.println(ans) ; // シリアルモニターに表示させるdelay(5000) ; // 5000ms(5秒)時間待ち}
実際にアナログピンで取れた数値はこんな感じ。
10cm48047747920cm27127127230cm20220420340cm18518518650cm17617717860cm11011011070cm10510610680cm96106102
目標物を手持ちで計ったんで、若干バラつきがあるけど、まあ、だいたいまとまった数字が出てるね。
数値と距離の関係を XY グラフにした時、線は直線ではなく二次曲線「みたい」に曲がる。だから 10~20cmでは数値が大きく変化するが、70~80cmではあまり変わらない。
この曲線を完璧に計算式で再現するのは相当難しいらしい。それもあって、やはりこのように実際の数字を計ってみるのが一番良いようだ。
コメントする