こんばんは!
今回は赤外線距離センサ(GP2Y0A21YK)を使っていこうと思います。
概要
赤外線距離センサ(GP2Y0A21YK)を使って距離を測定し、シリアルモニタに出力する。
使用するもの
・Arduinoメインボード(https://amzn.to/2vkPIUH)
・USBケーブル(https://amzn.to/2UHhntl)
・赤外線距離センサ(http://akizukidenshi.com/catalog/g/gI-02551/)
赤外線センサとは
赤外線距離センサは赤外線の光が高速すぎて計測できないため、超音波距離センサのように反射して返ってきた光の速度の誤差を求めることができません。
この赤外線距離センサの距離の計測方法は、発信した赤外線が障害物に当たってはね返ってきたものを受信し、そのときの受信側での入射角度の誤差によって距離を算出しています。
今回使用する赤外線距離センサは「GP2Y0A21YK」というものです。
これは、赤外線の発信側と受信側が一体になっているセンサーです。
発信した赤外線が物体に反射して受信すると、距離によって出力電圧が変化します。この出力電圧で距離を検出することができます。
この赤外線距離センサが感知できるのは10cm~80cmです。
この赤外線距離センサは黄色、黒、赤の3つのケーブルが取り付けられており、それぞれアナログピン、GND、電源電圧(5V)に配線します。
詳しくは公式のデータシートをご覧ください。
手順
まず、Arduino UNOと赤外線距離センサを以下の図のように接続します。
これでハード側は終わりです。
次にArduino IDEを起動して以下のプログラムを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | float Vcc = 5.0; float dist1; float dist2; void setup(){ Serial.begin(9600); } void loop(){ dist1 = Vcc*analogRead(A0)/1023; dist2 = 26.549*pow(dist1,-1.2091); Serial.println(dist2); delay(300); } |
このプログラムの
1 2 | dist1 = Vcc*analogRead(A0)/1023; dist2 = 26.549*pow(dist1,-1.2091); |
の部分の近似式は「みんなのArduino入門」に記述されていたものを参考にさせていただきました。
このプログラムをArduinoメインボードに書き込んでシリアルモニタを起動するとほぼ正確に距離が計測できているはずです。
まとめ
今回は「GP2Y0A21YK」という赤外線センサを使ってみました。
個人的には測定範囲が狭く、精度もあまり高くないため、同じくらいの値段で購入でき、測定範囲が広く、精度も比較的高い超音波センサを使う方がいいと思います…
今回はこれで終わります。
ではまた!