- Czujnik dalmierza VL6180X Time-of-Flight (ToF)
- Schemat obwodu
- Dodawanie wymaganych bibliotek dla czujnika VL6180 ToF
- Programowanie i objaśnienie działania
TOF lub czas lotu to powszechnie stosowana metoda pomiaru odległości do odległych obiektów za pomocą różnych czujników pomiaru odległości, takich jak czujnik ultradźwiękowy. Pomiar czasu potrzebnego cząstce, fali lub obiektowi na przebycie odległości przez medium nazywa się czasem przelotu (TOF). Pomiar ten można następnie wykorzystać do obliczenia prędkości lub długości drogi. Można go również wykorzystać do poznania cząsteczek lub właściwości medium, takich jak skład lub prędkość przepływu. Przemieszczający się obiekt można wykryć bezpośrednio lub pośrednio.
Ultradźwiękowe urządzenia do pomiaru odległości to jedne z najwcześniejszych urządzeń wykorzystujących zasadę czasu lotu. Urządzenia te emitują impuls ultradźwiękowy i mierzą odległość do materiału stałego na podstawie czasu potrzebnego fali, aby odbić się z powrotem do emitera. W wielu naszych aplikacjach używaliśmy czujnika ultradźwiękowego do pomiaru odległości:
- Pomiar odległości oparty na Arduino i czujnikach ultradźwiękowych
- Zmierz odległość za pomocą Raspberry Pi i czujnika ultradźwiękowego HCSR04
- Jak mierzyć odległość między dwoma czujnikami ultradźwiękowymi
Metodę czasu przelotu można również wykorzystać do oszacowania ruchliwości elektronów. W rzeczywistości został zaprojektowany do pomiaru cienkich warstw o niskiej przewodności, później został dostosowany do zwykłych półprzewodników. Technika ta jest stosowana w przypadku organicznych tranzystorów polowych, a także struktur metal-dielektryk-metal. Dzięki zastosowaniu lasera lub impulsu napięciowego powstają nadmierne ładunki.
Do pomiaru odległości między czujnikiem a obiektem stosowana jest zasada TOF. Czas, w jakim sygnał dociera z powrotem do czujnika po odbiciu się od obiektu, jest mierzony i służy do obliczenia odległości. Na zasadzie TOF można używać różnych typów sygnałów (nośnych), takich jak dźwięk, światło. Kiedy TOF jest używany do wyszukiwania odległości, jest bardzo silny, gdy emituje światło, a nie dźwięk. W porównaniu z ultradźwiękami zapewnia szybszy odczyt, wyższą dokładność i większy zasięg, przy jednoczesnym zachowaniu małej wagi, małych rozmiarów i niskiego zużycia energii.
W tym samouczku użyjemy czujnika dalmierza VL6180X TOF z Arduino do obliczenia odległości między czujnikiem a obiektem. Ten czujnik podaje również wartość natężenia światła w LUX.
Czujnik dalmierza VL6180X Time-of-Flight (ToF)
VL6180 różni się od innych czujników odległości tym, że wykorzystuje precyzyjny zegar do pomiaru czasu potrzebnego na odbicie światła od dowolnej powierzchni. Daje to VL6180 przewagę nad innymi czujnikami, ponieważ jest dokładniejszy i odporniejszy na szum.
VL6180 to pakiet 3 w 1, który zawiera nadajnik podczerwieni, czujnik światła otoczenia i czujnik zasięgu. Komunikuje się poprzez interfejs I 2 C. Posiada wbudowany regulator 2,8V. Więc nawet jeśli podłączymy napięcie większe niż 2,8V, zostanie ono automatycznie obniżone bez uszkodzenia płyty. To mierzy zasięg do 25 cm. Zapewniono w nim dwa programowalne GPIO.
Schemat obwodu
Tutaj wyświetlacz LCD Nokia 5110 służy do wyświetlania poziomu światła i odległości. Wyświetlacz LCD Nokia 5110 działa przy 3,3 V, więc nie można go bezpośrednio połączyć z cyfrowymi pinami Arduino Nano. Dodaj więc rezystory 10k szeregowo z sygnałami danych, aby zabezpieczyć linie 3,3 V przed pinami cyfrowymi 5 V. Dowiedz się więcej o używaniu wyświetlacza LCD Nokia 5110 z Arduino.
VL6180 Czujnik może być podłączony bezpośrednio do Arduino. Komunikacja między VL6180 a Arduino to I2C. Właściwie protokół komunikacyjny I2C łączy w sobie najlepsze cechy SPI i UART. Tutaj możemy podłączyć wiele slaveów do jednego mastera i możemy mieć wielu masterów kontrolujących jednego lub wielu slaveów. Podobnie jak komunikacja UART, I2C wykorzystuje dwa przewody do komunikacji SDA (dane szeregowe) i SCL (zegar szeregowy), linię danych i linię zegarową.
Schemat obwodu połączenia czujnika dalmierza VL6180 ToF z Arduino pokazano poniżej:
- Podłącz pin RST wyświetlacza LCD do pinu 6 Arduino przez rezystor 10K.
- Podłącz pin CE LCD do pin 7 Arduino przez rezystor 10K.
- Podłącz pin DC wyświetlacza LCD do pinu 5 Arduino przez rezystor 10K.
- Podłącz pin DIN LCD do pinu 4 Arduino przez rezystor 10K.
- Podłącz pin CLK LCD do pinu 3 Arduino przez rezystor 10K.
- Podłącz pin VCC wyświetlacza LCD do pinu 3,3 V Arduino.
- Podłącz pin GND wyświetlacza LCD do GND Arduino.
- Podłącz pin SCL VL6180 do pin A5 Arduino
- Podłącz pin SDA VL6180 do pin A4 Arduino
- Połącz pin VCC VL6180 z pinem 5V Arduino
- Podłącz pin GND VL6180 do pin GND Arduino
Dodawanie wymaganych bibliotek dla czujnika VL6180 ToF
Do połączenia czujnika VL6180 z Arduino zostaną wykorzystane trzy biblioteki.
1. Adafruit_PCD8544
Adafruit_PCD8544 to biblioteka monochromatycznych wyświetlaczy LCD Nokia 5110. Te wyświetlacze używają SPI do komunikacji. Do podłączenia tego wyświetlacza LCD potrzebne są cztery lub pięć pinów. Link do pobrania tej biblioteki znajduje się poniżej:
github.com/adafruit/Adafruit-PCD8544-Nokia-5110-LCD-library/archive/master.zip
2. Adafruit_GFX
Biblioteka Adafruit_GFX dla Arduino jest podstawową biblioteką graficzną dla wyświetlaczy LCD, zapewniającą wspólną składnię i zestaw prymitywów graficznych (punkty, linie, okręgi itp.). Musi być powiązany z biblioteką specyficzną dla sprzętu dla każdego używanego przez nas urządzenia wyświetlającego (do obsługi funkcji niższego poziomu). Link do pobrania tej biblioteki znajduje się poniżej:
github.com/adafruit/Adafruit-GFX-Library
3. SparkFun VL6180
SparkFun_VL6180 to biblioteka Arduino z podstawową funkcjonalnością czujnika VL6180. VL6180 składa się z nadajnika podczerwieni, czujnika zasięgu i czujnika światła otoczenia, które komunikują się przez interfejs I2C. Ta biblioteka pozwala odczytać odległość i moc światła z czujnika i wysyła dane przez połączenie szeregowe. Link do pobrania tej biblioteki znajduje się poniżej:
downloads.arduino.cc/libraries/github.com/sparkfun/SparkFun_VL6180_Sensor-1.1.0.zip
Dodaj wszystkie biblioteki pojedynczo, przechodząc do Szkic >> Dołącz bibliotekę >> Dodaj bibliotekę.ZIP w Arduino IDE. Następnie prześlij bibliotekę pobraną z powyższych linków.
Czasami nie musisz dodawać bibliotek drutu i SPI, ale jeśli pojawia się błąd, pobierz i dodaj je do swojego Arduino IDE.
github.com/PaulStoffregen/SPI
github.com/PaulStoffregen/Wire
Programowanie i objaśnienie działania
Kompletny kod z działającym filmem znajduje się na końcu tego samouczka, tutaj wyjaśniamy cały program, aby zrozumieć działanie projektu.
W tym programie większość części jest obsługiwana przez dodane przez nas biblioteki, więc nie musisz się tym martwić.
W części konfiguracyjnej ustaw prędkość transmisji na 115200 i zainicjuj bibliotekę Wire dla I2C. Następnie sprawdź, czy czujnik VL6180 działa poprawnie, czy nie, jeśli nie działa, pokaż komunikat o błędzie.
W dalszej części konfigurujemy wyświetlacz, możesz zmienić kontrast na żądaną wartość, tutaj ustawiam go na 50
void setup () { Serial.begin (115200); // Start Serial od 115200bps Wire.begin (); // Opóźnienie uruchomienia biblioteki I2C (100); // opóźnienie. if (sensor.VL6180xInit ()! = 0) { Serial.println ("NIEUDANA INICJALIZACJA"); // Zainicjuj urządzenie i sprawdź, czy nie ma błędów }; sensor.VL6180xDefautSettings (); // Załaduj ustawienia domyślne, aby rozpocząć. opóźnienie (1000); // opóźnienie 1s display.begin (); // gotowe // możesz zmienić kontrast w celu dostosowania // wyświetlacza do najlepszego widoku! display.setContrast (50); display.display (); // pokaż ekran powitalny display.clearDisplay (); }
W części konfiguracji pustej pętli instrukcje wyświetlania wartości na ekranie LCD. Tutaj wyświetlamy dwie wartości, jedną jest „Poziom oświetlenia otoczenia w luksach” (jeden luks to właściwie jeden lumen na metr kwadratowy powierzchni), a drugą „Odległość mierzona w mm”. Aby wyświetlić różne wartości na ekranie LCD, należy zdefiniować położenie każdego tekstu, który ma być wyświetlany na ekranie LCD, za pomocą polecenia „display.setCursor (0,0);”.
void loop () { display.clearDisplay (); // Uzyskaj poziom oświetlenia otoczenia i zgłoś go w LUX Serial.print ("Poziom oświetlenia otoczenia (Lux) ="); Serial.println (sensor.getAmbientLight (GAIN_1)); display.setTextSize (1); display.setTextColor (CZARNY); display.setCursor (0,0); display.println ("Poziom światła"); display.setCursor (0,12); display.println (sensor.getAmbientLight (GAIN_1)); // Uzyskaj odległość i podaj w mm Serial.print ("Odległość zmierzona (mm) ="); Serial.println (sensor.getDistance ()); display.setTextSize (1); display.setTextColor (CZARNY); display.setCursor (0, 24); display.println ("Odległość (mm) ="); display.setCursor (0, 36); b = sensor.getDistance (); display.println (b); display.display (); opóźnienie (500); }
Po załadowaniu programu otwórz monitor szeregowy i powinien pokazać wyjście, jak pokazano poniżej.
Dalmierze VL6180 TOF są używane w smartfonach, przenośnych urządzeniach z ekranem dotykowym, tabletach, laptopach, urządzeniach do gier i urządzeniach domowych / urządzeniach przemysłowych.
Tutaj wyświetlamy poziom oświetlenia otoczenia w luksach i odległość w mm.
Znajdź poniżej pełny program i film demonstracyjny. Sprawdź również, jak zmierzyć odległość za pomocą czujnika ultradźwiękowego i poziom światła za pomocą czujnika światła otoczenia BH1750.