INHALT
Der VL53L1X Arduino Laser-Entfernungsmesser ist ein Sensor, der mit einer Wellenlänge von 940nm die Entfernung zu einem Hindernis bis zu 4 Meter misst. Die billigeren VL53L0X-Entfernungsmesser haben eine Reichweite von nur 2 Metern. In diesem Bericht werden wir uns ansehen, wie man das VL53LOX (GY-53-L1X) an einen Arduino anschließt und den Lasersensor zur Messung der Entfernung zu einem Hindernis verwendet.
Bestandteile:
- Arduino Uno / Arduino Nano / Arduino Mega
- Laser-Entfernungsmesser vl53L1x / vl53L0x
- OLED-Display mit I2C
- Dupont-Kabel
- Bibliothek SparkFun_VL53L1X.h und OLED_I2C.h
Zwei VL53L1X- und VL53L0X-Anschlüsse dienen der Stromversorgung des Moduls und zwei weitere Anschlüsse werden für die I2C-Kommunikation verwendet. Standardmäßig ist das VL53L1X Laser-Sensor im „Long Range“-Modus mit einer Reichweite von bis zu 4 m konfiguriert. Mit der SparkFun_VL53L1X-Bibliothek kann ein genauerer „Kurzstrecken“-Messmodus mit einer Reichweite von etwa 2 Metern eingerichtet werden.
Laser-Entfernungsmesser VL53L0X Arduino pinout, datasheet
Merkmale des Drucksensor BMP180 (datasheet)
- Versorgungsspannung: 3.3 oder 5 V
- I2C-Adresse: 0x29
- Betrachtungswinkel: 27°
- Messbereich: 4 bis 400 cm
- Genauigkeit: ± 25 mm (± 20 mm im Dunkeln)
In einigen Fällen kann die Genauigkeit des Sensors durch Hindernisse in der Peripherie beeinträchtigt werden. Der Betrachtungswinkel kann durch die Steuerung der ROI (Region of Interest) verringert werden. Der Sensor besteht aus einer Anordnung von 16×16 Elementen, und der ROI wird durch Aktivierung eines Teils der Elemente gesteuert. Der engste Strahl wird durch die Aktivierung des 4×4 Elemente umfassenden Arrays erreicht.
Wie man einen VL53L0X Laser-Sensor an Arduino anschließt
VL53LOX / VL53L1X | Arduino Uno | Arduino Nano | Arduino Mega |
GND | GND | GND | GND |
VDD | 5V | 5V | 5V |
SDA | A4 | A4 | 20 |
SCL | A5 | A5 | 21 |
Im ersten Beispiel zeigt der Sensor regelmäßig den Abstand zum Hindernis in Millimetern auf dem Monitor des Arduino-IDE-Ports an. Das Programm läuft im Hintergrund unter Verwendung der Bibliotheken Wire und VL53L1X, so dass das vorgestellte Programm sehr kurz ist. Schließen Sie den Laser-Sensor vl53l1x an den Arduino Uno an, wie im Schaltplan gezeigt, und laden Sie die Skizze für den Laser-Entfernungsmesser herunter.
Programm für Laser-Sensor VL53L0X / VL53L1X Arduino
#include "Wire.h" #include "SparkFun_VL53L1X.h" SFEVL53L1X vl; void setup () { Serial.begin(9600); vl.setOffset(0); // Kalibrierung // vl.setDistanceModeShort(); // Modus "Höfliche Distanz" // vl.setROI(4,4,199); // das Sichtfeld auf ein Minimum reduzieren } void loop() { vl.startRanging(); while (!vl.checkForDataReady()) { delay(1); } int dist = vl.getDistance(); vl.stopRanging(); Serial.print("Distance: "); Serial.print(dist); Serial.println(" mm"); delay(1000); }
- Mit setROI(4,4,199); können Sie die aktiven Elemente der Matrix festlegen, wobei das erste und zweite Argument die Breite und Höhe der Matrix in Pixeln sind;
- Mit setOffset(); können Sie den Sensorabstand kalibrieren.
Wie man einen VL53L1X Laser-Entfernungsmesser und OLED
OLED i2c | Arduino Uno | Arduino Nano | Arduino Mega |
GND | GND | GND | GND |
VCC | 5V | 5V | 5V |
SDA | A4 | A4 | 20 |
SCL | A5 | A5 | 21 |
Im folgenden Beispiel wird das Ergebnis einer Abstandsmessung zu einem Hindernis auf dem OLED-Display angezeigt. Wenn die vom Sensor gemessene Entfernung zu einem Objekt nicht genau ist, können Sie die Daten mit der Funktion setOffset korrigieren. Wenn der gemessene Abstand beispielsweise 10 Millimeter geringer ist als der tatsächliche Abstand, müssen Sie setOffset(10) angeben, um 10 mm zum Endergebnis hinzuzufügen.
Programm für Abstandsmessung mit einem VL53L1X Arduino
#include "Wire.h" #include "OLED_I2C.h" OLED myOLED(SDA, SCL, 8); extern uint8_t BigNumbers[]; extern uint8_t SmallFont[]; #include "SparkFun_VL53L1X.h" SFEVL53L1X vl; void setup () { Serial.begin(9600); myOLED.begin(); vl.setOffset(0); // Kalibrierung // vl.setDistanceModeShort(); // Modus "Höfliche Distanz" // vl.setROI(4,4,199); // das Sichtfeld auf ein Minimum reduzieren } void loop() { vl.startRanging(); while (!vl.checkForDataReady()) { delay(1); } int dist = vl.getDistance(); vl.stopRanging(); Serial.print("Distance: "); Serial.print(dist); Serial.println(" mm"); myOLED.setFont(BigNumbers); myOLED.print(String(dist), CENTER, 20); myOLED.setFont(SmallFont); myOLED.print("MILLIMETRES", CENTER, 50); myOLED.update(); delay(1000); }
- Der Sensor VL53L0X (GY-53-L1X) ist in der Lage, unabhängig vom Reflexionsgrad des Objekts die genaueste Entfernungsmessung zu liefern.
Schlussfolgerung. Der VL53L0X (GY-53-L1X) Sensor ist in der Lage, die genaueste Entfernungsmessung zu liefern, unabhängig vom Reflexionsvermögen des Objekts. Die Genauigkeit des Sensors ist im Gegensatz zum Ultraschallsensor HC-SR04 weniger von der Umgebungstemperatur abhängig. Ein weiteres positives Merkmal ist die Möglichkeit, den Sichtfeldwinkel einzustellen, um Messfehler zu reduzieren.
Schreibe einen Kommentar