Hardware - Laser-Entfernungsmesser VL53L..X (ToF)

Den Laser-Entfernungsmesser ist in 2 Varianten als Modulplatine erhältlich - als VL53L0X  ( bis zu 2m Reichweite )  oder als VL53L1X ( bis 4m Reichweite ). 

Die Reichweitenangaben sollten allerdings "mit Vorsicht" betrachtet werden...sie gelten nur unter optimalen Bedingungen.

Speziell Lichteinfall aus anderen Quellen ( z.B. Sonne ) verwirren den Sensor sehr schnell.

Auch die Oberflächenbeschaffenheit des Messobjektes hat einen wesentlichen Einfluss. Sehr gut sollen helle Oberflächen den Strahl reflektieren, dunklere Oberflächen "schlucken" anscheinend zuviel von der Energie des Laser-Strahls.

 

Der Sensor hat eine (digitale) I2C-Schnittstelle  ( SDA und SCL ), mit welcher er seine Daten an den Zielcomputer sendet. Die PIN-Belegung am Computer wird von dessen Hardware vorgegeben.

Die Spannungsversorgung ( 3.5-5.0 V ) erfolgt über seperate Pins ( VIN und GND ), sie kann auch unabhängig vom Computer eingespeist werden, es muss dann aber eine Verbindung zwischen den GND-PINS des Sensors und des Computers vorhanden sein.

Es gibt noch einen PIN für eine Signalausgabe (als Melde-PIN für ein programmiertes Ereignis) und einen PIN zum Ein-/Ausschalten des Sensors. (damit habe ich mich aber noch nicht beschäftigt)

Für den Sensor gibt es in der Arduino-Oberfläche spezielle Bibliotheken, dort sind dann auch Beispielprogramme enthalten.

ZITAT..... z.B. in der Adafruit-Bibliothek...

(Achtung - der Text [code].....[/code] gehört NICHT zum Programm..)

[code]
#include "Adafruit_VL53L0X.h"

Adafruit_VL53L0X lox = Adafruit_VL53L0X();

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

  // 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);
}
[/code]

ENDE ZITAT...

Es gibt auch noch mehrere andere verfügbare Bibliotheken für die Arduino-Oberfläche, welche prinzipiell analog funktionieren. Dies ist bei Verwendung des Sensors zusammen mit anderen Bauteilen relevant, da sich ggf. auch PIN's des ESP in der Nutzung gegenseitig beeinflussen können.

Der VL53L0X ist im WEB aktuell ( auf deutschen Plattformen) für 5 - 7 € erhältlich, der VL53L1X kostet etwa das Doppelte.

Probiert es doch einfach aus....

zurück zur Startseite