- VL6180X Time-of-Flight (ToF) Range Finder Sensor
- Kredsløbsdiagram
- Tilføjelse af krævede biblioteker til VL6180 ToF-sensor
- Programmering og arbejdsforklaring
TOF eller flyvetid er en almindeligt anvendt metode til at måle afstanden fra fjerne objekter ved hjælp af forskellige afstandsmålesensorer som ultralydssensor. Målingen af den tid, det tager af en partikel, bølge eller en genstand at bevæge sig en afstand gennem et medium, omtales som flyvetid (TOF). Denne måling kan derefter bruges til at beregne hastighed eller kurslængde. Det kan også bruges til at lære om mediumets partikler eller egenskaber, såsom sammensætning eller strømningshastighed. Det bevægelige objekt kan detekteres direkte eller indirekte.
Ultralydafstandsmåleapparater er en af de tidligste enheder, der bruger princippet om flyvetid. Disse enheder udsender en ultralydspuls og måler afstanden til et fast materiale baseret på den tid, det tager af bølgen at hoppe tilbage til emitteren. Vi brugte ultralydssensor i mange af vores applikationer til at måle afstanden:
- Arduino og ultralydssensorbaseret afstandsmåling
- Mål afstand ved hjælp af Raspberry Pi og HCSR04 ultralydssensor
- Sådan måles afstanden mellem to ultralydssensorer
Time of flight-metoden kan også bruges til at estimere elektronmobiliteten. Faktisk blev det designet til måling af tyndfilm med lav ledning, senere blev det justeret til almindelige halvledere. Denne teknik anvendes til organiske felteffekttransistorer såvel som metal-dielektriske metalstrukturer. Ved anvendelse af laser eller spændingsimpuls genereres de overskydende ladninger.
Det princip TOF anvendes til at måle afstanden mellem en føler og en genstand. Den tid, det tager af signalet at nå tilbage til sensoren efter reflektion fra en genstand, måles, og den bruges til at beregne afstanden. Forskellige typer signaler (bærere) som lyd, lys kan bruges med TOF-princippet. Når TOF bruges til at finde rækkevidde, er det meget kraftfuldt, når det udsender lys snarere end lyd. Sammenlignet med ultralyd giver den hurtigere aflæsning, højere nøjagtighed og større rækkevidde og bevarer stadig dens lave vægt, lille størrelse og lave strømforbrugskarakteristikker.
Her i denne vejledning bruger vi en VL6180X TOF Range Finder Sensor med Arduino til at beregne afstanden mellem sensoren og objektet. Denne sensor fortæller også lysintensitetsværdien i LUX.
VL6180X Time-of-Flight (ToF) Range Finder Sensor
VL6180 adskiller sig fra andre afstandssensorer, da den bruger et præcist ur til at måle den tid, det tager af lyset at reflektere tilbage fra enhver overflade. Dette giver VL6180 en fordel i forhold til andre sensorer, fordi den er mere nøjagtig og immun mod støj.
VL6180 er en 3-i-1-pakke, der inkluderer en IR-emitter, en omgivende lyssensor og en rækkefølersensor. Den kommunikerer via en I 2 C interface. Den har en indbygget 2.8V regulator. Så selvom vi tilslutter en spænding på over 2,8 V, skifter den automatisk uden at beskadige kortet. Den måler en rækkevidde på op til 25 cm. To programmerbare GPIO'er findes i den.
Kredsløbsdiagram
Her bruges Nokia 5110 LCD til at vise lysniveau og afstand. Nokia 5110 LCD fungerer ved 3,3 V, så den kan ikke tilsluttes direkte med Arduino Nano digitale ben. Så tilføj 10k modstande i serie med datasignalerne for at beskytte 3,3V linjerne fra 5V digitale ben. Lær mere om brug af Nokia 5110 LCD med Arduino.
Den VL6180 Sensor kan tilsluttes direkte til Arduino. Kommunikationen mellem VL6180 og Arduino er I2C. Faktisk kombinerer I2C kommunikationsprotokol de bedste funktioner i SPI og UART. Her kan vi forbinde flere slaver til en enkelt mester, og vi kan have flere mestre, der styrer en eller flere slaver. Ligesom UART-kommunikation bruger I2C to ledninger til kommunikation SDA (Serial Data) og SCL (Serial Clock), en datalinje og urlinje.
Kredsløbsdiagram til tilslutning af VL6180 ToF Range Finder Sensor med Arduino er vist nedenfor:
- Tilslut RST-stiften på LCD til stift 6 på Arduino gennem 10K-modstanden.
- Tilslut CE-stift på LCD til stift 7 på Arduino gennem 10K-modstanden.
- Tilslut DC-stiften på LCD-skærmen til stiften 5 på Arduino gennem 10K-modstanden.
- Tilslut DIN-stift på LCD til stift 4 på Arduino gennem 10K-modstanden.
- Tilslut CLK-stiften på LCD-stiften til stiften 3 på Arduino gennem 10K-modstanden.
- Tilslut VCC-stiften på LCD-skærmen til 3.3V-stiften på Arduino.
- Tilslut GND-stift på LCD til GND fra Arduino.
- Tilslut SCL-stiften på VL6180 til A5-stiften i Arduino
- Tilslut SDA-stiften på VL6180 til A4-stiften på Arduino
- Tilslut VCC-stiften på VL6180 til 5V-stiften i Arduino
- Tilslut GND-stift på VL6180 til GND-stift på Arduino
Tilføjelse af krævede biblioteker til VL6180 ToF-sensor
Tre biblioteker vil blive brugt til at interfacere VL6180-sensoren med Arduino.
1. Adafruit_PCD8544
Adafruit_PCD8544 er et bibliotek til monokrome Nokia 5110 LCD-skærme. Disse skærme bruger SPI til kommunikation. Der kræves fire eller fem ben til grænsefladen mellem denne LCD. Linket til download af dette bibliotek er angivet nedenfor:
github.com/adafruit/Adafruit-PCD8544-Nokia-5110-LCD-library/archive/master.zip
2. Adafruit_GFX
Adafruit_GFX-biblioteket til Arduino er kernegrafikbiblioteket til LCD-skærme, der giver en fælles syntaks og et sæt grafiske primitiver (punkter, linjer, cirkler osv.). Det skal parres med et hardwarespecifikt bibliotek for hver displayenhed, vi bruger (til at håndtere funktioner på lavere niveau). Linket til download af dette bibliotek er angivet nedenfor:
github.com/adafruit/Adafruit-GFX-Library
3. SparkFun VL6180
SparkFun_VL6180 er Arduino-biblioteket med grundlæggende funktionalitet i VL6180-sensoren. VL6180 består af en IR-emitter, en områdesensor og en omgivende lyssensor, der kommunikerer via en I2C-grænseflade. Dette bibliotek giver dig mulighed for at læse afstanden og lysudgangene fra sensoren og output dataene via en seriel forbindelse. Linket til download af dette bibliotek er angivet nedenfor:
downloads.arduino.cc/libraries/github.com/sparkfun/SparkFun_VL6180_Sensor-1.1.0.zip
Tilføj alle bibliotekerne en efter en ved at gå til Skitse >> Inkluder bibliotek >> Tilføj.ZIP-bibliotek i Arduino IDE. Upload derefter det bibliotek, du downloadede fra ovenstående links.
Nogle gange behøver du ikke tilføje wire- og SPI-biblioteker, men hvis du får en fejl, skal du downloade og føje dem til din Arduino IDE.
github.com/PaulStoffregen/SPI
github.com/PaulStoffregen/Wire
Programmering og arbejdsforklaring
Komplet kode med en fungerende video er givet i slutningen af denne tutorial, her forklarer vi det komplette program for at forstå projektets funktion.
I dette program håndteres størstedelen af delene af de biblioteker, som vi tilføjede, så du ikke behøver at bekymre dig om det.
I opsætningen del sæt s baudrate som 115200 og initialisere Wire bibliotek til I2C. Kontroller derefter, om VL6180-sensoren fungerer korrekt eller ej, hvis den ikke fungerer, skal du vise en fejlmeddelelse.
I den følgende del opsætter vi displayet, du kan ændre kontrasten til den ønskede værdi her, jeg sætter den til 50
ugyldig opsætning () { Serial.begin (115200); // Start Serial ved 115200bps Wire.begin (); // Start I2C-biblioteksforsinkelse (100); // forsinkelse. hvis (sensor.VL6180xInit ()! = 0) { Serial.println ("FAILED TO INITALIZE"); // Initialiser enheden og kontroller for fejl }; sensor.VL6180xDefautSettings (); // Indlæs standardindstillinger for at komme i gang. forsinkelse (1000); // forsinkelse 1s display.begin (); // init done // du kan ændre kontrasten rundt for at tilpasse displayet // for den bedste visning! display.setContrast (50); display.display (); // vis stænkskærmvisning.clearDisplay (); }
I det tomrum løkke del setup instruktionerne for at vise værdierne på LCD-skærmen. Her viser vi to værdier, den ene er “Omgivende lysniveau i Lux” (Én lux er faktisk et lumen pr. Kvadratmeter areal), og den anden er “Afstand målt i mm”. For at vise forskellige værdier på en LCD-skærm defineres placeringen af hver tekst, der skal vises på LCD-skærmen ved hjælp af "display.setCursor (0,0);".
ugyldig loop () { display.clearDisplay (); // Få niveau for omgivende lys og rapporter i LUX Serial.print ("Omgivende lysniveau (Lux) ="); Serial.println (sensor.getAmbientLight (GAIN_1)); display.setTextSize (1); display.setTextColor (SORT); display.setCursor (0,0); display.println ("Lysniveau"); display.setCursor (0,12); display.println (sensor.getAmbientLight (GAIN_1)); // Få afstand og rapporter i mm Serial.print ("Målt afstand (mm) ="); Serial.println (sensor.getDistance ()); display.setTextSize (1); display.setTextColor (SORT); display.setCursor (0, 24); display.println ("Afstand (mm) ="); display.setCursor (0, 36); b = sensor.getDistance (); display.println (b); display.display (); forsinkelse (500); }
Efter uploaden af programmet skal du åbne den serielle skærm, og den skal vise output som vist nedenfor.
VL6180 TOF-rækkefindere bruges i smartphones, bærbare berøringsskærmenheder, Tablet, bærbar computer, spiludstyr og husholdningsapparater / industrielle enheder.
Her viser vi det omgivende lysniveau i Lux og afstanden i mm.
Find det komplette program og demonstrationsvideo nedenfor. Kontroller også, hvordan du måler afstand ved hjælp af ultralydssensor og lysniveau ved hjælp af BH1750 Ambient Light Sensor.