Entfernung messen mit einem 6-Pin-VL53L0X-Laser-Modul für Arduino

Entfernung messen mit einem 6-Pin-VL53L0X-Laser-Modul für Arduino

In diesem Tutorial erfahren Sie, wie Sie Entfernungen mit dem VL53L0X-Laserdistanzsensor mit einem 6-poligen Modul messen. Dieser kleine, aber leistungsstarke Sensor nutzt Time-of-Flight-Technologie, um genaue Distanzmessungen bis zu 200 cm zu liefern. Wenn Sie dieser Anleitung folgen, können Sie den Sensor mit einem Arduino einrichten und die Distanzwerte direkt im seriellen Monitor ablesen.

VL53L0X 200cm range sensor

Für dieses Projekt verwenden wir den VL53L0X-Sensor, der kompakt ist und sich leicht in verschiedene Anwendungen integrieren lässt. Der Sensor kommuniziert über I2C, wodurch er sich einfach an ein Arduino-Board anschließen lässt. Im Video finden Sie zusätzliche Erklärungen und Demonstrationen des Einrichtungsprozesses (im Video bei 04:00).

Hardware erklärt

Der VL53L0X ist ein Time-of-Flight-Entfernungssensor, der einen Laserstrahl aussendet und die Zeit misst, die das Licht benötigt, um nach dem Auftreffen auf ein Objekt zurückzukehren. Dadurch kann er die Entfernung zum Objekt genau berechnen. Der Sensor arbeitet bei einer Spannung zwischen 2,6 V und 3,5 V, kann aber dank eines internen Spannungsreglers mit 5 V betrieben werden.

Das Modul hat sechs Pins: VCC, GND, SDA (Datenleitung), SCL (Taktleitung), GPIO1 (Allzweck-Ein-/Ausgang) und XSHUT (Abschalt-Pin). Der GPIO1-Pin wird in dieser Konfiguration nicht verwendet, kann aber unverbunden bleiben. Der XSHUT-Pin ermöglicht es, den Sensor abzuschalten, um Energie zu sparen, wenn er nicht in Gebrauch ist.

Details zum Datenblatt

HerstellerSTMicroelectronics
TeilenummerVL53L0X
Logik-/I/O-Spannung2.6 V bis 3.5 V (5 V mit Spannungsregler)
Betriebstemperatur-20 °C bis 70 °C
Messbereich30 mm bis 2000 mm
I2C-Kommunikationsfrequenz400 kHz
Größe4,4 mm × 2,4 mm × 1 mm

  • Stellen Sie eine ordnungsgemäße Stromversorgung sicher (5 V empfohlen).
  • Schließen Sie SDA und SCL an die entsprechenden I2C-Pins am Arduino an.
  • Verwenden Sie bei Bedarf Pull-up-Widerstände an den I2C-Leitungen.
  • Lassen Sie GPIO1 nicht unverbunden; er kann schwebend bleiben.
  • Halten Sie den XSHUT-Pin während des Betriebs auf HIGH.
  • Messen Sie Entfernungen in einer gut beleuchteten Umgebung für bessere Genauigkeit.
  • Kalibrieren Sie den Sensor für genaue Messungen.
  • Testen Sie die Reichweite des Sensors, indem Sie Objekte in unterschiedlichen Abständen platzieren.
  • Überwachen Sie die serielle Ausgabe auf Abstandswerte und Timeout‑Meldungen.

Verdrahtungsanleitung

Arduino wiring VL53L0X laser distance sensor
Arduino wiring VL53L0X laser distance sensor

Um den VL53L0X-Sensor an Ihren Arduino anzuschließen, beginnen Sie damit, den VCC-Pin des Sensors mit dem 5V-Pin am Arduino zu verbinden. Verbinden Sie als Nächstes den GND-Pin mit dem GND am Arduino. Der SDA-Pin des Sensors sollte mit dem A4-Pin am Arduino verbunden werden (oder mit dem SDA-Pin, falls Ihr Board dedizierte I2C-Pins hat). Ebenso verbinden Sie den SCL-Pin des Sensors mit dem A5-Pin (oder mit dem SCL-Pin). Lassen Sie den GPIO1-Pin unverbunden, da er für dieses Projekt nicht benötigt wird.

Verbinden Sie schließlich den XSHUT-Pin mit dem digitalen Pin 12 am Arduino. Dieser Pin wird verwendet, um den Abschaltzustand des Sensors zu steuern. Stellen Sie sicher, dass alle Verbindungen fest sitzen, um Kommunikationsprobleme zu vermeiden.

Codebeispiele und Schritt-für-Schritt-Anleitung

In dem Code beginnen wir damit, die notwendigen Bibliotheken einzubinden und den VL53L0X-Sensor zu initialisieren. Die Setup-Funktion konfiguriert den Sensor und startet kontinuierliche Abstandsmessungen. Hier ist ein Ausschnitt aus der Setup-Funktion:

void setup() {
  pinMode(12, INPUT_PULLUP);
  digitalWrite(12, HIGH);
  Serial.begin(9600);
  Wire.begin();
  sensor.init();
  sensor.setTimeout(500);
  sensor.startContinuous();
}

In diesem Ausschnitt setzen wir Pin 12 als Eingang mit einem Pull-up-Widerstand und initialisieren die serielle Kommunikation bei 9600 Baud. Wir initialisieren außerdem den Sensor und setzen ein Timeout für die Messungen, damit er kontinuierlich arbeitet.

Als Nächstes lesen wir die Entfernung in der loop-Funktion, wobei der Messwert auf dem seriellen Monitor ausgegeben wird:

void loop() {
  int distance = sensor.readRangeContinuousMillimeters();
  Serial.print("Distance: ");
  Serial.print(distance);
  Serial.print("mm");
  if (sensor.timeoutOccurred()) { Serial.print(" TIMEOUT"); }
  Serial.println();
  delay(100);
}

Dieser Code liest die Entfernung in Millimetern und gibt sie im seriellen Monitor aus. Wenn eine Zeitüberschreitung auftritt, bedeutet das, dass der Sensor keinen gültigen Messwert erhalten hat.

Demonstration / Was Sie erwartet

Wenn Sie das Programm ausführen, sollten Sie im seriellen Monitor Distanzmessungen sehen. Die Ausgabe schwankt, wenn Sie Objekte näher an den Sensor heran- oder weiter von ihm wegbewegen. Gelegentlich können Timeout-Meldungen erscheinen, wenn der Sensor keine Messung erhält (im Video bei 10:30). Um die Genauigkeit zu verbessern, ziehen Sie in Erwägung, mehrere Messwerte zu mitteln.

Bilder

VL53L0X 200cm range sensor
VL53L0X 200cm range sensor
Arduino wiring VL53L0X laser distance sensor
Arduino wiring VL53L0X laser distance sensor
103-Measureing distance using VL53L0X TOF range sensor
Sprache: C++
Kopiert!

Dinge, die Sie vielleicht brauchen

Ressourcen & Referenzen

Dateien📁

Fritzing-Datei

Andere Dateien