Entfernungen messen mit dem VL6180X ToF Distanzsensor und Arduino Uno

Entfernungsmessung: VL6180X am Arduino uno
a03bbfd3a24942869f47d2a7fbbf8f2f

Der Sensor ist klein und kann in jedem Projekt genutzt werden. Allerdings arbeitet er mit einer Spannung von 2,8 Volt, weshalb er auch auf kleinen Boards mit Spannungswandlern angeboten wird. Dadurch kann er beispielsweise direkt mit einem Arduino genutzt werden.

Die Kommunikation mit dem VL6180X erfolgt über den I2C-Bus. Dadurch gestaltet sich die „Verkabelung“ sehr einfach, neben den zwei Datenleitungen werden nur noch zwei Kabel für die Stromversorgung benötigt.

Mit einer passenden Library für den Arduino ist die Auswertung der kontinuierlichen Messergebnisse keine komplizierte Hexerei.

 

VL6180X an Arduino Uno R3 anschließen

Die Verkabelung gestaltet sich sehr einfach, lediglich 4 Kontakte müssen geknüpft werden. .
• Sensor VIN -> Mikrocontroller 5V oder 3.3V
• Sensor GND-> Mikrocontroller GND
• Sensor SCL-> Mikrocontroller SCL
• Sensor SDA-> Mikrocontroller SDA
Es sollten möglichst keine Kontakte verwechselt werden. Bei meinem ersten Versuch machte ich diesen Fehler und lies den armen Chip schmoren. Zum Glück verbrannte ich mir nur den Finger, der VL6180X kam schadfrei durch die Prozedur.

 

Software laden

Für den ersten Sketch (Arduino Programm) wird die Library Adafruit_VL6180X von Adafruit über den Bibliotheksverwalter installiert. Als Datenübertragungsrate muss 115200 Baud gewählt werden, sonst wird im Seriellen Monitor nur Wirrwarr angezeigt.

Aber wie genau sind die Messergebnisse?

Ich ging davon aus, dass der Sensor wenigstens millimetergenau kleine Entfernungen messen kann. Doch die Messergebnisse sind niederschmetternd. Wie man diesen ToF Entfernungssensor in der Produktbeschreibung als „hochpräzise“ darstellen kann, ist mir ein Rätsel.

An dieser Stelle folgen ein paar Messergebnisse. Der Laserstrahl traf schwarzes Aluminium bei normalem Tageslicht. Das Objekt bewegte sich nicht.

Entfernung 12mm
17:12:36.065 -> Range: 30
17:12:36.201 -> Range: 31
17:12:36.336 -> Range: 30
17:12:36.438 -> Range: 30
17:12:36.574 -> Range: 29
17:12:36.709 -> Range: 31
17:12:36.811 -> Range: 28
17:12:36.947 -> Range: 29

Entfernung 24mm
17:00:17.066 -> Range: 30
17:00:17.169 -> Range: 29
17:00:17.304 -> Range: 29
17:00:17.440 -> Range: 29
17:00:17.542 -> Range: 29
17:00:17.678 -> Range: 30
17:00:17.814 -> Range: 32
17:00:17.916 -> Range: 31

Entfernung 60mm
17:07:30.042 -> Range: 75
17:07:30.144 -> Range: 76
17:07:30.280 -> Range: 76
17:07:30.414 -> Range: 76
17:07:30.516 -> Range: 77
17:07:30.652 -> Range: 75
17:07:30.788 -> Range: 78
17:07:30.890 -> Range: 75


Entfernung 120mm
17:04:47.066 -> Range: 131
17:04:47.203 -> Range: 133
17:04:47.339 -> Range: 134
17:04:47.441 -> Range: 133
17:04:47.577 -> Range: 132
17:04:47.713 -> Range: 133
17:04:47.815 -> Range: 133
17:04:47.951 -> Range: 132


Der Distanzsensor VL6180X liefert hintereinander völlig verschiedene Entfernungen, obwohl sich weder die Distanz ändert, noch das Umgebungslicht oder das reflextierende Material der Oberfläche. Erstaunlicherweise gibt der Sensor bei 12 und 24mm Abstand fasst identische Werte aus.

Fazit

Vielleicht wäre der VL6180X zur Erkennung von Gesten zu gebrauchen, aber für eine Abstandsmessung im Millimeterbereich auf keinen Fall.