preloader

Auf AEQ-WEB Suchen

AEQ-WEB | Blog

Arduino VL53L0X Laser Distance Sensor - Time of Flight

VL53L0X TOF Laser Distanz Sensor

Beim VL53L0X handelt es sich um einen Laser-Distanz-Sensor mit I2C. Ein fertiges Board bieten viele Hersteller an, darunter auch Adafruit. In diesem Artikel geht es um die Inbetriebnahme des Sensors mit dem Arduino. Anschließend folgt noch ein Testbericht über die Genauigkeit des Sensors und ob dieser eventuell eine alternative zu den Ultraschall-Sensoren (Beispiel HC-SR04) ist.

Weiterführende Links:

LV53L0X Distance Sensor


Anschluss an den Arduino

Der Sensor kommuniziert über die I2C-Schnittstelle mit dem Arduino. Es werden neben der Stromversorgung noch für die Kommunikation die Anschlüsse A4 & A5 (SDA & SCL) vom Arduino benötigt. Der Sensor arbeitet sowohl mit 3,3 Volt als auch mit 5 Volt. Außerdem gibt es einen digitalen Ausgang, der beim Überschreiten eines definierten Bereiches aktiviert wird. Dadurch kann beispielsweise ein Interrupt ausgelöst werden. Die folgende Grafik zeigt den Anschluss des VL53L0X mit dem Arduino UNO:

Arduino VL53L0X Arduino Schaltplan

Wie funktioniert der Sensor?

Der Sensor sendet einen Lichtpuls im Infrarot-Bereich (940 nm) aus, der wiederum von einem Gegenstand vor dem Sensor reflektiert wird. Über die Laufzeit zwischen Infrarot-Diode und dem Phototransistor wird die Distanz von einem eingebauten Mikrocontroller errechnet. Die errechnete Distanz wird anschließend über I2C an den Mikrocontroller (Arduino, ESP etc.) gesendet. Außerdem gibt es zwei verschiedene Übertragungsmodi, nämlich eine aktive und eine passive. Beim aktiven Modus überträgt der Sensor ständig neue Messwerte an den Arduino, beim passiven Modus müssen die Messwerte erst vom Arduino aktiv abgefragt werden. Diese Funktionen sind auch als Continuous beziehungsweise Single bekannt.

Die Library

Es gibt mehrere Librarys für den VL53L0X, darunter befindet sich auch die VL53L0X von Adafruit. Nach einigen Praxistestes mit verschiedenen Librarys hat sich jedoch die VL53L0X Library von Pololu als die beste Bibliothek bewährt. Die Library ist sehr einfach zu bedienen und bietet verschiedene Betriebsmodi an:

  • Sehr schnelle Messintervalle, jedoch mit größeren Toleranzen
  • Sehr geringe Toleranzen, jedoch mit einer längeren Messzeit
  • Long-Range Modus

  • Der Sensor kann die Distanz innerhalb von rund 30 Millisekunden ermitteln, was besonders für Messungen an bewegten Objekten interessant ist. Allerdings muss man hier eine größere Ungenauigkeit in Kauf nehmen. Wenn vier bis fünf Messintervalle pro Sekunde noch ausreichend sind, so kann der High-Accuracy-Modus aktiviert werden. Der Sensor liefert in diesem Modus dann je nach Oberflächenbeschaffung des zu messenden Objektes deutlich präzisere Ergebnisse.

    Genauigkeit vom Sensor

    Die Genauigkeit des Sensors hängt neben der Einstellung vom Betriebsmodus vor allem auch von der Oberfläche des zu messenden Objektes ab. Nichtreflektierende Gegenstände wie Holz, matter Kunststoff, Karton etc. können sehr exakt gemessen werden. Ebenso auch Metalle, welche nicht zu stark reflektieren, liefern sehr gute Ergebnisse. Deutlich schlechtere Ergebnisse werden von reflektierenden Gegenständen wie Glas oder sehr glatte spiegelnde Oberflächen erzielt. In einem Praxistest wurden verschiedene Gegenstände (Kunststoff, Glas, Metall) über unterschiedliche Entfernungen gemessen, woraus folgende Ergebnisse gewonnen werden konnten:

    Verhalten bei Kunststoff

    Distanz max. Abweichung
    30 mm 2 mm
    50 mm 2 mm
    100 mm 1 mm
    175 mm 4 mm
    210 mm 7 mm
    250 mm 3 mm
    300 mm 7 mm
    400 mm 35 mm
    500 mm 70 mm


    Verhalten bei Glas

    Distanz max. Abweichung
    30 mm 12 mm
    50 mm 4 mm
    100 mm 13 mm
    175 mm 3 mm
    210 mm 7 mm
    250 mm 11 mm
    300 mm 50 mm
    400 mm 150 mm
    500 mm nicht messbar


    Verhalten bei Metall (Matt)

    Distanz max. Abweichung
    30 mm 1 mm
    50 mm 1 mm
    100 mm 5 mm
    175 mm 4 mm
    210 mm 2 mm
    250 mm 3 mm
    300 mm 6 mm
    400 mm 24 mm
    500 mm 42 mm




    *Alle Angaben ohne Gewähr.
    Das folgende Bild zeigt den Versuchsaufbau, aus dem die Messwerte für die oberen Tabellen entnommen wurden:

    VL53L0X Laser Distance Sensor Test Arduino

    Zusammengefasst kann man sagen, dass der Sensor deutlich genauer im Vergleich zu den bekannten Ultraschall-Sensoren für den Arduino ist. In der Praxis ist der Sensor im Nahbereich von etwa 50 bis 350 Millimeter sehr gut zu gebrauchen. Anzumerken ist, dass der Sensor nicht punktförmig misst, sondern einen kleinen Kegel hat. Dies bedeutet, dass ab einer Entfernung von bereits mehr als 30 Zentimeter deutliche Reflexionen von umliegenden Gegenständen oder Flächen auftreten können, die wiederum die Messung beeinflussen. Trotzdem kann der Sensor Entfernungen von bis zu zwei Meter messen. Bei einer Messung zur Wand oder auf die Decke sind daher auch bei über einem Meter Entfernung noch präzise Ergebnisse zu erwarten. Ein weiterer Einflussfaktor ist die Sonneneinstrahlung und auch der Betrieb von mehreren Sensoren gleichzeitig im engen Umfeld.

    940nm - Stört das Sonnenlicht?

    Der Sensor arbeitet im Infrarot-Bereich am Farbspektrum nicht weit entfernt vom sichtbaren Bereich. Ebenfalls stark vertreten ist in diesem Bereich das Sonnenlicht. Wird der Sensor im Freien verwendet, muss dies berücksichtigt werden. Ein praktischer Outdoor-Test ist aktuell noch ausständig.


    Share:
    thumbnail
    28.02.2017
    Arduino Anemometer bauen

    Auf dieser Seite geht es um die Konfiguration eines Anemometer Windrades mit dem Arduino Board. Welche Bauteile und Software man braucht, erfährt ihr hier

    Alex @ AEQ-WEB
    thumbnail
    02.06.2018
    Arduino Wetterstation

    Hier gibt es eine professionelle Anleitung zum Bau einer Arduino Wetterstation. Temperatur, Wind, Feuchte & Luftdruck werden per HTTP an den Server gesendet

    Alex @ AEQ-WEB