🍪 Privacy & Transparency

We and our partners use cookies to Store and/or access information on a device. We and our partners use data for Personalised ads and content, ad and content measurement, audience insights and product development. An example of data being processed may be a unique identifier stored in a cookie. Some of our partners may process your data as a part of their legitimate business interest without asking for consent. To view the purposes they believe they have legitimate interest for, or to object to this data processing use the vendor list link below. The consent submitted will only be used for data processing originating from this website. If you would like to change your settings or withdraw consent at any time, the link to do so is in our privacy policy accessible from our home page..

Vendor List | Privacy Policy
Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry PI

Menu
  • Projekte
    • LED’s
    • Servo & Schrittmotoren
    • Sound
    • LCD’s
    • Kommunikation
    • Sicherheit
    • Weekend Project
  • Arduino
    • Tutorials
    • ProMini
      • Anschließen & Programmieren
    • Nano
      • Arduino Nano – Übersicht
    • UNO
      • Übersicht
    • MEGA 2560
      • Übersicht
    • Leonardo
      • Übersicht
    • NodeMCU
      • NodeMCU – “Einer für (fast) Alles!”
    • Lilypad
      • Arduino: Lilypad “Jetzt Geht’s Rund!”
    • WEMOS
      • WEMOS D1 – Arduino UNO kompatibles Board mit ESP8266 Chip
      • WEMOS D1 Mini – Übersicht
      • Wemos D1 mini Shields
    • STM32x
      • STM32F103C8T6 – Übersicht
    • Maker UNO
      • Maker UNO – Überblick und Test
    • ATTiny85
      • Mini Arduino mit ATTiny85 Chip
      • ATtiny85 mit dem Arduino UNO beschreiben
  • Android
  • Über mich
  • DeutschDeutsch
  • EnglishEnglish
Menu

Arduino Lektion #103: Laser Distanz Sensor VL53LXX-V2

Veröffentlicht am 3. Februar 20201. Mai 2023 von Stefan Draeger

In diesem Beitrag möchte ich den Laser Distanz Sensor VL53LXX-V2 vorstellen. Dieser Sensor kann eine Distanz von bis zu 4 m messen und arbeitet dabei mit einer Abtastgeschwindigkeit von 50Hz.

Laser Distanz Sensor - VL53LXX-V2
Laser Distanz Sensor – VL53LXX-V2
  • Bezug
    • Lieferumfang
  • Technische Daten des VL53LXX-V2
  • Aufbau & Schaltung
    • Aufbau
    • Schaltung
  • Quellcode
    • Bibliothek
    • Beispiel – Ausgabe der Daten auf dem seriellen Monitor
    • Video
  • Vergleich mit einem Ultraschallsensor HC-SR04
  • Fazit

Bezug

Den Laser Distanz Sensor kann man über ebay.de für ca. 8 € inkl. Versandkosten beziehen oder deutlich günstiger über aliexpress.com (4,19 $ inkl. Versandkosten).

Ich habe den Sensor über aliexpress.com bestellt und habe ca. 5 Wochen auf diesen Sensor warten dürfen. Dafür aber weniger als die Hälfte bezahlt.

Lieferumfang

Der Sensor wird in einer kleinen Antistatik Tüte geliefert und enthält neben dem Sensor noch eine Stiftleiste.

Lieferumfang - Laser Distanz Sensor VL53LXX-V2
Lieferumfang – Laser Distanz Sensor VL53LXX-V2

Technische Daten des VL53LXX-V2

  • Betriebsspannung 3.3V bis 5.5V
  • Messbereich
    • Minimal 40 mm
    • Maximal 4 m
    • Messbereichsgenauigkeit ±5 %
  • Wellenlänge des Lasers 940 nm
  • Betriebstemperatur -20 °C bis 80 °C
  • Abmessungen
    • ohne Löcher 15 mm x 10 mm
    • mit Löcher 25 mm x 10 mm
    • Durchmesser der Löcher 3 mm

Aufbau & Schaltung

Bevor der Sensor verwendet werden kann, muss dieser mit der Stiftleiste verbunden werden. Um die Stiftleiste korrekt (also im 90° Winkel) an den Sensor zu löten habe ich zusätzlich ein 170 Pin Breadboard und die überzähligen Stifte verwendet.

anlöten der Stiftleiste an den Laser Distanz Sensor
anlöten der Stiftleiste an den Laser Distanz Sensor

Aufbau

Der Sensor verfügt über 6 Pins welche wie folgt an den Arduino UNO angeschlossen werden.

VL53LXX-V2Arduino UNO
VIN5V
GNDGND
SCLanaloger Pin A5
SDAanaloger Pin A4
GPIO01 
XSHUT 

Die Pins GPIO01 & XSHUT werden in meinen Beispielen zunächst nicht verwendet.

Schaltung

Aufbau der Schaltung - Laser Distanz Sensor am Arduino UNO
Aufbau der Schaltung – Laser Distanz Sensor am Arduino UNO

Quellcode

Bibliothek

Bibliotheken erleichtern einem Programmierer die Arbeiten enorm, besonders wenn man wie wir mit Hardware arbeitet und so die einzelnen Adressen und Speicherbereiche be-/verarbeiten muss. Daher gibt es auch für diesen Sensor eine Bibliothek, welche wir uns in die Entwicklungsumgebung (in meinem Fall wie immer die Arduino IDE) einbinden.

Den Bibliotheksverwalter erreicht man über das Hauptmenü „Sketch“ > „Bibliothek einbinden“ > „Bibliotheken verwalten…“. In diesem Dialog wird zunächst nach der Bibiothek mit dem Suchbegriff „vl53l“ (1) gesucht. Ich verwende die Bibliothek von Sparkfun und wähle den zweiten Eintrag aus den Suchergebnissen (2) nach dem betätigen der Schaltfläche „Installieren“ kann (nach Abschluss) der Dialog geschlossen werden (3).

Installieren der Bibliothek für das verwenden des Laser Distanz Sensors
Installieren der Bibliothek für das verwenden des Laser Distanz Sensors

Beispiel – Ausgabe der Daten auf dem seriellen Monitor

Der Bibliothek liegt ein Beispiel bei, wie man diesen Sensor in der Arduino IDE programmiert. Das werde ich hier nutzen und etwas umschreiben und kommentieren.

#include "Adafruit_VL53L0X.h"

Adafruit_VL53L0X lox = Adafruit_VL53L0X();

//Um die Debug Ausgaben zu aktivieren
//muss dieser Wert auf "true" gesetzt werden.
#define debugSensor false

//Es werden 10 Messungen durchgeführt.
const int MAX_DATA = 10;
//der Index der aktuellen Messung
int readDataIndex = -1;
//das Array für die Daten
int data[MAX_DATA] = {};

//zählen der fehlerhaften Messungen
int failureMeasures = 0;

void setup() {
  //begin der seriellen Kommunikation mit 115200 baud
  Serial.begin(115200);

  //Warten auf den Seriellen Port
  while (! Serial) {
    delay(1);
  }

  //Wenn der Serielle Port bereit ist dann eine Ausgabe auf diesen tätigen 
  //und prüfen ob der Sensor korrekt angeschlossen ist (ob dieser Ansprechbar ist)
  Serial.println("GY-VL53L0X test");
  if (!lox.begin()) {
    Serial.println("Fehler beim lesen des Sensors!");
    while(1); //eine Endlos Schleife 
  }
}

void loop() {
  //instanziieren des Sensors zum empfangen von Daten
  VL53L0X_RangingMeasurementData_t measure;
  lox.rangingTest(&measure, debugSensor);

  //lesen des Sensor Status
  //der Sensor kann verschiedene Status annehmen, 
  //jedoch interessiert für uns nur der Wert "4"
  int sensorStatus = measure.RangeStatus;
  //Wenn Daten empfangen wurden dann...
  if (sensorStatus != VL53L0X_DEVICEERROR_MSRCNOTARGET) { 
    //den Zähler für das Array um eins erhöhen
    readDataIndex++;
    //zuweisen des Wertes in das Array
    data[readDataIndex] = measure.RangeMilliMeter;

    //Wenn das Array "fertig" befüllt ist, dann...
    if(readDataIndex == MAX_DATA){
      //eine Variable für die Berechnung des Durchschnittswertes
      int averageData = 0;
      //über das Array itereieren und die Daten zusammenzählen
      for(int i=0;i<MAX_DATA;i++){
        averageData = averageData+data[i];
      }
      //um den Durchschnittswert zu erhalten muss man die Zahl
      //durch die Anzahl der Werte teilen
      averageData = averageData / MAX_DATA;
      //Ausgeben des berechnenen Durchschnitts für die Distanz
      Serial.print("Distanz: ");
      Serial.print(averageData);  
      Serial.println("mm");  
      readDataIndex = -1;
      failureMeasures =0;
    }else if(debugSensor && readDataIndex % 2 == 0){
      Serial.print("X");
    }
  } else if(debugSensor && sensorStatus != VL53L0X_DEVICEERROR_NONE) {
    Serial.println(" Signal konnte nicht gelesen / verarbeitet werden! ");
  } else {
    if(debugSensor && ++failureMeasures % 2==0){
      Serial.print("-");
    }    
  }

  if(debugSensor && (failureMeasures + readDataIndex)> MAX_DATA){
      Serial.println("");
  }
  //eine Pause von 5ms einlegen
  delay(5);
}

Video

Test des Laser Distanzsensors GY-VL53L0XV2
Dieses Video auf YouTube ansehen.

Vergleich mit einem Ultraschallsensor HC-SR04

Den Ultraschallsensor HC-SR04 habe ich bereits im Beitrag Arduino Lektion 9: Ultraschall Modul HC-SR04 vorgestellt. Da beide Sensoren (GY-VL53L0XV2 & HC-SR04) den Abstand von Objekten messen können, möchte ich kurz beide Sensoren testen.

Man kann sehr gut erkennen das der Ultraschallsensor den Abstand nicht so genau misst wie der Laser Distanzsensor.

Fazit

Der Laser Distanzsensor GY-VL53L0XV2 ist günstig in der Anschaffung und durch das einfache Einbinden einer Bibliothek auch genauso einfach zu programmieren. Jedoch ist dieser nicht ganz so genau und hatte in meinem Test eine Abweichung von bis zu mehreren Zentimetern.

4 thoughts on “Arduino Lektion #103: Laser Distanz Sensor VL53LXX-V2”

  1. Frank Carius sagt:
    3. Oktober 2020 um 13:18 Uhr

    Netter Artikel. Habe den VL53lxx auch grade beim Stöbern entdeckt. Auch der vergleich zum HC-SR04 hilft. Aber könntest du den Test noch mal mit größeren Abständen machen? Der TOF-Sensor soll ja „bis zu 4m“ messen können.
    Ich denke da an Belegtanzeigen von Parkbuchten o.a. Was passiert, wenn das „Hindernis“ nicht genau im rechten Winkel zur Messtrecke steht. ist dann die Erkennung auch noch OK?
    Dann wäre der Blog-Artikel perfekt 🙂

    Antworten
  2. Allan Høiberg sagt:
    21. Juni 2021 um 18:00 Uhr

    Interessanter Artikel. Ich habe gerade ein Paar dieser Sensoren erhalten und will auch damit experimentieren.

    Als erstes bemerke ich jedoch das auf der Platine VL53LXX steht, und nicht L1X/L0X wie beim Verkäufer auf Aliexpress. Kann das wohl mit der Ungenauigkeit zu tun haben?

    Antworten
  3. Karsten sagt:
    24. August 2022 um 09:15 Uhr

    Ich habe Fragezeichen.
    Im Video ist zu sehen, wie weit die Pappwand weg ist und der Abstand zum Sensor stimmt doch. Dagegen ist die Ausgabe vom Ultraschallsensor doch falsch.
    Das passt nicht zueinander.

    Antworten
    1. Stefan Draeger sagt:
      24. August 2022 um 09:40 Uhr

      Hi Karsten,

      in einem anderen Beitrag habe ich das Problem mit dem Laserdistanzsensor gefunden, je nachdem wie hell bzw. dunkel die Oberfläche ist umso genauer ist dieser Sensor.

      Gruß,

      Stefan Draeger

      Antworten

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Kategorien

Tools

  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator
  • Widerstandsrechner
  • Rechner für Strom & Widerstände
  • ASCII Tabelle

Meta

  • Videothek
  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Kontakt
  • Cookie-Richtlinie (EU)

Links

Blogverzeichnis Bloggerei.de Blogverzeichnis TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com
©2023 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
x
x