VL53L0X: laseravståndssensor med hög precision

VL53L0X

I några av dina projekt kommer du att behöva mäta avstånd. Du borde veta att VL53L0X är en enhet som gör det möjligt att mäta dem med hög precision. Dessutom gör dess lilla storlek och låga pris det perfekt för dina DIY-projekt, särskilt för att integrera med Arduino.

Det finns många enheter som kan mäta avstånd, några av dem är avståndsmätare baserade på ultraljud som avger ett ljud och när man studsar med objektet kan man med tillräcklig noggrannhet veta det avstånd som finns. Men om du vill ha högsta precision behöver du en optisk avståndsmätare. Denna typ av mätutrustning är baserad på laser, som är fallet med VL53L0X.

Vad är ToF?

ToF-princip (schema)

Time of Flight eller ToF (Time-of-Flight) -kamera det är en teknik som används för att mäta avstånd. Den är baserad på optik, som mäter tiden som gått mellan ljusstrålens utstrålning och mottagningen. De kan vara CCD-, CMOS-sensorer och pulserna kan vara infraröda, laser etc. Systemet synkroniseras för att starta tidsmätningen precis när pulsen utlöses och stoppa räknaren när de mottar studsen av sensorn.

På det sättet avståndet kan beräknas ganska exakt. Det krävs bara en extra logisk krets som är integrerad i chipet för att utföra beräkningarna från det att strålen avfyras tills den tas emot och därmed bestämma avståndet. Principen är ganska enkel.

ESP8266
Relaterad artikel:
ESP8266: WIFI-modulen för Arduino

Denna typ av enhet används i robotteknik att låta roboten eller drönaren undvika hinder, att veta hur långt de är från ett mål, att upptäcka rörelse eller närhet, för bilsensorer som används för olika applikationer, att implementera en elektronisk mätare, till exempel en manöverdon så att Arduino gör något när det upptäcker viss närhet till ett objekt etc.

Vad är VL53L0X och datablad

VL53L0X

El VL53L0X använder denna princip för att mäta avstånd med laserinfraröd. förra generationen. Tillsammans med en processor, som Arduino, kan det vara ett kraftfullt verktyg för mätning. Specifikt kan chipet fånga avstånd mellan 50 mm och 2000 mm, det vill säga mellan 5 centimeter och 2 meter.

För att mäta närmare avstånd behöver du förmodligen en variant av detta chip som heter VL6180X som låter dig mäta ett intervall mellan 5 och 200 mm, det vill säga mellan en halv centimeter och 20 centimeter. Om du vill hitta en liknande enhet men baserad på ultraljud av någon teknisk anledning bör du titta på HC-SR04, en annan ganska billig modul populär hos tillverkare.

El VL53L0X-chip har utformats för att fungerar även när det omgivande ljuset är ganska högt. Tänk på att ju större ljusföroreningar av miljön är, desto svårare blir det att fånga signalens studsande på ett adekvat sätt. Men i det här fallet är det inte för mycket problem. Dessutom kan kompensationssystemet som det integrerar mäta även om du använder det bakom skyddsglaset.

Det gör det till ett av de bästa avståndssensorerna som du hittar på marknaden. Med mycket högre precision än sensorer baserade på ultraljud eller infraröd (IR). Anledningen till att vara så exakt är att lasern inte påverkas av ekon eller reflektion från föremål som i de andra fallen.

För närvarande kan du hitta den integrerad i mulor med lite extra för cirka 16 € eller i enklare plattor på drygt 1 € eller 3 € i andra fall. Du vet redan att du hittar den i butiker som eBay, AliExpress, Amazon, etc. Det finns flera tillverkare av dessa enheter, så om du behöver veta detaljerna i den modell du har köpt är det bäst att kontrollera tillverkarens datablad som du har valt. Till exempel:

El VL53L0X Det har inuti chipet sändaren för laserpulsen och sensorn för att fånga den återgående strålen. I det här fallet är emittern en 940nm våglängdslaser och VCSEL-typ (Vertical Cavity Surface-Emitting Laser). När det gäller fångssensorn är det en SPAD (Single Photon Avalanche Diodes). Den integrerar också en intern elektronik som heter FlightSenseTM som beräknar avståndet.

El mätvinkel eller FOV (synfält) det är 25º i detta fall. Det motsvarar ett mätområde på 0,44 m i diameter på ett avstånd av 1 m. Även om mätområdet kommer att bero på omgivande förhållanden. Om det görs inomhus är det lite högre än om det görs utomhus. Det beror också på reflektansen för objektet du pekar på:

Målreflektion Villkor Interiör Exteriör
Vitt mål typisk 200cm 80cm
Härma 120cm 60cm
Grått mål typisk 80cm 50cm
Minimo 70cm 40cm

Dessutom har VL53L0X flera driftlägen som kan variera resultaten. Dessa lägen sammanfattas i följande tabell:

Mode Tidpunkten omfattning Precision
som standard 30ms Ner till 1.2m Se tabellen nedan
Hög precision 200ms Ner till 1.2m + / - 3%
Lång räckvidd 33ms 2m Se tabellen nedan
Hög hastighet 20ms Ner till 1.2m + / - 5%

Enligt dessa lägen har vi flera standard- och långdistansnoggrannheter som du har i den här tabellen:

Interiör Exteriör
Målreflektion Avstånd 33ms 66ms Avstånd 33ms 66ms
Vitt mål en 120 cm 4% 3% en 60 cm 7% 6%
Grått mål en 70 cm 7% 6% en 40 cm 12% 9%

Pinout och anslutning

VL53L0X chipschema

För att allt detta ska fungera ordentligt behöver du ett gränssnitt med omvärlden. Och det uppnås genom några stift eller anslutningar. Pinout på VL53L0X är ganska enkelt, det har bara 6 stift. För sin integration med Arduino kan kommunikation ske via I2C.

För att mata det kan du anslut stift Så:

  • VCC till 5v från Arduino
  • GND till GND av Arduino
  • SCL till en Arduino analog pin. Till exempel A5
  • SDA till en annan analog stift. Till exempel A4
  • GPI01- och XSHUT-stiften behöver inte användas för tillfället.

Integration med Arduino

VL53L0X ansluten till Arduino

Som för många andra moduler har du också VL53L0X bibliotek (t.ex. det för Adafruit) av tillgänglig kod som du kan använda för att arbeta med vissa funktioner när du skriver källkoden för att hantera ditt projekt i Arduino IDE. Om det är första gången du använder Arduino rekommenderar jag vår programmeringshandbok.

Ett exempel på Enkel kod för dig att göra mätningar och visa mätvärden genom seriell port så att du kan se det från din PC-skärm medan du har anslutit Arduino-kortet är:

#include "Adafruit_VL53L0X.h"
 
Adafruit_VL53L0X lox = Adafruit_VL53L0X();
 
void setup() {
  Serial.begin(9600);
 
  // Iniciar sensor
  Serial.println("VL53L0X test");
  if (!lox.begin()) {
    Serial.println(F("Error al iniciar VL53L0X"));
    while(1);
  }
}
 
 
void loop() {
  VL53L0X_RangingMeasurementData_t measure;
    
  Serial.print("Leyendo sensor... ");
  lox.rangingTest(&measure, false); // si se pasa true como parametro, muestra por puerto serie datos de debug
 
  if (measure.RangeStatus != 4)
  {
    Serial.print("Distancia (mm): ");
   Serial.println(measure.RangeMilliMeter);
  } 
  else
  {
    Serial.println("  Fuera de rango ");
  }
    
  delay(100);
}

I Adafruits eget bibliotek har du fler exempel på användning om du behöver det ...


Bli först att kommentera

Lämna din kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med *

*

*

  1. Ansvarig för uppgifterna: Miguel Ángel Gatón
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.