VL53L0X: precyzyjny laserowy czujnik odległości

VL53L0X

W niektórych projektach będziesz musiał mierzyć odległości. Cóż, powinieneś wiedzieć, że VL53L0X to urządzenie pozwalające na ich pomiar z dużą dokładnością. Ponadto jego mały rozmiar i niska cena sprawiają, że idealnie nadaje się do projektów DIY, szczególnie do integracji z Arduino.

Istnieje wiele urządzeń, które mogą mierzyć odległości, niektóre z nich to dalmierze oparte na ultradźwiękach, które emitują dźwięk i odbijając się od obiektu, pozwalają z wystarczającą precyzją poznać odległość, która istnieje. Ale jeśli chcesz mieć najwyższą precyzję, potrzebujesz do tego pliku optyczny miernik odległości. Tego typu urządzenia pomiarowe bazuje na laserze, jak w przypadku VL53L0X.

Co to jest ToF?

Zasada ToF (schemat)

Kamera czasu lotu lub ToF (Time-of-Flight) jest to technika używana do pomiaru odległości. Oparty jest na optyce mierzącej czas, jaki upłynął od emisji wiązki światła do jej odbioru. Mogą to być czujniki CCD, CMOS, a impulsy mogą być podczerwone, laserowe itp. System zostanie zsynchronizowany, aby rozpocząć pomiar czasu w momencie wyzwolenia impulsu i zatrzymać licznik, gdy otrzyma odbicie od czujnika.

W taki sposób odległość można obliczyć dość dokładnie. Wszystko, czego potrzebujesz, to dodatkowy obwód logiczny wbudowany w chip, aby wykonać obliczenia od momentu wystrzelenia wiązki do momentu jej odebrania, a tym samym określić odległość. Zasada jest dość prosta.

ESP8266
Podobne artykuł:
ESP8266: moduł WIFI dla Arduino

Ten typ urządzenia jest używany w robotyka aby umożliwić robotowi lub dronowi omijanie przeszkód, wiedzieć, jak daleko znajdują się od celu, wykrywać ruch lub bliskość, w przypadku czujników samochodowych używanych do różnych aplikacji, zaimplementować elektroniczny licznik, taki jak siłownik dla Arduino, aby coś zrobić gdy wykryje bliskość obiektu itp.

Co to jest VL53L0X i arkusz danych

VL53L0X

El VL53L0X wykorzystuje tę zasadę do pomiaru odległości za pomocą podczerwieni lasera. ostatnie pokolenie. Wraz z procesorem, takim jak Arduino, może być potężnym narzędziem do pomiarów. W szczególności chip może przechwytywać odległości od 50 mm do 2000 mm, czyli od 5 centymetrów do 2 metrów.

Aby zmierzyć bliższe odległości, prawdopodobnie potrzebujesz wariantu tego chipa o nazwie VL6180X, który pozwala mierzyć zakres od 5 do 200 mm, czyli od pół centymetra do 20 centymetrów. Jeśli chcesz znaleźć podobne urządzenie, ale oparte na ultradźwiękach z jakiegokolwiek powodu technicznego, powinieneś spojrzeć na HC-SR04, kolejny dość tani moduł popularny wśród producentów.

El Układ VL53L0X został zaprojektowany do działają nawet przy dość wysokim natężeniu światła otoczenia. Należy pamiętać, że przy pracy optycznej im większe zanieczyszczenie środowiska światłem, tym trudniej będzie odpowiednio uchwycić odbicie sygnału. Ale w tym przypadku nie stanowi to większego problemu. Ponadto zintegrowany system kompensacji umożliwia pomiar, nawet jeśli używasz go za szkłem ochronnym.

To czyni go jednym najlepszych czujników odległości które znajdziesz na rynku. Ze znacznie większą precyzją niż czujniki oparte na ultradźwiękach lub podczerwieni (IR). Powodem takiej precyzji jest to, że na laser nie wpływają echa ani odbicia od obiektów, jak w innych przypadkach.

Obecnie można go znaleźć w mułach z dodatkami za około 16 euro lub w prostszych płytach za nieco ponad 1 lub 3 euro w innych przypadkach. Wiesz już, że znajdziesz go w sklepach takich jak eBay, AliExpress, Amazon itp. Producenci tych urządzeń są różni, więc jeśli chcesz poznać szczegóły zakupionego modelu, najlepiej sprawdzić arkusz danych producenta że wybrałeś. Na przykład:

El VL53L0X Posiada wewnątrz chipa emiter impulsu laserowego i czujnik wychwytujący wiązkę powracającą. W tym przypadku emiterem jest laser o długości fali 940nm typu VCSEL (laser emitujący powierzchnię z wnęką pionową). Jeśli chodzi o czujnik przechwytywania, jest to SPAD (Single Photon Avalanche Diodes). Integruje również wewnętrzną elektronikę o nazwie FlightSenseTM, która oblicza odległość.

El kąt pomiaru lub FOV (pole widzenia) w tym przypadku jest to 25º. Przekłada się to na obszar pomiarowy o średnicy 0,44 mw odległości 1 m. Chociaż zakres pomiaru będzie zależał od warunków otoczenia. Jeśli robi się to w pomieszczeniu, jest nieco wyższy niż w przypadku wykonywania na zewnątrz. Będzie to również zależeć od współczynnika odbicia obiektu, na który wskazujesz:

Docelowy współczynnik odbicia Warunki Wnętrze Zewnętrzny
Biały cel Typowe 200cm 80cm
Imitować 120cm 60cm
Szary cel Typowe 80cm 50cm
Minimalna 70cm 40cm

Ponadto VL53L0X ma kilka tryby pracy które mogą zmieniać wyniki. Tryby te podsumowano w poniższej tabeli:

sposób Chronometraż Sięgnij Precyzja
Domyślnie 30ms 1.2m Zobacz tabelę poniżej
Wysoka precyzja 200ms 1.2m + / - 3%
Daleki zasięg 33ms 2m Zobacz tabelę poniżej
Wysoka prędkość 20ms 1.2m + / - 5%

Zgodnie z tymi trybami mamy kilka dokładności standardowe i dalekiego zasięgu które masz w tej tabeli:

Wnętrze Zewnętrzny
Docelowy współczynnik odbicia Odległość 33ms 66ms Odległość 33ms 66ms
Biały cel 120cm 4% 3% 60cm 7% 6%
Szary cel 70cm 7% 6% 40cm 12% 9%

Pinout i połączenie

Schemat układu VL53L0X

Aby to wszystko działało poprawnie, potrzebujesz interfejs ze światem zewnętrznym. Osiąga się to za pomocą niektórych pinów lub połączeń. Układ pinów VL53L0X jest dość prosty, ma tylko 6 pinów. W celu integracji z Arduino komunikacja może odbywać się za pośrednictwem I2C.

Aby go nakarmić, możesz podłączyć szpilki Więc:

  • VCC na 5v z Arduino
  • GND do GND Arduino
  • SCL do pinu analogowego Arduino. Na przykład A5
  • SDA na inny pin analogowy. Na przykład A4
  • Piny GPI01 i XSHUT nie muszą być w tej chwili używane.

Integracja z Arduino

VL53L0X podłączony do Arduino

Jak w przypadku wielu innych modułów, dla VL53L0X masz również biblioteki (np. Ta dla Adafruit) dostępnego kodu, którego możesz użyć do pracy z określonymi funkcjami podczas pisania kod źródłowy do obsługi twojego projektu w Arduino IDE. Jeśli po raz pierwszy korzystasz z Arduino, polecam nasz podręcznik programowania.

Przykład Prosty kod do wykonywania pomiarów i wyświetlania wartości pomiarowych przez port szeregowy więc możesz to zobaczyć na ekranie komputera, gdy masz podłączoną płytkę 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);
}

W bibliotece Adafruit masz więcej przykładów użycia, jeśli tego potrzebujesz ...


Bądź pierwszym który skomentuje

Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.