Dies ist eine alte Version des Dokuments!


VL53L0X Time of Flight Sensor

Der VL53L0X ist eine neue Generation von ToF Sensoren, die genaue Distanzmessungen bis 2m erlaubt.

Verwendung mit dem MPC555

Der VL53L0X kann mit dem MPC55 verwendet werden. Es wird jedoch ein zweiter Mikrocontroller zum Anschluss an diesen benötigt. Die NTB stellt eine fertige Firmware für das Nucleo STM32L432KC Board zur Verfügung. Es können maximal 4 Sensoren angesteuert werden.

Verdrahtung

MPC555 STM32L432KC
SCK PA1 (A1)
MISO PA11 (D10)
MOSI PA7 (A6)
PCS 2 PB0 (D3)
GND GND

Anmerkung: die relevanten Pins des STM32L432KC sind 5V tolerant, es sind also keine Pegelwandler nötig.

STM32L432KC VL53L0X
PA9 (D1) SCL
PA10 (D0) DSA
PA3 (A2) XSHUT (Sensor 1)
PA4 (A3) XSHUT (Sensor 2)
PA5 (A4) XSHUT (Sensor 3)
PA6 (A5) XSHUT (Sensor 4)
GND GND

Stromversorgung

Die VL53L0X Sensoren benötigen eine Versorgungsspannung von 3.3V. Hier bieten sich 2 Möglichkeiten an:

  • Ist bereits eine 3.3V Versorgung vorhanden, kann diese benutzt werden
  • Ist keine vorhanden, kann die 3V3 Versorgung des Nucleo STM32L432KC verwendet werden

Das Nucleo STM32L432KC Board kann mit 3.3V oder 5V gespeist werden.

Nucleo STM32L432KC Board Programmieren

Wird das Nucleo STM32L432KC Board per USB mit dem PC verbunden, meldet es sich als USB Massenspeicher an. Die Firmware kann einfach in Form der .bin Datei auf das Board kopiert werden. Das Board durchläuft automatisch einen Reset und ist nun programmiert.

Die Firmware kann hier bezogen werden.

Verwendung in Deep

Der Deep Treiber ist unter ch.ntb.inf.deep.runtime.mpc555.driver.VL53L0X zu finden.

Initialisierung

Der/Die Sensor(en) werden im Konstruktor

VL53L0X(int numSensors) 

initialisiert.

Beispiele:

4 Sensoren initialisieren:

VL53L0X tof = new VL53L0X(4);

2 Sensoren initialisieren:

VL53L0X tof = new VL53L0X(2);

Distanzen lesen

Zum Lesen der Sensorwerte wird die read() Methode verwendet. Diese gibt ein Array mit so vielen Elementen zurück, wie Sensoren im Konstruktor initialisert wurden. Die Messwerte sind vom Typ short (16bit Ganzzahl).

data = tof.read();

Ist der Messbereich des Sensors überschritten, wird für diesen Sensor von 16000 zurückgeliefert. Bei einer fehlerhaften Messung wird ein Wert ≤ 0 zurückgeliefert.

Nach der Initialisierung oder einem reset der Sensoren sollte vor dem Auslesen mit der Methode resetDone() überprüft werden, ob die Sensoren bereit sind.

if (tof.resetDone())
{
  short[] data = tof.read();
}

Reset

Die reset() Methode veranlasst einen Reset die STM32L432KC und der Vl53L0X Sensoren. Ein Reset kann mehrere Sekunden dauern. Mit resetDone() kann überprüft werden, ob der Reset abgeschlossen ist.

Debugging / Troubleshooting

Das Nucleo STM32L432KC bietet eine virtuelle serielle Schnittstelle über USB, wenn es mit einem PC verbunden ist. Über diese werden Debuginformationen über den internen Zustande des Mirkocontrollers sowie die Messwerte ausgegeben. Funktioniert die Kommunikation nicht korrekt, kann sich hier ein Überblick verschafft werden, wo die Ursache liegen könnte.

Des Weiteren leuchet LD3 (grüne LED unten link, wenn USB Port oben), wenn der STM32L432KC auf einen SPI Transfer wartet und erlischt während dem Messvorgang. Diese sollte im normalen Betrieb blinken.