- Snímač rozsahu dosahu VL6180X Time-of-Flight (ToF)
- Schéma zapojenia
- Pridanie požadovaných knižníc pre snímač ToL VL6180
- Vysvetlenie programovania a práce
TOF alebo čas letu je bežne používanou metódou na meranie vzdialenosti vzdialených objektov pomocou rôznych senzorov na meranie vzdialenosti, ako je ultrazvukový senzor. Meranie času, ktorý častica, vlna alebo predmet prekonajú na prekonanie vzdialenosti médiom, sa označuje ako čas letu (TOF). Toto meranie sa potom môže použiť na výpočet rýchlosti alebo dĺžky dráhy. Môže sa tiež použiť na získanie informácií o časticiach alebo vlastnostiach média, ako sú zloženie alebo prietoková rýchlosť. Pohybujúci sa objekt je možné detekovať priamo alebo nepriamo.
Ultrazvukové prístroje na meranie vzdialenosti sú jedným z prvých prístrojov využívajúcich princíp času letu. Tieto zariadenia vydávajú ultrazvukový impulz a merajú vzdialenosť k pevnému materiálu na základe času potrebného na odrazenie vlny späť k vysielaču. Na meranie vzdialenosti sme v mnohých našich aplikáciách použili ultrazvukový senzor:
- Arduino a ultrazvukové snímače založené na meraní vzdialenosti
- Merajte vzdialenosť pomocou Raspberry Pi a ultrazvukového snímača HCSR04
- Ako merať vzdialenosť medzi dvoma ultrazvukovými senzormi
Metódu času letu možno tiež použiť na odhad pohyblivosti elektrónov. Vlastne bol navrhnutý na meranie nízkovodivých tenkých vrstiev, neskôr bol upravený pre bežné polovodiče. Táto technika sa používa pre tranzistory s efektom organického poľa, ako aj pre konštrukcie kov-dielektrický kov. Aplikáciou lasera alebo napäťového impulzu sa vytvárajú nadmerné náboje.
Princíp TOF sa používa na meranie vzdialenosti medzi snímačom a objektom. Meria sa čas potrebný na dosiahnutie signálu späť k senzoru po odraze od objektu a použije sa na výpočet vzdialenosti. Na princípe TOF možno použiť rôzne typy signálov (nosičov), ako je zvuk, svetlo. Ak sa na zisťovanie dosahu používa TOF, je veľmi silné pri emitovaní svetla a nie zvuku. V porovnaní s ultrazvukom poskytuje rýchlejšie čítanie, vyššiu presnosť a väčší dosah pri zachovaní nízkej hmotnosti, malých rozmerov a nízkej spotreby energie.
Tu v tomto tutoriále použijeme senzor VL6180X TOF Range Finder Sensor s Arduinom na výpočet vzdialenosti medzi senzorom a objektom. Tento senzor tiež informuje o hodnote intenzity svetla v LUX.
Snímač rozsahu dosahu VL6180X Time-of-Flight (ToF)
VL6180 sa líši od ostatných senzorov vzdialenosti tým, že používa presné hodiny na meranie času potrebného na odraz svetla od akéhokoľvek povrchu. To dáva VL6180 výhodu oproti iným senzorom, pretože je presnejšia a odolnejšia voči šumu.
VL6180 je balenie 3 v 1, ktoré obsahuje IR vysielač, snímač okolitého svetla a snímač dosahu. Komunikuje sa cez rozhranie I 2 C. Má zabudovaný regulátor 2,8 V. Takže aj keď pripojíme napätie väčšie ako 2,8 V, automaticky sa posunie nadol bez poškodenia dosky. To meria dosah až 25 cm. Poskytujú sa v ňom dva programovateľné GPIO.
Schéma zapojenia
Tu sa displej Nokia 5110 LCD používa na zobrazenie úrovne a vzdialenosti svetla. Displej Nokia 5110 LCD pracuje pri napätí 3,3 V, takže ho nemožno pripojiť priamo k digitálnym pinom Arduino Nano. Pridajte teda sériovo s dátovými signálmi 10k rezistory, aby ste chránili vedenie 3,3 V pred digitálnymi kolíkmi 5 V. Získajte viac informácií o používaní displeja Nokia 5110 LCD s programom Arduino.
Sensor VL6180 možné priamo pripojiť k Arduino. Komunikácia medzi VL6180 a Arduino je I2C. V skutočnosti komunikačný protokol I2C kombinuje najlepšie vlastnosti SPI a UART. Tu môžeme pripojiť viacerých otrokov k jednému pánovi a môžeme mať viac pánov ovládajúcich jedného alebo viacerých otrokov. Rovnako ako komunikácia UART, I2C používa dva vodiče na komunikáciu dátovej a hodinovej linky SDA (Serial Data) a SCL (Serial Clock).
Schéma zapojenia snímača dosahu VL6180 ToF s Arduino je uvedená nižšie:
- Pripojte RST pin LCD k pinu 6 Arduina cez 10K rezistor.
- Pripojte CE pin LCD na pin 7 Arduina cez 10K rezistor.
- Pripojte DC pin LCD na pin 5 Arduina cez 10K rezistor.
- Pripojte DIN kolík LCD k kolíku 4 Arduina cez 10K rezistor.
- Pripojte CLK pin LCD k pin 3 Arduino cez 10K rezistor.
- Pripojte VCC Pin na LCD k 3.3V Pin na Arduine.
- Pripojte GND pin LCD k GND Arduina.
- Pripojte kolík SCL VL6180 k kolíku A5 Arduino
- Pripojte kolík SDA VL6180 k kolíku A4 Arduino
- Pripojte VCC kolík VL6180 k 5V kolíku Arduina
- Pripojte GND pin VL6180 na GND pin Arduina
Pridanie požadovaných knižníc pre snímač ToL VL6180
Na prepojenie snímača VL6180 s Arduino sa použijú tri knižnice.
1. Adafruit_PCD8544
Adafruit_PCD8544 je knižnica pre čiernobiele LCD displeje Nokia 5110. Tieto displeje používajú na komunikáciu SPI. Na prepojenie tohto LCD displeja sú potrebné štyri alebo päť pinov. Odkaz na stiahnutie tejto knižnice je uvedený nižšie:
github.com/adafruit/Adafruit-PCD8544-Nokia-5110-LCD-library/archive/master.zip
2. Adafruit_GFX
Knižnica Adafruit_GFX pre Arduino je hlavnou grafickou knižnicou pre LCD displeje a poskytuje spoločnú syntax a sadu grafických primitívov (body, čiary, kruhy atď.). Je potrebné ho spárovať s hardvérovo špecifickou knižnicou pre každé zobrazovacie zariadenie, ktoré používame (na zvládnutie funkcií nižšej úrovne). Odkaz na stiahnutie tejto knižnice je uvedený nižšie:
github.com/adafruit/Adafruit-GFX-Library
3. SparkFun VL6180
SparkFun_VL6180 je knižnica Arduino so základnými funkciami snímača VL6180. VL6180 sa skladá z infračerveného vysielača, snímača rozsahu a snímača okolitého svetla, ktoré komunikujú prostredníctvom rozhrania I2C. Táto knižnica umožňuje čítať vzdialenosť a svetelné výstupy zo snímača a výstupy cez sériové pripojenie. Odkaz na stiahnutie tejto knižnice je uvedený nižšie:
downloads.arduino.cc/libraries/github.com/sparkfun/SparkFun_VL6180_Sensor-1.1.0.zip
Pridajte všetky knižnice jednu po druhej tak, že prejdete do priečinka Skica >> Zahrnúť knižnicu >> Pridať knižnicu.ZIP v prostredí Arduino IDE. Potom nahrajte knižnicu, ktorú ste si stiahli z vyššie uvedených odkazov.
Niekedy nebudete musieť pridávať knižnice wire and SPI, ale ak sa vám zobrazuje chyba, stiahnite si ich a pridajte do svojho Arduino IDE.
github.com/PaulStoffregen/SPI
github.com/PaulStoffregen/Wire
Vysvetlenie programovania a práce
Kompletný kód s pracovným videom je uvedený na konci tohto tutoriálu. Tu vysvetľujeme kompletný program, aby sme pochopili fungovanie projektu.
V tomto programe väčšinu častí spracúvajú knižnice, ktoré sme pridali, takže si s tým nemusíte robiť starosti.
V nastavovacej časti nastavíme prenosovú rýchlosť na 115200 a inicializujeme knižnicu Wire pre I2C. Potom skontrolujte, či snímač VL6180 funguje správne alebo nie, ak nefunguje, zobrazte chybové hlásenie.
V nasledujúcej časti nastavujeme displej, tu môžete zmeniť kontrast na požadovanú hodnotu. Nastavujem ho na 50
void setup () { Serial.begin (115200); // Začať sériovo na 115200 bps Wire.begin (); // Spustenie oneskorenia I2C knižnice (100); // oneskorenie. if (sensor.VL6180xInit ()! = 0) { Serial.println ("FAILED TO INITALIZE"); // Inicializujte zariadenie a skontrolujte chyby }; sensor.VL6180xDefautSettings (); // Načítajte predvolené nastavenia. oneskorenie (1 000); // oneskorenie 1 s display.begin (); // je hotovo // môžete zmeniť kontrast tak, aby ste prispôsobili zobrazenie // na čo najlepšie zobrazenie! display.setContrast (50); display.display (); // zobraziť úvodnú obrazovku.clearDisplay (); }
V prázdnom slučky časť inštalácie pokyny pre zobrazenie hodnoty na LCD displeji. Tu zobrazujeme dve hodnoty, jedna je „Úroveň okolitého svetla v Luxoch“ (Jeden lux je v skutočnosti jeden lúmen na štvorcový meter plochy) a druhá „Vzdialenosť meraná v mm“. Ak chcete zobraziť rôzne hodnoty na obrazovke LCD, definujte pozíciu každého textu, ktorý by sa mal zobraziť na obrazovke LCD, pomocou „display.setCursor (0,0);“.
void loop () { display.clearDisplay (); // Získajte úroveň okolitého svetla a reportujte v LUX Serial.print ("Úroveň okolitého svetla (Lux) ="); Serial.println (sensor.getAmbientLight (GAIN_1)); display.setTextSize (1); display.setTextColor (ČIERNA); display.setCursor (0,0); display.println ("Úroveň osvetlenia"); display.setCursor (0,12); display.println (sensor.getAmbientLight (GAIN_1)); // Získať vzdialenosť a nahlásiť sa v mm Serial.print ("Nameraná vzdialenosť (mm) ="); Serial.println (sensor.getDistance ()); display.setTextSize (1); display.setTextColor (ČIERNA); display.setCursor (0, 24); display.println ("Vzdialenosť (mm) ="); display.setCursor (0, 36); b = sensor.getDistance (); display.println (b); display.display (); oneskorenie (500); }
Po nahraní programu otvorte sériový monitor a ten by mal zobrazovať výstup, ako je uvedené nižšie.
Vyhľadávače rozsahu VL6180 TOF sa používajú v smartfónoch, prenosných zariadeniach s dotykovou obrazovkou, tabletoch, laptopoch, herných zariadeniach a domácich spotrebičoch / priemyselných zariadeniach.
Tu zobrazujeme úroveň okolitého svetla v Luxoch a vzdialenosť v mm.
Nájsť kompletný program a demonštračné video nižšie. Skontrolujte tiež, ako merať vzdialenosť pomocou ultrazvukového snímača a úrovne svetla pomocou snímača okolitého svetla BH1750.