VL53L0X: visoko natančni laserski senzor razdalje

VL53L0X

Pri nekaterih svojih projektih boste morali meriti razdalje. No, morali bi vedeti, da VL53L0X je naprava, ki omogoča njihovo visoko natančnost. Poleg tega je zaradi majhnosti in nizke cene idealen za vaše projekte, ki jih lahko naredite sami, zlasti za integracijo z Arduino.

Obstaja veliko naprav, ki lahko merijo razdalje, nekatere med njimi so merilniki razdalje, ki temeljijo na ultrazvoku in oddajajo zvok, pri odbijanju s predmetom pa lahko dovolj natančno vedo, kakšna razdalja je. Če pa želite najvišjo natančnost, za to potrebujete merilnik optične razdalje. Ta vrsta merilnih naprav temelji na laserju, kot je primer z VL53L0X.

Kaj je ToF?

Načelo ToF (shema)

Čas leta ali kamera ToF (Time-of-Flight) gre za tehniko merjenja razdalj. Temelji na optiki, ki meri čas, ki je pretekel med oddajanjem svetlobnega žarka in njegovim sprejemom. Lahko so CCD, CMOS senzorji, impulzi pa so lahko infrardeči, laserski itd. Sistem bo sinhroniziran tako, da začne meriti čas ravno takrat, ko se sproži impulz, in ustavi števec, ko prejema odboj od senzorja.

Na ta način razdaljo lahko izračunamo povsem natančno. Potrebno je le dodatno logično vezje, integrirano v čip, za izvajanje izračunov od trenutka sprožitve žarka do njegovega sprejema in s tem določanja razdalje. Načelo je precej enostavno.

ESP8266
Povezani članek:
ESP8266: modul WIFI za Arduino

Ta vrsta naprave se uporablja v robotika omogočiti robotu ali brezpilotnemu letalu, da se izogne ​​oviram, vedeti, kako daleč so od cilja, zaznati gibanje ali bližino, za avtomobilske senzorje, ki se uporabljajo za različne aplikacije, uvesti elektronski števec, kot je aktuator za Arduino, da nekaj naredi ko zazna določeno bližino predmeta itd.

Kaj je VL53L0X in podatkovni list

VL53L0X

El VL53L0X uporablja to načelo za merjenje razdalj z laserskim infrardečim vmesnikom. zadnja generacija. Skupaj s procesorjem, kot je Arduino, je lahko močno orodje za merjenje. Natančneje, čip lahko zajema razdalje med 50 mm in 2000 mm, torej med 5 centimetri in 2 metroma.

Za merjenje bližjih razdalj verjetno potrebujete različico tega čipa, imenovano VL6180X, ki vam omogoča merjenje dosega med 5 in 200 mm, to je med pol centimetra in 20 centimetri. Če želite iz kakršnih koli tehničnih razlogov najti podobno, vendar ultrazvočno napravo, si oglejte HC-SR04, še en dokaj poceni modul, priljubljen pri proizvajalcih.

El VL53L0X čip je bil zasnovan za delujejo tudi, ko je svetloba okolja precej visoka. Upoštevajte, da bo pri optičnem delu večja, kot je svetlobna "onesnaženost" okolja, težje bo ustrezno zajeti odboj signala. Toda v tem primeru ne predstavlja prevelike težave. Poleg tega mu kompenzacijski sistem omogoča merjenje, tudi če ga uporabljate za zaščitnim steklom.

To je eno najboljših senzorjev razdalje ki jih boste našli na trgu. Z veliko večjo natančnostjo kot senzorji na osnovi ultrazvoka ali infrardečega (IR). Razlog za tako natančnost je v tem, da na laser ne bodo vplivali odmevi ali odbojnost predmetov kot v drugih primerih.

Trenutno ga lahko najdete vgrajenega v mule z nekaj dodatka za približno 16 EUR ali v preprostejših krožnikih, dobrih 1 EUR ali 3 EUR, v drugih primerih. Že veste, da ga boste našli v trgovinah, kot so eBay, AliExpress, Amazon itd. Proizvajalci teh naprav so različni, zato je najbolje, da preverite podrobnosti o modelu, ki ste ga kupili podatkovni list proizvajalca ki ste ga izbrali. Na primer:

El VL53L0X V čipu je oddajnik laserskega impulza in senzor za zajem povratnega žarka. V tem primeru je oddajnik laser z valovno dolžino 940 nm in tip VCSEL (Vertical Cavity Surface-Emitting Laser). Kar zadeva senzor za zajemanje, gre za SPAD (Single Photon Avalanche Diodes). Vključuje tudi notranjo elektroniko, imenovano FlightSense ™, ki izračuna razdaljo.

El merilni kot ali FOV (vidno polje) v tem primeru je 25 °. To pomeni območje merjenja s premerom 0,44 m na razdalji 1 m. Čeprav je območje merjenja odvisno od okoliških razmer. Če se to izvaja v zaprtih prostorih, je nekoliko višje, kot če se dela na prostem. Prav tako bo odvisno od odbojnosti predmeta, na katerega kažete:

Ciljna odbojnost Pogoji Notranjost Zunanjost
Bela tarča Značilno 200cm 80cm
Mimik 120cm 60cm
Siva tarča Značilno 80cm 50cm
Najmanjša 70cm 40cm

Poleg tega ima VL53L0X več načini delovanja to lahko spreminja rezultate. Ti načini so povzeti v naslednji tabeli:

modo Timing Doseg Precision
Privzeto 30ms 1.2m Glej spodnjo tabelo
Visoka natančnost 200ms 1.2m + / - 3%
Dolge razdalje 33ms 2m Glej spodnjo tabelo
Visoka hitrost 20ms 1.2m + / - 5%

Glede na te načine jih imamo več standardne in dolgoročne natančnosti kar imate v tej tabeli:

Notranjost Zunanjost
Ciljna odbojnost Oddaljenost 33ms 66ms Oddaljenost 33ms 66ms
Bela tarča pri 120 cm 4% 3% pri 60 cm 7% 6%
Siva tarča pri 70 cm 7% 6% pri 40 cm 12% 9%

Pinout in povezava

Diagram čipa VL53L0X

Da bi vse to delovalo pravilno, potrebujete vmesnik z zunanjim svetom. In to se doseže z nekaterimi zatiči ali povezavami. Pinout VL53L0X je precej preprost, ima le 6 nožic. Za njegovo integracijo z Arduinom je komunikacijo mogoče izvajati prek I2C.

Če ga želite nahraniti, lahko povežite zatiči Torej:

  • VCC na 5v iz Arduina
  • GND do GND Arduina
  • SCL na analogni pin Arduino. Na primer A5
  • SDA na drug analogni zatič. Na primer A4
  • Zatičev GPI01 in XSHUT trenutno ni treba uporabljati.

Integracija z Arduinom

VL53L0X povezan z Arduino

Kot za številne druge module imate tudi za VL53L0X knjižnice (npr. Tisto za adafruit) razpoložljive kode, ki jo lahko uporabite za delo z nekaterimi funkcijami, ko pišete izvorno kodo za obdelavo vašega projekta v Arduino IDE. Če ste prvič z Arduinom, priporočam naš priročnik za programiranje.

Primer Preprosta koda za merjenje in prikazovanje merilnih vrednosti skozi serijska vrata tako da si ga lahko ogledate z zaslona računalnika, ko imate priključeno ploščo Arduino:

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

V lastni knjižnici Adafruit imate več primerov uporabe, če jo potrebujete ...


Bodite prvi komentar

Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Za podatke odgovoren: Miguel Ángel Gatón
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.