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