- VL6180X Repülési idő (ToF) távolságmérő érzékelő
- Kördiagramm
- Szükséges könyvtárak hozzáadása a VL6180 ToF érzékelőhöz
- Programozás és munka magyarázat
A TOF vagy a repülés ideje egy általánosan használt módszer a távoli tárgyak távolságának mérésére különféle távolságmérő érzékelőkkel, például ultrahangos érzékelővel. A részecskék, hullámok vagy tárgyak által a közegen keresztüli távolság megtételéhez szükséges idő mérését repülési időnek (TOF) nevezzük. Ez a mérés felhasználható a sebesség vagy az út hosszának kiszámítására. Használható a közeg részecskéinek vagy tulajdonságainak, például összetételének vagy áramlási sebességének megismerésére is. Az utazó tárgy észlelhető közvetlenül vagy közvetve.
Az ultrahangos távolságmérő készülékek az egyik legkorábbi eszköz, amely a repülési idő elvét alkalmazza. Ezek az eszközök ultrahangos impulzust bocsátanak ki, és megmérik a szilárd anyag távolságát a hullám által az emitterhez való visszapattanás ideje alapján. Alkalmazásunkban ultrahangos érzékelőt használtunk a távolság mérésére:
- Arduino és ultrahangos szenzor alapú távolságmérés
- Mérje meg a távolságot a Raspberry Pi és a HCSR04 ultrahangos érzékelő segítségével
- Két ultrahangos érzékelő közötti távolság mérése
A repülés ideje módszer az elektron mobilitásának becslésére is használható. Valójában alacsony vezetőképességű vékony filmek mérésére tervezték, később a szokásos félvezetőkhöz igazították. Ezt a technikát szerves terepi tranzisztorok, valamint fém-dielektromos-fém szerkezetek esetében alkalmazzák. A lézer vagy a feszültségimpulzus alkalmazásával a felesleges töltések keletkeznek.
A TOF elvet használják az érzékelő és egy tárgy közötti távolság mérésére. Megmérik azt az időt, amelyet a jel egy tárgyból való visszaverődés után visszanyúl az érzékelőhöz, és ezt használják a távolság kiszámítására. Különböző típusú jelek (hordozók), például hang, fény használható a TOF elvvel. Ha a TOF-et használják a hatótávolság megtalálásához, az nagyon erős, ha fényt bocsát ki, nem pedig hangot. Az ultrahanghoz képest gyorsabb olvasást, nagyobb pontosságot és nagyobb hatótávolságot biztosít, ugyanakkor megtartja alacsony súlyát, kis méretét és alacsony energiafogyasztási jellemzőit.
Ebben az oktatóanyagban az Arduino VL6180X TOF távolságmérő szenzorát használjuk az érzékelő és az objektum közötti távolság kiszámításához. Ez az érzékelő megadja a fényerősség értékét LUX-ban is.
VL6180X Repülési idő (ToF) távolságmérő érzékelő
A VL6180 különbözik a többi távolságérzékelőtől, mivel pontos órával méri a fény időtartamát, amellyel visszaverődik bármely felületről. Ez előnyt jelent a VL6180 számára más érzékelőkhöz képest, mivel pontosabb és immunisabb a zajokkal szemben.
A VL6180 egy 3 az 1-ben csomag, amely tartalmaz infravörös sugárzót, környezeti fényérzékelőt és hatótávolság-érzékelőt. I 2 C interfészen keresztül kommunikál. Fedélzeti 2,8 V-os szabályozóval rendelkezik. Tehát akkor is, ha 2,8 V-nál nagyobb feszültséget csatlakoztatunk, automatikusan lefelé tolódik, anélkül, hogy károsítanánk a lapot. Ez méri a hatótávolsága 25 cm. Két programozható GPIO található benne.
Kördiagramm
Itt a Nokia 5110 LCD- t használják a fényszint és a távolság kijelzésére. A Nokia 5110 LCD 3,3 V feszültséggel működik, így nem csatlakoztatható közvetlenül az Arduino Nano digitális csatlakozóihoz. Tehát adjon hozzá 10k ellenállást sorba az adatjelekkel, hogy megvédje a 3,3 V-os vonalakat az 5 V-os digitális csapoktól. További információ a Nokia 5110 LCD és az Arduino együttes használatáról.
A VL6180 érzékelő közvetlenül csatlakoztatható az Arduino-hoz. A VL6180 és az Arduino közötti kommunikáció I2C. Valójában az I2C kommunikációs protokoll ötvözi az SPI és az UART legjobb tulajdonságait. Itt több rabszolgát összekapcsolhatunk egyetlen mesterrel, és több mesterünk is vezérelhet egy vagy több rabszolgát. Az UART kommunikációhoz hasonlóan az I2C is két vezetéket használ az SDA (soros adatok) és az SCL (soros óra) kommunikációhoz, egy adatvonalat és órajelet.
Az alábbi kapcsolási rajz a VL6180 ToF távolságmérő érzékelő és az Arduino összekapcsolására :
- Csatlakoztassa az LCD RST-tűjét az Arduino 6-os csatlakozójához a 10K-os ellenálláson keresztül.
- Csatlakoztassa az LCD CE-csatlakozóját az Arduino 7-es csatlakozójához a 10K ellenálláson keresztül.
- Csatlakoztassa az LCD DC-csatlakozóját az Arduino 5-ös érintkezõjéhez a 10K ellenálláson keresztül.
- Csatlakoztassa az LCD DIN csapját az Arduino 4 tűjéhez a 10K ellenálláson keresztül.
- Csatlakoztassa az LCD CLK csatlakozóját az Arduino 3 tűjéhez a 10K ellenálláson keresztül.
- Csatlakoztassa az LCD VCC csatlakozóját az Arduino 3,3 V tűjéhez.
- Csatlakoztassa az LCD GND-tűjét az Arduino GND-jéhez.
- Csatlakoztassa a VL6180 SCL tűjét az Arduino A5 tűjéhez
- Csatlakoztassa a VL6180 SDA tűjét az Arduino A4 tűjéhez
- Csatlakoztassa a VL6180 VCC csatlakozóját az Arduino 5 V tűjéhez
- Csatlakoztassa a VL6180 GND-tűjét az Arduino GND-tűjéhez
Szükséges könyvtárak hozzáadása a VL6180 ToF érzékelőhöz
Három könyvtárat fognak használni a VL6180 érzékelő és az Arduino összekapcsolásában.
1. Adafruit_PCD8544
Az Adafruit_PCD8544 egy monokróm Nokia 5110 LCD kijelzők könyvtár. Ezek a kijelzők SPI-t használnak a kommunikációhoz. Négy vagy öt csap szükséges az LCD összekapcsolásához. A könyvtár letöltésére szolgáló link az alábbiakban található:
github.com/adafruit/Adafruit-PCD8544-Nokia-5110-LCD-library/archive/master.zip
2. Adafruit_GFX
Az Arduino Adafruit_GFX könyvtára az LCD grafikus kijelzők alapvető grafikus könyvtára, amely közös szintaxist és grafikai primitíveket (pontokat, vonalakat, köröket stb.) Tartalmaz. Össze kell párosítani egy hardverspecifikus könyvtárral minden megjelenítő eszközhöz, amelyet használunk (az alacsonyabb szintű funkciók kezeléséhez). A könyvtár letöltésére szolgáló link az alábbiakban található:
github.com/adafruit/Adafruit-GFX-Library
3. SparkFun VL6180
A SparkFun_VL6180 az Arduino könyvtár, a VL6180 érzékelő alapvető funkcióival. A VL6180 egy IR-sugárzóból, egy távolsági érzékelőből és egy környezeti fényérzékelőből áll, amelyek az I2C interfészen keresztül kommunikálnak. Ez a könyvtár lehetővé teszi, hogy leolvassa az érzékelő távolságát és fénykimenetét, és az adatokat soros kapcsolaton keresztül adja ki. A könyvtár letöltésére szolgáló link az alábbiakban található:
downloads.arduino.cc/libraries/github.com/sparkfun/SparkFun_VL6180_Sensor-1.1.0.zip
Adja hozzá az összes könyvtárat egyenként a Sketch >> Beleértve a könyvtárat >>.ZIP könyvtár hozzáadása az Arduino IDE-ben. Ezután töltse fel a fenti linkekről letöltött könyvtárat.
Néha nem kell vezetékes és SPI könyvtárakat adnia, de ha hibát észlel, kérjük, töltse le és adja hozzá őket Arduino IDE-jéhez.
github.com/PaulStoffregen/SPI
github.com/PaulStoffregen/Wire
Programozás és munka magyarázat
A teljes kód egy működő videóval a leírás végén található, itt elmagyarázzuk a teljes programot, hogy megértsük a projekt működését.
Ebben a programban az alkatrészek nagy részét a hozzáadott könyvtárak kezelik, így nem kell aggódnia emiatt.
A beállítási részben állítsa az átviteli sebességet 115200-ra, és inicializálja a Wire könyvtárat az I2C számára. Ezután ellenőrizze, hogy a VL6180 érzékelő megfelelően működik-e vagy sem, ha nem működik, akkor mutasson hibaüzenetet.
A következő részben beállítjuk a kijelzőt, itt módosíthatja a kontrasztot a kívánt értékre, én 50-re állítom
void setup () { Soros.kezdés (115200); // Indítsa el a sorozatot 115200bps Wire.begin (); // I2C könyvtár késleltetése (100); // késés. if (szenzor.VL6180xInit ()! = 0) { Soros.println ("nem sikerült inicializálni"); // Inicializálja az eszközt és ellenőrizze a hibákat }; érzékelő.VL6180xDefautSettings (); // A kezdéshez töltse be az alapértelmezett beállításokat. késés (1000); // az 1s késleltetés display.begin (); // init done // megváltoztathatja a kontrasztot a kijelző // adaptálásához a legjobb megtekintés érdekében display.setContrast (50); display.display (); // mutassa a splashscreen display.clearDisplay (); }
A void loop részben állítsa be az értékeket az LCD képernyőn. Itt két értéket jelenítünk meg, az egyik a „Környezeti fényszint luxban” (egy lux valójában egy lumen négyzetméterenként), a másik pedig a „mm-ben mért távolság”. Különböző értékek megjelenítéséhez az LCD-képernyőn határozza meg az LCD-képernyőn megjelenő szövegek helyzetét a „display.setCursor (0,0);” segítségével.
void loop () { display.clearDisplay (); // A környezeti fényszint lekérése és jelentés a LUX Serial.print fájlban ("Környezeti fényszint (Lux) ="); Serial.println (szenzor.getAmbientLight (GAIN_1)); display.setTextSize (1); display.setTextColor (FEKETE); display.setCursor (0,0); display.println ("Fényszint"); display.setCursor (0,12); display.println (sensor.getAmbientLight (GAIN_1)); // Távolság lekérdezése és jelentés mm-ben Sorozat.print ("Mért távolság (mm) ="); Serial.println (szenzor.getDistance ()); display.setTextSize (1); display.setTextColor (FEKETE); display.setCursor (0, 24); display.println ("Távolság (mm) ="); display.setCursor (0, 36); b = szenzor.getDistance (); display.println (b); display.display (); késés (500); }
A program feltöltése után nyissa meg a soros monitort, és annak a kimenetet az alábbiak szerint kell mutatnia.
A VL6180 TOF tartománykeresőket okostelefonokban, hordozható érintőképernyős eszközökben, táblagépekben, laptopokban, játékeszközökben és háztartási készülékekben / ipari eszközökben használják.
Itt jelenítjük meg a környezeti fényszintet luxban és a távolságot mm-ben.
Az alábbiakban megtalálja a teljes programot és a bemutató videót. Ellenőrizze a távolság mérését az ultrahangos érzékelővel és a fényszintet a BH1750 környezeti fényérzékelővel.