Verwendung eines VL53L1X Laser-Abstandssensors zur Messung von Entfernungen bis zu 4 Metern
Der VL53L1X ist ein Zeit-of-Flight-Laser-Distanzsensor, der in der Lage ist, Distanzen von bis zu 4 Metern mit hoher Genauigkeit zu messen. Dieser Sensor kommuniziert über I2C und ist vielseitig für verschiedene Anwendungen, wie Robotik und Automatisierung. In diesem Tutorial werden wir erkunden, wie man den VL53L1X-Sensor mit einem Arduino einrichtet und Distanzwerte effektiv ausliest.
Der Sensor wird entweder mit 3,3 V oder 5 V betrieben und verfügt über mehrere Pins für die I2C-Kommunikation, einschließlich SDA und SCL. Der Sensor kann Entfernungen mit einer Frequenz von 50 Hz messen, was schnelle Distanzmessungen ermöglicht. Dieses Tutorial führt Sie durch den Verkabelungsprozess und den Code, der erforderlich ist, um den Sensor reibungslos zu betreiben. Für weitere Erläuterungen können Sie das Video (im Video bei 00:00) ansehen.
Hardware erklärt
Die Hauptkomponente dieses Projekts ist der VL53L1X Laser-Distanzsensor, der eine Technologie namens Zeitflug (ToF) nutzt, um Entfernungen zu messen. Das bedeutet, dass er die Entfernung zu einem Objekt berechnet, indem er die Zeit misst, die ein Laserpuls benötigt, um zurückzukehren, nachdem er ein Objekt getroffen hat. Der Sensor verfügt über eine I2C-Kommunikation, die eine einfache Integration mit Mikrocontrollern wie Arduino ermöglicht. Neben dem Sensor benötigen Sie eine Arduino-Platine zur Verarbeitung. Der Arduino übernimmt die Kommunikation mit dem VL53L1X und zeigt die gemessenen Entfernungen an. Die Einrichtung ist unkompliziert, da der Sensor direkt von den Ausgangspins des Arduinos mit Strom versorgt werden kann.
Datenblattdetails
| Hersteller | STMicroelectronics |
|---|---|
| Teilenummer | VL53L1X |
| Logik-/IO-Spannung | 3,3 - 5 V |
| Versorgungsspannung | 2,6 - 5,5 V |
| Ausgangsstrom (pro Kanal) | Nicht zutreffend |
| Spitzenstrom (pro Kanal) | Nicht zutreffend |
| PWM-Frequenzrichtlinien | Nicht zutreffend |
| Eingangslogikschwellen | 0,3 × VCC (niedrig), 0,7 × VCC (hoch) |
| Spannungsabfall / RDS(on)/ Sättigung | Nicht zutreffend |
| Thermische Grenzen | 0 bis 85 °C |
| Paket | 4,9 x 2,5 x 1,6 mm |
| Hinweise / Varianten | Langstrecken-Zeitflug-Sensor |
- Versorgen Sie den Sensor mit 3,3 V oder 5 V, je nach Bedarf.
- Verwenden Sie die I2C-Pins, SDA und SCL, für die Kommunikation.
- Stellen Sie den Entfernungsmodus entsprechend Ihren Bedürfnissen ein (kurz, mittel, lang).
- Stellen Sie sicher, dass der Sensor kalibriert ist, um genaue Abstandslesungen zu gewährleisten.
- Gehen Sie mit den Bedingungen des Umgebungslichts vorsichtig um, da sie die Messungen beeinflussen können.
Verdrahtungsanweisungen

Um den VL53L1X-Sensor mit einem Arduino zu verbinden, schließen Sie den VCC-Pin des Sensors mit einem roten Draht an den 5V-Pin des Arduino an. Verbinden Sie den Ground-Pin (GND) des Sensors mit dem GND des Arduino mit einem braunen Draht. Für die I2C-Kommunikation verbinden Sie den SDA-Pin des Sensors mit dem A4-Pin des Arduino mit einem gelben Draht und den SCL-Pin mit dem A5-Pin mit einem grünen Draht. Wenn Sie die optionalen Interrupt- und Shutdown-Pins verwenden möchten, schließen Sie den Shutdown-Pin an den digitalen Pin 2 und den Interrupt-Pin an den digitalen Pin 3 an, diese sind jedoch für den grundlegenden Betrieb nicht erforderlich.
Codebeispiele und Anleitung
Im Code binden wir zunächst die erforderlichen Bibliotheken ein und definieren die Pins für den Sensor. Wir erstellen eine Instanz des Sensors mit der Zeile:
SFEVL53L1X distanceSensor;Diese Zeile initialisiert den Sensor, wodurch wir später im Programm seine Methoden aufrufen können. Als Nächstes richten wir die I2C-Kommunikation ein und initialisieren den Sensor:
void setup(void)
{
Wire.begin();
Serial.begin(9600);
Serial.println("VL53L1X Qwiic Test");
if (distanceSensor.begin() == 0) //Begin returns 0 on a good init
{
Serial.println("Sensor online!");
}
}In diesem Auszug beginnen wir die I2C-Kommunikation mitWire.begin()und überprüfen, ob der Sensor erfolgreich initialisiert wurde. Schließlich verwenden wir im Loop den folgenden Code, um die Entfernung zu messen:
void loop(void)
{
int distance = distanceSensor.getDistance(); // Get distance
Serial.print("Distance: ");
Serial.println(distance);
}Dieser Code ruft die Abstandsmessung ab und gibt sie auf dem seriellen Monitor aus. Die Schleife liest kontinuierlich den Abstand und ermöglicht Echtzeitaktualisierungen. Für ein vollständiges Codebeispiel siehe den vollständigen Code, der unterhalb des Artikels geladen ist.
Demonstration / Was Sie erwarten können
Wenn der Sensor korrekt eingerichtet ist, können Sie erwarten, dass er bis zu 4 Meter genaue Abstands-messungen liefert. Sie können leichte Schwankungen bei den Messwerten beobachten, insbesondere bei unterschiedlichen Lichtverhältnissen (im Video um 10:30). Es ist wichtig, sicherzustellen, dass der Sensor sauber und ungehindert ist, um präzise Ergebnisse zu erzielen. Wenn Sie ungewöhnliche Messwerte feststellen, überprüfen Sie, ob der Sensor korrekt mit Strom versorgt wird und ob die I2C-Verbindungen sicher sind. Die Leistung des Sensors kann durch die Umgebung beeinflusst werden, insbesondere bei hellem Licht oder reflektierenden Oberflächen.
Video-Zeiten
- 00:00 Start
- 00:40 Einführung
- 03:42 Datenblatt besucht
- 06:48 Soldat Pin-Anschlüsse
- 08:22 Verdrahtung erklärt
- 09:06 Code erklärt
- 11:53 Demonstration
- 16:03 Demonstration in vollständiger Dunkelheit
Ressourcen & Referenzen
-
ExternVL53L0X Pololu Bibliothek (GitHub)github.com
Dateien📁
Keine Dateien verfügbar.