- Snímač dosahu VL6180X Time-of-Flight (ToF)
- Kruhový diagram
- Přidání požadovaných knihoven pro snímač VL6180 ToF
- Vysvětlení programování a práce
TOF neboli Time of Flight je běžně používaná metoda měření vzdálenosti vzdálených objektů pomocí různých senzorů pro měření vzdálenosti, jako je ultrazvukový senzor. Měření času, které částice, vlna nebo předmět urazí na ujetí vzdálenosti médiem, se označuje jako Time-of-flight (TOF). Toto měření lze poté použít k výpočtu rychlosti nebo délky dráhy. Lze jej také použít k získání informací o částici nebo vlastnostech média, jako je složení nebo rychlost toku. Pohybující se objekt lze detekovat přímo nebo nepřímo.
Ultrazvuková zařízení pro měření vzdálenosti jsou jedním z prvních zařízení využívajících princip času letu. Tato zařízení vysílají ultrazvukový puls a měří vzdálenost k pevnému materiálu na základě času, který vlna potřebuje k odrazu zpět k emitoru. V mnoha našich aplikacích jsme k měření vzdálenosti použili ultrazvukový senzor:
- Arduino a ultrazvukové senzory založené na měření vzdálenosti
- Měření vzdálenosti pomocí Raspberry Pi a ultrazvukového senzoru HCSR04
- Jak měřit vzdálenost mezi dvěma ultrazvukovými senzory
Metodu času letu lze také použít k odhadu pohyblivosti elektronů. Ve skutečnosti byl navržen pro měření nízkovodivých tenkých vrstev, později byl upraven pro běžné polovodiče. Tato technika se používá pro tranzistory s efektem organického pole i pro struktury kov-dielektrický kov. Použitím laseru nebo napěťového pulzu se generují přebytečné náboje.
Princip TOF se používá k měření vzdálenosti mezi senzorem a objektem. Změří se čas, který signál potřebuje k dosažení zpět k senzoru po odrazu od objektu, a použije se k výpočtu vzdálenosti. Na principu TOF lze použít různé typy signálů (nosných), jako je zvuk, světlo. Když se pro zjišťování dosahu používá TOF, je velmi silné, když vyzařuje světlo spíše než zvuk. Ve srovnání s ultrazvukem poskytuje rychlejší čtení, vyšší přesnost a větší rozsah při zachování nízké hmotnosti, malých rozměrů a nízké spotřeby energie.
Tady v tomto tutoriálu použijeme k výpočtu vzdálenosti mezi senzorem a objektem VL6180X TOF Range Finder Sensor s Arduino. Tento senzor také sděluje hodnotu intenzity světla v LUX.
Snímač dosahu VL6180X Time-of-Flight (ToF)
VL6180 se liší od ostatních snímačů vzdálenosti, protože používá přesné hodiny k měření času, který světlo potřebuje k odrazu zpět od jakéhokoli povrchu. To dává VL6180 výhodu oproti jiným senzorům, protože je přesnější a odolnější vůči šumu.
VL6180 je balíček 3 v 1, který obsahuje IR vysílač, snímač okolního světla a snímač dosahu. Komunikuje přes rozhraní I 2 C. Má integrovaný regulátor 2,8 V. Takže i když připojíme napětí větší než 2,8 V, automaticky se posune dolů, aniž by došlo k poškození desky. To měří dosah až 25 cm. Jsou v něm obsaženy dva programovatelné GPIO.
Kruhový diagram
Zde se LCD displej Nokia 5110 používá k zobrazení úrovně a vzdálenosti světla. LCD displej Nokia 5110 pracuje na napětí 3,3 V, takže jej nelze přímo připojit k digitálním pinům Arduino Nano. Přidejte tedy sériově s datovými signály 10k rezistory, abyste chránili vedení 3,3 V před 5V digitálními piny. Zjistěte více o používání displeje Nokia 5110 LCD s Arduino.
Sensor VL6180 lze přímo připojit k Arduino. Komunikace mezi VL6180 a Arduino je I2C. Ve skutečnosti komunikační protokol I2C kombinuje nejlepší vlastnosti SPI a UART. Zde můžeme připojit více slave k jednomu masteru a můžeme mít více masterů ovládajících jednoho nebo více slave. Stejně jako komunikace UART používá I2C dva vodiče pro komunikaci datové a hodinové linky SDA (Serial Data) a SCL (Serial Clock).
Obvodové schéma pro připojení snímače VL6180 ToF Range Finder Sensor s Arduino je uvedeno níže:
- Připojte RST Pin LCD k pinu 6 Arduina přes 10K rezistor.
- Připojte pin CE LCD na pin 7 Arduina přes 10K rezistor.
- Připojte DC kolík LCD k kolíku 5 Arduina přes 10K rezistor.
- Připojte kolík DIN LCD k kolíku 4 Arduina přes 10K rezistor.
- Připojte pin CLK LCD na pin 3 Arduina přes 10K rezistor.
- Připojte kolík VCC LCD k kolíku 3,3 V Arduina.
- Připojte pin GND LCD k GND Arduina.
- Připojte kolík SCL VL6180 k kolíku A5 Arduino
- Připojte kolík SDA VL6180 k kolíku A4 Arduino
- Připojte kolík VCC VL6180 k 5V kolíku Arduino
- Připojte kolík GND VL6180 ke kolíku GND Arduina
Přidání požadovaných knihoven pro snímač VL6180 ToF
Pro propojení senzoru VL6180 s Arduino budou použity tři knihovny.
1. Adafruit_PCD8544
Adafruit_PCD8544 je knihovna pro černobílé LCD displeje Nokia 5110. Tyto displeje používají pro komunikaci SPI. K propojení tohoto LCD displeje jsou zapotřebí čtyři nebo pět pinů. Odkaz na stažení této knihovny je uveden níže:
github.com/adafruit/Adafruit-PCD8544-Nokia-5110-LCD-library/archive/master.zip
2. Adafruit_GFX
Knihovna Adafruit_GFX pro Arduino je základní grafickou knihovnou pro LCD displeje a poskytuje společnou syntaxi a sadu grafických primitiv (body, čáry, kružnice atd.). Je třeba jej spárovat s knihovnou specifickou pro hardware pro každé zobrazovací zařízení, které používáme (pro zpracování funkcí na nižší úrovni). Odkaz na stažení této knihovny je uveden níže:
github.com/adafruit/Adafruit-GFX-Library
3. SparkFun VL6180
SparkFun_VL6180 je knihovna Arduino se základními funkcemi snímače VL6180. VL6180 se skládá z infračerveného vysílače, snímače dosahu a snímače okolního světla, které komunikují přes rozhraní I2C. Tato knihovna umožňuje číst vzdálenost a světelné výstupy ze snímače a vydává data prostřednictvím sériového připojení. Odkaz na stažení této knihovny je uveden níže:
downloads.arduino.cc/libraries/github.com/sparkfun/SparkFun_VL6180_Sensor-1.1.0.zip
Přidejte všechny knihovny jednu po druhé v části Skica >> Zahrnout knihovnu >> Přidat knihovnu.ZIP v Arduino IDE. Poté nahrajte knihovnu, kterou jste stáhli z výše uvedených odkazů.
Někdy nebudete muset přidávat knihovny drátu a SPI, ale pokud se vám zobrazí chyba, stáhněte si je a přidejte do svého Arduino IDE.
github.com/PaulStoffregen/SPI
github.com/PaulStoffregen/Wire
Vysvětlení programování a práce
Kompletní kód s fungujícím videem je uveden na konci tohoto tutoriálu, zde vysvětlujeme kompletní program, abychom porozuměli fungování projektu.
V tomto programu většinu částí zpracovávají knihovny, které jsme přidali, takže si s tím nemusíte dělat starosti.
V nastavení část s nastavení přenosové rychlosti jako 115200 a inicializovat knihovnu Wire pro I2C. Poté zkontrolujte, zda snímač VL6180 funguje správně nebo ne, pokud nefunguje, zobrazte chybovou zprávu.
V následující části nastavujeme displej, zde můžete změnit kontrast na požadovanou hodnotu, zde nastavuji 50
void setup () { Serial.begin (115200); // Začněte sériově na 115200 bps Wire.begin (); // Spuštění zpoždění knihovny I2C (100); // zpoždění. if (sensor.VL6180xInit ()! = 0) { Serial.println ("FAILED TO INITALIZE"); // Inicializujte zařízení a zkontrolujte chyby }; sensor.VL6180xDefautSettings (); // Chcete-li začít, načtěte výchozí nastavení. zpoždění (1000); // zpoždění 1 s display.begin (); // Init done // můžete změnit kontrast a přizpůsobit tak displej // pro nejlepší prohlížení! display.setContrast (50); display.display (); // zobrazit úvodní obrazovku.clearDisplay (); }
V prázdném smyčky část instalace pokyny pro zobrazení hodnoty na LCD displeji. Zde zobrazujeme dvě hodnoty, jedna je „Úroveň okolního světla v Luxech“ (Jeden lux je ve skutečnosti jeden lumen na metr čtvereční) a druhá je „Vzdálenost měřená v mm“. Chcete-li zobrazit různé hodnoty na obrazovce LCD, definujte polohu každého textu, který by se měl zobrazit na obrazovce LCD, pomocí „display.setCursor (0,0);“.
void loop () { display.clearDisplay (); // Získejte úroveň okolního světla a reportujte v LUX Serial.print ("Úroveň okolního světla (Lux) ="); Serial.println (sensor.getAmbientLight (GAIN_1)); display.setTextSize (1); display.setTextColor (ČERNÁ); display.setCursor (0,0); display.println ("Úroveň světla"); display.setCursor (0,12); display.println (sensor.getAmbientLight (GAIN_1)); // Získejte vzdálenost a reportujte v mm Serial.print ("Vzdálenost měřená (mm) ="); Serial.println (sensor.getDistance ()); display.setTextSize (1); display.setTextColor (ČERNÁ); display.setCursor (0, 24); display.println ("Vzdálenost (mm) ="); display.setCursor (0, 36); b = sensor.getDistance (); display.println (b); display.display (); zpoždění (500); }
Po nahrání programu otevřete sériový monitor a ten by měl zobrazovat výstup, jak je znázorněno níže.
Vyhledávače řady VL6180 TOF se používají v chytrých telefonech, přenosných zařízeních s dotykovou obrazovkou, tabletu, notebooku, herních zařízeních a domácích spotřebičích / průmyslových zařízeních.
Zde zobrazujeme úroveň okolního světla v Luxech a vzdálenost v mm.
Najít kompletní program a demonstrační video níže. Také zkontrolujte, jak měřit vzdálenost pomocí ultrazvukového senzoru a úrovně světla pomocí senzoru okolního světla BH1750.