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?
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.
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
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
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
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 ...