LoRaWAN UDP Packet Forwarder 1
17.12.2024
Elektronik | Funk | Software
Der Technik-Blog
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.
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:
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.
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:
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.
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:
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 |
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 |
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:
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.
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.
PT1000 Sensoren können nicht direkt analog mit einem Mikrocontroller gemessen werden. Wie baut man einen Messwandler mit dem LM358 für den PT1000 und Arduino?
WeiterlesenDer PT100 ist ein sehr präziser industrieller Temperatursensor. In diesem Artikel geht es um den Bau eines Messverstärkers zum Einlesen eines PT100 am Arduino
WeiterlesenAEQ-WEB © 2015-2024 All Right Reserved