ARDUINOでI2C接続の測長センサーを使う

I2C接続 測長センサー

 今回は、ARDUINOで2つの I2C 接続の測長センサーを使います。写真左は “AE-VL53L0X”、右は “GP2Y0E03” です。いずれも秋月電子通商で取り扱いしています。

項 目 AE-VL53L0X GP2Y0E03
電源電圧 3.3~5.0V 2.7~5.5V
計測範囲 約3~200 cm 約 4~50cm
光源 940nm Class 1レーザー 赤外LED採用
接続 I/F I2C I2C、アナログ出力
価格(参考) 1080円 760円

配線接続

 ARDUINOとの接続は次の図の通りです。
 GP2Y0E03の電源電圧は、~5.5Vとありますが、信号電圧は ~3.3Vまでなので、I2C電圧変換モジュール(AE-FXMA2102)で信号電圧レベルを変換し、ARDUINOに接続します。


GP2Y0E03 計測プログラム

 GP2Y0E03 のI2Cデバイスアドレスは、“0x40” 固定とのことです。確かめてはいませんが、変更も可能の様です。
 測長結果は、下記表の通りアドレス 0x5E , 0x5F に格納されています。Shift Bit (0x35)設定により、測長範囲を変更できる様ですが、今回は default のままで変更はしません。
 測長距離も同様に下記表に記載されています。

測距値 = (Distance[11:4]*16 + Distance[3:0] ) / 16 / (2*2)
n : Shift Bit =2 (default)

 簡単な計測プログラムを示します。

 ARDUINO シリアルモニタ出力結果は下記の通りです。

AE-VL53L0X 計測プログラム

 「ツール」ー「ライブラリを管理」を選択

 ライブラリインストール(下記はインストール済状態)

 サンプルスケッチを開く

 サンプルスケッチをARDUINOに書き込み実行します。
 図はシリアルモニタへの出力状態です。
※プログラムとシリアルモニタ通信速度は一致させる。

 サンプルスケッチですが、一応掲載します。

#include "Adafruit_VL53L0X.h"

Adafruit_VL53L0X lox = Adafruit_VL53L0X();

void setup() {
  Serial.begin(9600);

  // wait until serial port opens for native USB devices
  while (! Serial) {
    delay(1);
  }
  
  Serial.println("Adafruit VL53L0X test");
  if (!lox.begin()) {
    Serial.println(F("Failed to boot VL53L0X"));
    while(1);
  }
  // power 
  Serial.println(F("VL53L0X API Simple Ranging example\n\n")); 
}


void loop() {
  VL53L0X_RangingMeasurementData_t measure;
    
  Serial.print("Reading a measurement... ");
  lox.rangingTest(&measure, false); // pass in 'true' to get debug data printout!

  if (measure.RangeStatus != 4) {  // phase failures have incorrect data
    Serial.print("Distance (mm): "); Serial.println(measure.RangeMilliMeter);
  } else {
    Serial.println(" out of range ");
  }
    
  delay(100);
}

まとめ

 次回はエクセルVBAから、スライドテーブルとこのセンサーを制御し、連続計測を実施したいと思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です