Time-of-Flight Mikro-LIDAR-Entfernungssensor (VL53L0X)

../_images/20_VL53L0X_module.png

Einführung

Der VL53L0X ist ein Time-of-Flight (ToF) Distanzmesssensor, der mithilfe von Lasertechnologie präzise Entfernungen bis zu 2 Metern messen kann. Das Modul ist ein Multisensor-System, das einen integrierten Laseremitter, Detektor und Mikrocontroller enthält. Es ist vollständig ausgestattet mit erforderlichen Komponenten wie Pull-up-Widerständen und Kondensatoren und bietet einen Messbereich von 50 - 1200 mm.

Funktionsprinzip

Das VL53L0X-Modul arbeitet auf dem Prinzip der Flugzeit (ToF). Es sendet einen Laserimpuls aus und misst die Zeit, die der Impuls benötigt, um zurückzukommen. Diese Zeit ist proportional zur Entfernung zwischen Sensor und Objekt. Das Modul nutzt ein SPAD-Array (Single-Photon-Avalanche-Diode) für die Detektion des reflektierten Lichts vom Objekt. Das SPAD-Array kann selbst einzelne Photonen detektieren. Ein integrierter Mikrocontroller verarbeitet die Daten des SPAD-Arrays und berechnet die Entfernung zum Objekt.

Anwendungsbeispiele

Hardwarekomponenten

  • Arduino Uno R4 oder R3 Board * 1

  • Time-of-Flight Mikro-LIDAR-Entfernungssensor * 1

  • Jumperkabel

Schaltungsaufbau

../_images/20_VL53L0X_module_circuit.png

Programmcode

Bemerkung

Für die Installation der Bibliothek verwenden Sie den Arduino-Bibliotheksmanager und suchen Sie nach „Adafruit_VL53L0X“ und installieren Sie diese.



Code-Erläuterung

  1. Einbindung der notwendigen Bibliothek und Initialisierung des Sensorobjekts. Wir beginnen mit der Einbindung der Bibliothek für den VL53L0X-Sensor und erstellen eine Instanz der Klasse Adafruit_VL53L0X.

    Bemerkung

    Verwenden Sie den Arduino-Bibliotheksmanager und suchen Sie nach „Adafruit_VL53L0X“ und installieren Sie diese.

    #include <Adafruit_VL53L0X.h>
    Adafruit_VL53L0X lox = Adafruit_VL53L0X();
    
  2. Initialisierung in der Funktion setup(). Hier richten wir die serielle Kommunikation ein und initialisieren den Entfernungssensor. Kann der Sensor nicht initialisiert werden, hält das Programm an.

    void setup() {
      Serial.begin(115200);
      while (!Serial) {
        delay(1);
      }
      Serial.println("Adafruit VL53L0X test");
      if (!lox.begin()) {
        Serial.println(F("Failed to boot VL53L0X"));
        while (1)
          ;
      }
      Serial.println(F("VL53L0X API Simple Ranging example\n\n"));
    }
    
  3. Erfassung und Anzeige der Messwerte in der Funktion loop(). Kontinuierlich nimmt der Arduino eine Entfernungsmessung vor und zeigt diese, falls gültig, im seriellen Monitor an.

    void loop() {
      VL53L0X_RangingMeasurementData_t measure;
      Serial.print("Reading a measurement... ");
      lox.rangingTest(&measure, false);
      if (measure.RangeStatus != 4) {
        Serial.print("Distance (mm): ");
        Serial.println(measure.RangeMilliMeter);
      } else {
        Serial.println(" out of range ");
      }
      delay(100);
    }
    

Weitere Ideen

  • Integration des Sensors in eine Anzeige (wie ein OLED), um die Entfernungsdaten anzuzeigen.

  • Verwenden der Entfernungsdaten, um andere Komponenten wie LEDs oder Summer auszulösen, wenn ein Objekt in einen bestimmten Bereich kommt.

Weitere Projekte

  • fun_tof_distance_monitor