Afstandsmeting met de VL6180X

FunduinoLaatst bijgewerkt op

Präzise Nahbereichsmessung mit dem Time-of-Flight-Sensor

Der VL6180X misst Entfernungen mit einem Laserstrahl. Er sendet einen kurzen Lichtimpuls aus und misst, wie lange das Licht bis zum Objekt und zurück braucht – daher der Name „Time of Flight“.

Gegenüber Ultraschall- und Infrarotsensoren hat er zwei Vorteile: einen sehr schmalen Abtastbereich und eine Messung, die nicht von der Helligkeit des reflektierten Lichts abhängt. Dafür ist seine Reichweite auf den Nahbereich beschränkt.

Angeschlossen wird er über den I²C-Bus – vier Leitungen genügen. Die Auswertung übernimmt eine fertige Bibliothek von Adafruit.

Der Laser-Abstandssensor VL6180X auf seiner Platine
Der VL6180X

Der Sensor VL6180X

Der VL6180X – oft auch nur VL6180 genannt – ist ein Entfernungssensor mit einer winzigen Laserlichtquelle und einem passenden Empfänger. Er misst die Zeit, die das Laserlicht bis zum Objekt und zurück braucht, und berechnet daraus die Entfernung. Deshalb heißt er auch „Time of Flight“-Sensor.

Weil er mit einem sehr schmalen Lichtstrahl arbeitet, ist er vor allem bei kleinen Abständen stark.

Der Laser-Abstandssensor VL6180X auf seiner Platine
Der VL6180X

Unterschied zu anderen Entfernungssensoren

  • Gegenüber Ultraschallsensoren: Der Abtastbereich ist deutlich schmaler.
  • Gegenüber Infrarot-Entfernungssensoren: Der VL6180X ist präziser, weil er die Laufzeit misst und nicht die Menge des reflektierten Lichts.

Die Reichweite liegt laut Anleitung bei etwa 15 bis 200 mm. Starker Lichteinfall kann sie verringern. Der Sensor arbeitet mit jedem Mikrocontroller zwischen 3 und 5 Volt.

Den Sensor anschließen

Die Kommunikation läuft über den I²C-Bus, deshalb sind nur vier Leitungen nötig:

  • VIN an 5V oder 3,3V am Mikrocontroller
  • GND an GND
  • SCL an den SCL-Pin
  • SDA an den SDA-Pin
Verkabelung des VL6180X mit dem Mikrocontroller über I2C
VIN, GND, SCL und SDA verbinden

Bibliothek installieren und Messwerte ausgeben

Installiere über die Bibliotheksverwaltung die Bibliothek Adafruit_VL6180X. Sie bringt Beispielsketche mit, die den vollen Funktionsumfang zeigen. Für diese Anleitung ist der Sketch auf die reine Entfernungsmessung reduziert.

Der Sketch gibt die Messwerte am Seriellen Monitor aus. Stelle dort 115200 Baud ein – das ist nicht der Standardwert.

Bibliothek Adafruit_VL6180X in der Bibliotheksverwaltung
Die Bibliothek Adafruit_VL6180X
Entfernungswerte in Millimetern im Seriellen Monitor
Messwerte bei 115200 Baud
1 / 2
Entfernung am Seriellen Monitor ausgeben
#include <Wire.h>
#include "Adafruit_VL6180X.h"
Adafruit_VL6180X vl = Adafruit_VL6180X();
void setup()
{
  Serial.begin(115200);
  while (!Serial) // Warten, bis die serielle Verbindung aufgebaut ist
  {
  delay(1); // Die Pause wird immer wieder aufgerufen, solange die serielle Verbindung nicht aufgebaut ist.
  }
  vl.begin();
}
void loop()
{
  uint8_t Entfernung = vl.readRange(); // Unter "Entfernung" wird der Messwert für die Entfernung erfasst.
  uint8_t status = vl.readRangeStatus(); // Der Sensorstatus wird gelesen.
  if (status == VL6180X_ERROR_NONE) { // Wenn der Sensorstatus keine Fehler enthält, folgt der Inhalt der IF-Schleife
    Serial.print("Entfernung in mm: "); Serial.println(Entfernung);  //Ausgabe der Entfernung am seriellen Monitor
  }
  delay(100); // Das delay sorgt dafür, dass die Werte am seriellen Monitor lesbar bleiben. In Anwendungen zur Messwerterfassung sollte man auf solche Pausen verzichten.
}
Handleiding beoordelen

Opmerkingen

Stel een vraag of deel je ervaring

Neem contact met ons op als iets niet werkt. Vermeld daarbij je board en de foutmelding.

We controleren elke reactie voordat deze wordt gepubliceerd. Je e-mailadres blijft bij ons.