VL53L0X: visoko precizni laserski senzor daljine

VL53L0X

U nekim od vaših projekata trebat će vam mjerenje udaljenosti. Pa, trebali biste znati da je VL53L0X je uređaj koji omogućava 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.

Postoji mnogo uređaja koji mogu izmjeriti udaljenosti, neki od njih su mjerači udaljenosti zasnovani na ultrazvuku koji emitiraju zvuk, a prilikom odskakivanja s objektom omogućava dovoljno precizno poznavanje udaljenosti koja postoji. Ali ako želite najveću preciznost, za ovo vam je potreban a optički mjerač udaljenosti. Ova vrsta mjernih uređaja zasnovan je na laseru, kao što je slučaj sa VL53L0X.

Šta je ToF?

ToF princip (šema)

Vreme leta ili ToF (Time-of-Flight) kamera to je tehnika koja se koristi za mjerenje udaljenosti. Zasnovan je na optici, koja meri vreme proteklo između emisije svetlosnog zraka i prijema. 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.

Na taj način udaljenost se može izračunati prilično precizno. Potrebni su samo dodatni logički sklopovi integrirani u čip da bi se izvršili proračuni od trenutka pucanja snopa do prijema i na taj način utvrđuje udaljenost. Princip je prilično jednostavan.

ESP8266
Vezani članak:
ESP8266: WIFI modul za Arduino

Ova vrsta uređaja se koristi u robotika omogućiti robotu ili dronu da izbjegne prepreke, znati koliko su udaljeni od mete, otkriti kretanje ili blizinu, za senzore automobila koji se koriste za različite primjene, implementirati elektroničko brojilo, poput aktuatora za Arduino kada otkrije određenu blizinu objekta itd.

Što je VL53L0X i tablica podataka

VL53L0X

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

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

El VL53L0X čip je dizajniran da rade čak i kada je ambijentalno osvjetljenje prilično visoko. Imajte na umu da će, kada radite optički, što je veće „zagađenje“ okoline svjetlom, to će biti teže adekvatno uhvatiti odbijanje signala. Ali u ovom slučaju to ne predstavlja previše problema. Uz to, sistem kompenzacije koji integrira omogućava mu mjerenje čak i ako ga koristite iza zaštitnog stakla.

To ga čini jednim najboljih senzora daljine koje ćete naći na tržištu. Sa mnogo većom preciznošću od senzora zasnovanih na ultrazvuku ili infracrvenom zračenju. Razlog za toliko preciznost 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 kao što su eBay, AliExpress, Amazon itd. Proizvođači ovih uređaja su razni, pa ako trebate znati detalje modela koji ste kupili, najbolje je provjeriti tablica proizvođača koje ste izabrali. Na primjer:

El VL53L0X U čipu se nalazi emiter laserskog impulsa i senzor za hvatanje povratnog zraka. U ovom slučaju, odašiljač je laser talasne dužine 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đe integrira internu elektroniku nazvanu FlightSenseTM koja će izračunati udaljenost.

El ugao mjerenja ili FOV (vidno polje) u ovom slučaju je 25º. To u prijevodu znači mjerno područje promjera 0,44 m na udaljenosti od 1 m. Iako će opseg 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 Uslovi unutrašnjost eksterijer
Bijela meta Tipično 200cm 80cm
Mimić 120cm 60cm
Siva meta Tipično 80cm 50cm
Minimum 70cm 40cm

Pored toga, VL53L0X ih ima nekoliko režimi rada to može razlikovati rezultate. Ti su načini sažeti u sljedećoj tablici:

modo podešavanje vremena Reach Precisión
Podrazumevano 30ms 1.2m Pogledajte donju tabelu
Visoka preciznost 200ms 1.2m +/- 3%
Dugoročni 33ms 2m Pogledajte donju tabelu
Velika brzina 20ms 1.2m +/- 5%

Prema tim načinima rada, imamo ih nekoliko standardne i daljinske preciznosti koje imate u ovoj tabeli:

unutrašnjost eksterijer
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 pravilno raditi, trebate sučelje sa vanjskim svijetom. A to se postiže pomoću nekih pinova ili veza. Pinout VL53L0X je prilično jednostavan, ima samo 6 pinova. Za integraciju s Arduinom, komunikacija se može ostvariti putem I2C.

Možete ga hraniti spojite pinove Dakle:

  • 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
  • GPI01 i XSHUT pinovi trenutno ne moraju biti korišteni.

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 sa određenim funkcijama kada pišete izvorni kod za upravljanje vašim projektom u Arduino IDE-u. Ako ste prvi put sa Arduinom, preporučujem naš priručnik za programiranje.

Primjer Jednostavan kôd za mjerenje i prikazivanje vrijednosti mjerenja kroz serijski port tako da ga možete vidjeti sa ekrana računara 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 vlastitoj biblioteci Adafruit imate još primjera upotrebe ako vam zatreba ...


Budite prvi koji komentarišete

Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  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 obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.