VL53L0X: laseravstandssensor med høy presisjon

VL53L0X

I noen av prosjektene dine trenger du å måle avstander. Du burde vite at VL53L0X er en enhet som gjør det mulig å måle dem med høy presisjon. I tillegg gjør den lille størrelsen og den lave prisen den ideell for DIY-prosjekter, spesielt for å integrere med Arduino.

Det er mange enheter som kan måle avstander, noen av dem er avstandsmåler basert på ultralyd som avgir en lyd og når du hopper med objektet, kan du vite med nok presisjon hvor langt det er. Men hvis du vil ha den høyeste presisjonen, trenger du en optisk avstandsmåler. Denne typen måleenheter er basert på lasersom tilfellet er med VL53L0X.

Hva er ToF?

ToF-prinsipp (ordning)

Time of Flight eller ToF (Time-of-Flight) kamera det er en teknikk som brukes til å måle avstander. Den er basert på optikk, og måler tiden som har gått fra lysstrålen og mottaket. De kan være CCD, CMOS-sensorer, og pulsen kan være infrarød, laser, etc. Systemet vil bli synkronisert for å starte tidsmålingen akkurat når pulsen utløses og stoppe telleren når de mottar spretten av sensoren.

På den måten avstand kan beregnes ganske nøyaktig. Alt som trengs er ekstra logikkretser innebygd i brikken for å utføre beregningene fra når strålen avfyres til når den mottas og dermed bestemme avstanden. Prinsippet er ganske greit.

ESP8266
Relatert artikkel:
ESP8266: WIFI-modulen for Arduino

Denne typen enhet brukes i robotikk å la roboten eller dronen unngå hindringer, å vite hvor langt de er fra et mål, å oppdage bevegelse eller nærhet, for bilsensorer som brukes til forskjellige applikasjoner, å implementere en elektronisk måler, for eksempel en aktuator for Arduino for å gjøre noe når det oppdager en viss nærhet til et objekt osv.

Hva er VL53L0X og datablad

VL53L0X

El VL53L0X bruker dette prinsippet til å måle avstander med infrarød laser. siste generasjon. Sammen med en prosessor, som Arduino, kan det være et kraftig verktøy for måling. Spesielt kan brikken fange avstander mellom 50 mm og 2000 mm, det vil si mellom 5 centimeter og 2 meter.

For å måle nærmere avstander trenger du sannsynligvis en variant av denne brikken kalt VL6180X som lar deg måle et område på mellom 5 og 200 mm, det vil si mellom en halv centimeter og 20 centimeter. Hvis du vil finne en lignende enhet, men basert på ultralyd av en hvilken som helst teknisk grunn, bør du se på HC-SR04, en annen ganske billig modul populær blant produsenter.

El VL53L0X-brikke er designet for å fungerer selv når omgivelseslyset er ganske høyt. Husk at når du arbeider optisk, jo større lysforurensning av miljøet er, desto vanskeligere vil det være å fange tilstrekkelig sprett av signalet. Men i dette tilfellet gir det ikke for mye problem. I tillegg gjør kompensasjonssystemet det integrerer det til å måle selv om du bruker det bak beskyttelsesglass.

Det gjør det til ett av de beste avstandssensorene som du finner i markedet. Med mye høyere presisjon enn sensorer basert på ultralyd eller infrarød (IR). Årsaken til å være så presis er at laseren ikke vil bli påvirket av ekko eller refleksjon fra gjenstander som i de andre tilfellene.

Foreløpig kan du finne den integrert i muldyr med litt ekstra for ca € 16 eller i enklere plater på litt over € 1 eller € 3 i andre tilfeller. Du vet allerede at du finner den i butikker som eBay, AliExpress, Amazon, etc. Produsentene av disse enhetene er forskjellige, så hvis du trenger å vite detaljene i modellen du har kjøpt, er det best å sjekke produsentens datablad som du har valgt. For eksempel:

El VL53L0X Den har inne i brikken emitteren til laserpulsen og sensoren for å fange returstrålen. I dette tilfellet er emitteren en 940nm bølgelengdelaser av VCSEL-typen (Vertical Cavity Surface-Emitting Laser). Når det gjelder fangssensoren, er det en SPAD (Single Photon Avalanche Diodes). Den integrerer også en intern elektronikk kalt FlightSenseTM som vil beregne avstanden.

El målevinkel eller FOV (synsfelt) det er 25º i dette tilfellet. Det betyr et måleområde på 0,44 m i diameter i en avstand på 1 meter. Selv om måleområdet vil avhenge av omgivelsene. Hvis det gjøres innendørs, er det litt høyere enn om det gjøres utendørs. Det vil også avhenge av reflektansen til objektet du peker på:

Målrefleksjon Vilkår Interiør Ytre
Hvitt mål typisk 200cm 80cm
Etterlig 120cm 60cm
Grått mål typisk 80cm 50cm
Minimo 70cm 40cm

I tillegg har VL53L0X flere driftsmodus som kan variere resultatene. Disse modusene er oppsummert i følgende tabell:

Modus timing Omfang Presisjon
som standard 30ms 1.2m Se tabellen nedenfor
Høy presisjon 200ms 1.2m + / - 3%
Lang rekkevidde 33ms 2m Se tabellen nedenfor
Høy hastighet 20ms 1.2m + / - 5%

I henhold til disse modusene har vi flere standard og lang rekkevidde nøyaktigheter som du har i denne tabellen:

Interiør Ytre
Målrefleksjon Avstand 33ms 66ms Avstand 33ms 66ms
Hvitt 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 og tilkobling

VL53L0X brikkediagram

For at alt dette skal fungere skikkelig trenger du et grensesnitt med omverdenen. Og det oppnås gjennom noen pinner eller tilkoblinger. Pinout på VL53L0X er ganske enkel, den har bare 6 pins. For integrasjonen med Arduino kan kommunikasjon gjøres gjennom I2C.

For å mate det, kan du koble pinner Så:

  • VCC til 5v fra Arduino
  • GND til GND av Arduino
  • SCL til en Arduino analog pin. For eksempel A5
  • SDA til en annen analog pin. For eksempel A4
  • GPI01- og XSHUT-pinnene trenger ikke å brukes for øyeblikket.

Integrasjon med Arduino

VL53L0X koblet til Arduino

Som for mange andre moduler, har du også VL53L0X biblioteker (f.eks. Den for Adafruit) av tilgjengelig kode som du kan bruke til å jobbe med visse funksjoner når du skriver kildekoden for å håndtere prosjektet ditt i Arduino IDE. Hvis det er din første gang med Arduino, anbefaler jeg det programmeringshåndboken vår.

Et eksempel på Enkel kode for deg å ta målinger og vise måleverdi gjennom seriell port slik at du kan se det fra PC-skjermen mens du har Arduino-kortet tilkoblet er:

#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 flere eksempler på bruk hvis du trenger det ...


Bli den første til å kommentere

Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.