- VL6180X Time-of-Flight (ToF) Range Finder Sensor
- Kretsdiagram
- Legge til nødvendige biblioteker for VL6180 ToF-sensor
- Programmering og arbeidsforklaring
TOF eller Time of flight er en vanlig metode for å måle avstanden til fjerne objekter ved hjelp av forskjellige avstandsmålesensorer som ultralydssensorer. Måling av tiden det tar av en partikkel, bølge eller et objekt å reise en avstand gjennom et medium, blir referert til som Time-of-flight (TOF). Denne målingen kan deretter brukes til å beregne hastighet eller banelengde. Det kan også brukes til å lære om partikkelen eller egenskapene til mediet, slik som sammensetning eller strømningshastighet. Reiseobjektet kan oppdages direkte eller indirekte.
Ultrasoniske avstandsmåleenheter er en av de tidligste enhetene som bruker prinsippet om flytid. Disse enhetene avgir en ultralydspuls og måler avstanden til et solid materiale basert på den tid det tar av bølgen å sprette tilbake til emitteren. Vi brukte ultralydssensor i mange av applikasjonene våre for å måle avstanden:
- Arduino og ultralydsensorbasert avstandsmåling
- Mål avstand ved hjelp av Raspberry Pi og HCSR04 ultralydssensor
- Hvordan måle avstand mellom to ultralydsensorer
Time of flight-metoden kan også brukes til å estimere elektronmobiliteten. Egentlig var den designet for måling av tynne filmer med lav ledning, senere ble den justert for vanlige halvledere. Denne teknikken brukes for organiske felteffekttransistorer så vel som metall-dielektriske metallstrukturer. Ved påføring av laser eller spenningspuls genereres overflødige ladninger.
Den TOF prinsipp blir brukt for å måle avstanden mellom en sensor og en gjenstand. Tiden det tar for signalet å komme tilbake til sensoren etter refleksjon fra et objekt, måles og den brukes til å beregne avstanden. Ulike typer signaler (bærere) som lyd, lys kan brukes med TOF-prinsippet. Når TOF brukes til å finne rekkevidde, er det veldig kraftig når det avgir lys i stedet for lyd. Sammenlignet med ultralyd gir den raskere avlesning, høyere nøyaktighet og større rekkevidde, og fremdeles opprettholder den lave vekt, liten størrelse og lave strømforbruksegenskaper.
Her i denne opplæringen vil vi bruke en VL6180X TOF Range Finder Sensor med Arduino for å beregne avstanden mellom sensoren og objektet. Denne sensoren forteller også lysintensitetsverdien i LUX.
VL6180X Time-of-Flight (ToF) Range Finder Sensor
VL6180 skiller seg fra andre avstandssensorer da den bruker en presis klokke for å måle tiden det tar for lyset å reflektere tilbake fra en hvilken som helst overflate. Dette gir VL6180 en fordel i forhold til andre sensorer fordi den er mer nøyaktig og immun mot støy.
VL6180 er en 3-i-1-pakke som inkluderer en IR-emitter, en omgivende lyssensor og en avstandssensor. Den kommuniserer via et I 2 C-grensesnitt. Den har en innebygd 2.8V regulator. Så selv om vi kobler til en spenning som er større enn 2,8 V, vil den automatisk skiftes ned uten å skade kortet. Den måler en rekkevidde på opptil 25 cm. To programmerbare GPIO-er er gitt i den.
Kretsdiagram
Her brukes Nokia 5110 LCD til å vise lysnivå og avstand. Nokia 5110 LCD fungerer på 3,3 V, så den kan ikke kobles direkte til Arduino Nano digitale pinner. Så legg til 10k motstand i serie med datasignalene for å beskytte 3.3V-ledningene fra 5V digitale pinner. Lær mer om bruk av Nokia 5110 LCD med Arduino.
Den VL6180 Sensor kan kobles direkte til Arduino. Kommunikasjonen mellom VL6180 og Arduino er I2C. Egentlig kombinerer I2C kommunikasjonsprotokoll de beste funksjonene i SPI og UART. Her kan vi koble flere slaver til en enkelt mester, og vi kan ha flere mestere som kontrollerer en eller flere slaver. I likhet med UART-kommunikasjon bruker I2C to ledninger for kommunikasjon SDA (Serial Data) og SCL (Serial Clock), en datalinje og klokkelinje.
Kretsskjema for tilkobling av VL6180 ToF Range Finder Sensor med Arduino er vist nedenfor:
- Koble RST-pinnen på LCD-skjermen til pinnen 6 på Arduino gjennom 10K-motstanden.
- Koble CE-pinnen på LCD-skjermen til pinnen 7 på Arduino gjennom 10K-motstanden.
- Koble DC-pinnen på LCD-skjermen til pinnen 5 på Arduino gjennom 10K-motstanden.
- Koble DIN-pinnen på LCD-skjermen til pinnen 4 på Arduino gjennom 10K-motstanden.
- Koble CLK-pinnen på LCD-skjermen til pinnen 3 på Arduino gjennom 10K-motstanden.
- Koble VCC-pinnen på LCD-skjermen til 3.3V-pinnen på Arduino.
- Koble GND Pin på LCD-skjermen til GND of Arduino.
- Koble SCL-pinnen på VL6180 til A5-pinnen på Arduino
- Koble SDA-pinnen på VL6180 til A4-pinnen på Arduino
- Koble VCC-pinnen på VL6180 til 5V-pinnen på Arduino
- Koble GND-pinnen på VL6180 til GND-pinnen på Arduino
Legge til nødvendige biblioteker for VL6180 ToF-sensor
Tre biblioteker vil bli brukt til å grensesnitt VL6180 sensor med Arduino.
1. Adafruit_PCD8544
Adafruit_PCD8544 er et bibliotek for monokrome Nokia 5110 LCD-skjermer. Disse skjermene bruker SPI for kommunikasjon. Fire eller fem pinner kreves for å grensesnittet til denne LCD-skjermen. Koblingen for nedlasting av dette biblioteket er gitt nedenfor:
github.com/adafruit/Adafruit-PCD8544-Nokia-5110-LCD-library/archive/master.zip
2. Adafruit_GFX
Adafruit_GFX-biblioteket for Arduino er kjernegrafikkbiblioteket for LCD-skjermer, og gir en felles syntaks og et sett med grafiske primitiver (punkter, linjer, sirkler osv.). Det må pares med et maskinvarespesifikt bibliotek for hver skjermenhet vi bruker (for å håndtere funksjonene på lavere nivå). Koblingen for nedlasting av dette biblioteket er gitt nedenfor:
github.com/adafruit/Adafruit-GFX-Library
3. SparkFun VL6180
SparkFun_VL6180 er Arduino-biblioteket med grunnleggende funksjonalitet til VL6180-sensoren. VL6180 består av en IR-sender, en avstandssensor og en omgivende lyssensor som kommuniserer via et I2C-grensesnitt. Dette biblioteket lar deg lese avstanden og lysutgangene fra sensoren, og sender ut dataene via en seriell tilkobling. Koblingen for nedlasting av dette biblioteket er gitt nedenfor:
downloads.arduino.cc/libraries/github.com/sparkfun/SparkFun_VL6180_Sensor-1.1.0.zip
Legg til alle bibliotekene en etter en ved å gå inn i Skisse >> Inkluder bibliotek >> Legg til.ZIP-bibliotek i Arduino IDE. Last deretter opp biblioteket du lastet ned fra linkene ovenfor.
Noen ganger trenger du ikke legge til wire- og SPI-biblioteker, men hvis du får en feil, kan du laste ned og legge dem til i Arduino IDE.
github.com/PaulStoffregen/SPI
github.com/PaulStoffregen/Wire
Programmering og arbeidsforklaring
Komplett kode med en arbeidsvideo er gitt på slutten av denne opplæringen. Her forklarer vi hele programmet for å forstå hvordan prosjektet fungerer.
I dette programmet håndteres flertallet av delene av bibliotekene vi la til, slik at du ikke trenger å bekymre deg for det.
I oppsettet del er satt overføringshastigheten som 115200 og initialisere Wire biblioteket for I2C. Sjekk deretter om VL6180-sensoren fungerer som den skal eller ikke, hvis den ikke fungerer, viser du en feilmelding.
I den følgende delen setter vi opp skjermen, du kan endre kontrasten til ønsket verdi her, jeg setter den til 50
ugyldig oppsett () { Serial.begin (115200); // Start Serial på 115200bps Wire.begin (); // Start I2C-bibliotekforsinkelse (100); // forsinkelse. hvis (sensor.VL6180xInit ()! = 0) { Serial.println ("MISLAGT Å INITALISERE"); // Initialiser enheten og se etter feil }; sensor.VL6180xDefautSettings (); // Last inn standardinnstillinger for å komme i gang. forsinkelse (1000); // delay 1s display.begin (); // init ferdig // du kan endre kontrasten rundt for å tilpasse skjermen // for best visning! display.setContrast (50); display.display (); // vis splashscreen display.clearDisplay (); }
I tomrommet sløyfe del setup instruksjonene for å vise verdiene på LCD-skjermen. Her viser vi to verdier, den ene er “Omgivende lysnivå i Lux” (Én lux er faktisk ett lumen per kvadratmeter areal), og den andre er “Avstand målt i mm”. For å vise forskjellige verdier på en LCD-skjerm, definer posisjonen til hver tekst som skal vises på LCD-skjermen ved å bruke “display.setCursor (0,0);”.
ugyldig sløyfe () { display.clearDisplay (); // Få Ambient Light-nivå og rapporter i LUX Serial.print ("Ambient Light Level (Lux) ="); Serial.println (sensor.getAmbientLight (GAIN_1)); display.setTextSize (1); display.setTextColor (SVART); display.setCursor (0,0); display.println ("Lysnivå"); display.setCursor (0,12); display.println (sensor.getAmbientLight (GAIN_1)); // Få avstand og rapporter i mm Serial.print ("Avstand målt (mm) ="); Serial.println (sensor.getDistance ()); display.setTextSize (1); display.setTextColor (SVART); display.setCursor (0, 24); display.println ("Avstand (mm) ="); display.setCursor (0, 36); b = sensor.getDistance (); display.println (b); display.display (); forsinkelse (500); }
Etter at du har lastet opp programmet, åpner du den serielle skjermen, og den skal vise utdataene som vist nedenfor.
VL6180 TOF-områdesøkere brukes i smarttelefoner, bærbare berøringsskjermenheter, nettbrett, bærbar PC, spillutstyr og husholdningsapparater / industrielle enheter.
Her viser vi det omgivende lysnivået i Lux og avstanden i mm.
Finn hele programmet og demonstrasjonsvideoen nedenfor. Sjekk også hvordan du måler avstand ved hjelp av ultralydssensor og lysnivå ved hjelp av BH1750 Ambient Light Sensor.