概要
Arduinoに距測センサをつないで、距離を測定するための実験です。シャープのGP2Y0A21YK0Fというセンサを使います。秋葉原で1個400円で購入しました。
目的
電子部品の通販のページを見ていたら、距測センサを見つけました。距離に応じて出力される電圧が変化するセンサです。以下の項目について、実際に確認します。
- 電圧と距離の関係
データシート
GP2Y0A21YK0Fのデータシートを参照してどのようなものなのかを調べました。
概要
仕様の概要は以下の通りです。
項目 | 内容 |
---|---|
測定範囲 | 10cm~80㎝ |
入力電圧 | 4.5V~5.5V |
消費電流 | 30mA |
また、想定する利用方法として、以下が挙げられています。
- 非接触スイッチ(衛生用品とか照明の制御)
- ロボットクリーナー
- 省エネセンサ(ATMやコピー機、自動販売機)
- 娯楽設備(ロボット、アーケードゲーム機)
ロボットクリーナーって、やっぱりアレのことでしょうか?
その他、電源の安定性を確保するためにVccとGNDとの間に10μF以上のバイパスコンデンサを入れることが推奨されています。
出力電圧と距離の関係
出力電圧と距離の関係が示されていますが、「例」と書いてあります。あたりまえですが、測定する対象であるとか、条件によって異なるということでしょう。しかも、非線形なので、電圧から距離を求めるためには、少し工夫が必要そうです。
実験
実際にArduinoにと距測センサとを接続して、電圧と距離の関係を測定してみました。バイパスコンデンサはつけませんでした。
電圧と距離の関係
測定条件
白い紙と距測センサとの距離を変化させて、電圧と距離との関係を測定しました。Adruinoとつなげて使うので、電圧ではなく、ArduinoのanalogRead()の戻り値と距離との関係を測定しました。参照電圧は、デフォルトの5Vを利用しました。
距離は、10cmから65cmまで5㎝刻みで変化させました。センサをうまく水平にできていないかもしれないし、測定対象もきっちりと平行におかれていない可能性が高いしで、誤差は結構あると思います。
測定結果
測定結果を以下に示します。
analogRead()の値 | 78 | 82 | 88 | 98 | 110 | 123 | 135 | 155 | 184 | 228 | 303 | 452 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
距離(cm) | 65 | 60 | 55 | 50 | 45 | 40 | 35 | 30 | 25 | 20 | 15 | 10 |
グラフにすると以下のような感じです。
データシートよりは、少し低めの電圧が測定されました。あと、65cmを超えると、電圧の変動があまりなくなり、うまく測定できないように見えました。これは、測定方法が悪い可能性が高いです。
その他
誤って、電源のプラス・マイナスを逆につなげてしまったら壊れてしまいました。注意しましょう…
バージョン
Hardware: | Arduino UNO R3 |
Software: | Arduiono IDE 0022 |
最終更新日
July 14, 2024