VL53L0X: visoko precizni laserski senzor udaljenosti

VL53L0X

U nekim od vaših projekata trebat će vam mjerenje udaljenosti. Pa, trebali biste znati da VL53L0X je uređaj koji omogućuje njihovo visoko precizno mjerenje. Uz to, mala veličina i niska cijena čine ga idealnim za vaše samostalne projekte, posebno za integraciju s Arduinom.

Postoje mnogi uređaji koji mogu mjeriti udaljenosti, neki od njih su mjerači udaljenosti temeljeni na ultrazvuku koji emitiraju zvuk, a prilikom odskakivanja s predmetom omogućuje dovoljno precizno poznavanje udaljenosti koja postoji. Ali ako želite najveću preciznost, za to vam je potreban optički mjerač udaljenosti. Ova vrsta mjernih uređaja temelji se na laseru, kao što je slučaj s VL53L0X.

Što je ToF?

ToF princip (shema)

Vreme leta ili ToF (Time-of-Flight) kamera to je tehnika koja se koristi za mjerenje udaljenosti. Temelji se na optici, mjereći vrijeme proteklo između emisije svjetlosne zrake i njenog prijema. To mogu biti CCD, CMOS senzori, a impulsi mogu biti infracrveni, laserski itd. Sustav će se sinkronizirati kako bi započeo mjerenje vremena upravo kad se impuls aktivira i zaustavio brojač kad primi odskok od senzora.

U tom smjeru udaljenost se može izračunati sasvim precizno. Potrebni su samo dodatni logički sklopovi integrirani u čip da bi se izvršili proračuni od trenutka pucanja snopa do primanja i na taj način utvrdilo kolika je udaljenost. Načelo je prilično jednostavno.

ESP8266
Povezani članak:
ESP8266: WIFI modul za Arduino

Ova vrsta uređaja koristi se u robotike omogućiti robotu ili dronu da izbjegne prepreke, znati koliko su udaljeni od cilja, otkriti kretanje ili blizinu, za senzore automobila koji se koriste za različite primjene, implementirati elektroničko brojilo, poput aktuatora, tako da Arduino učini nešto kada otkriva određenu blizinu predmeta itd.

Što je VL53L0X i tablica s podacima

VL53L0X

El VL53L0X koristi ovaj princip za mjerenje udaljenosti laserskim infracrvenim zračenjem. posljednja generacija. Zajedno s procesorom, poput Arduina, može biti moćan alat za mjerenje. Točnije, čip može hvatati udaljenosti između 50 mm i 2000 mm, odnosno između 5 centimetara i 2 metra.

Da biste mjerili bliže udaljenosti, vjerojatno vam treba inačica ovog čipa nazvana VL6180X koja vam omogućuje mjerenje dometa između 5 i 200 mm, odnosno između pola centimetra i 20 centimetara. Ako želite pronaći sličan uređaj, ali zasnovan na ultrazvuku iz bilo kojeg tehničkog razloga, trebali biste pogledati HC-SR04, još jedan prilično jeftin modul popularan među proizvođačima.

El VL53L0X čip je dizajniran da raditi čak i kad je ambijentalno svjetlo prilično visoko. Imajte na umu da će, kada radite optički, što je veće svjetlosno "zagađenje" okoliša, to će biti teže adekvatno uhvatiti odskok signala. Ali u ovom slučaju to ne predstavlja previše problema. Uz to, sustav kompenzacije koji integrira omogućuje mu mjerenje čak i ako ga koristite iza zaštitnog stakla.

To ga čini jednim najboljih senzora udaljenosti koje ćete naći na tržištu. S mnogo većom preciznošću od senzora koji se temelje na ultrazvuku ili infracrvenom zračenju. Razlog toliko preciznosti je taj što na laser neće utjecati odjeci ili refleksija od predmeta kao u ostalim slučajevima.

Trenutno ga možete pronaći integriranog u mazge s nekim dodatkom za oko 16 eura ili u jednostavnijim pločama od nešto više od 1 ili 3 eura u drugim slučajevima. Već znate da ćete ga pronaći u trgovinama poput eBaya, AliExpressa, Amazona itd. Proizvođači ovih uređaja su razni, pa ako trebate znati detalje o modelu koji ste kupili, najbolje je provjeriti tehnička tablica proizvođača koje ste odabrali. Na primjer:

El VL53L0X U čipu se nalazi emiter laserskog impulsa i senzor za hvatanje povratne zrake. U ovom je slučaju odašiljač laser valne duljine 940 nm i tip VCSEL (vertikalni šupljinski površinski emitirajući laser). Što se tiče senzora hvatanja, to je SPAD (jednofotonske lavinske diode). Također integrira unutarnju elektroniku nazvanu FlightSenseTM koja će izračunati udaljenost.

El kut mjerenja ili FOV (vidno polje) u ovom je slučaju 25º. To u prijevodu znači mjerno područje promjera 0,44 m na udaljenosti od 1 m. Iako će raspon mjerenja ovisiti o okolnim uvjetima. Ako se radi u zatvorenom, malo je veći nego ako se radi na otvorenom. Ovisit će i o refleksiji predmeta na koji pokazujete:

Refleksija cilja Uvjeti Unutrašnjost Vanjski
Bijela meta tipičan 200cm 80cm
Mimić 120cm 60cm
Siva meta tipičan 80cm 50cm
Minimo 70cm 40cm

Uz to, VL53L0X ih ima nekoliko načini rada to može varirati rezultate. Ti su načini sažeti u sljedećoj tablici:

Modo Termin djelokrug Preciznost
po defaultu 30ms 1.2m Pogledajte donju tablicu
Visoka preciznost 200ms 1.2m + / - 3%
Dalekometni 33ms 2m Pogledajte donju tablicu
Velika brzina 20ms 1.2m + / - 5%

Prema tim načinima rada imamo nekoliko standardne i dalekosežne točnosti što imate u ovoj tablici:

Unutrašnjost Vanjski
Refleksija cilja Udaljenost 33ms 66ms Udaljenost 33ms 66ms
Bijela meta na 120cm 4% 3% na 60cm 7% 6%
Siva meta na 70cm 7% 6% na 40cm 12% 9%

Pinout i veza

Dijagram čipa VL53L0X

Da bi sve ovo moglo ispravno raditi, trebate sučelje s vanjskim svijetom. A to se postiže pomoću nekih pinova ili veza. Pinout VL53L0X prilično je jednostavan, ima samo 6 pinova. Za integraciju s Arduinom, komunikacija se može obaviti putem I2C.

Da biste je nahranili, možete spojite igle Tako:

  • VCC na 5v od Arduina
  • GND do GND Arduina
  • SCL na analogni pin Arduino. Na primjer A5
  • SDA na drugi analogni pin. Na primjer A4
  • Trenutno se ne moraju koristiti pinovi GPI01 i XSHUT.

Integracija s Arduinom

VL53L0X spojen na Arduino

Kao i za mnoge druge module, i za VL53L0X imate biblioteke (npr. Onu za adafruit) dostupnog koda koji možete koristiti za rad s određenim funkcijama tijekom pisanja izvorni kod za upravljanje vašim projektom u Arduino IDE-u. Ako ste prvi put s Arduinom, preporučujem naš priručnik za programiranje.

Primjer za Jednostavan kôd za mjerenje i prikazivanje vrijednosti mjerenja kroz serijski priključak tako da ga možete vidjeti sa zaslona računala dok je spojena Arduino ploča:

#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);
}

U knjižnici Adafruit imate još primjera upotrebe ako vam je potrebna ...


Budite prvi koji će komentirati

Ostavite svoj komentar

Vaša email adresa neće biti objavljen. Obavezna polja su označena s *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obvezi.
  5. Pohrana podataka: Baza podataka koju hostira Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.