- VL6180X Time-of-Flight (ToF) Range Finder Sensor
- Kretsschema
- Lägg till nödvändiga bibliotek för VL6180 ToF-sensor
- Programmering och arbetsförklaring
TOF eller Time of flight är en vanlig metod för att mäta avståndet från avlägsna föremål med olika avståndsmätningssensorer som ultraljudssensor. Mätningen av den tid som en partikel, våg eller ett föremål tar för att färdas ett avstånd genom ett medium kallas Time-of-flight (TOF). Denna mätning kan sedan användas för att beräkna hastighet eller banlängd. Det kan också användas för att lära sig om partikeln eller egenskaperna hos mediet såsom komposition eller flödeshastighet. Det resande föremålet kan detekteras direkt eller indirekt.
Ultraljudsavståndsmätare är en av de tidigaste enheterna som använder principen om flygtid. Dessa enheter avger en ultraljudspuls och mäter avståndet till ett fast material baserat på vågens tid att studsa tillbaka till sändaren. Vi använde ultraljudssensor i många av våra applikationer för att mäta avståndet:
- Arduino & Ultraljudsbaserad avståndsmätning
- Mät avstånd med Raspberry Pi och HCSR04 ultraljudssensor
- Hur man mäter avståndet mellan två ultraljudssensorer
Time of flight-metoden kan också användas för att uppskatta elektronmobiliteten. Egentligen var den utformad för mätning av tunnledande tunnfilm, senare justerades den för vanliga halvledare. Denna teknik används för organiska fälteffekttransistorer såväl som metall-dielektriska metallstrukturer. Genom applicering av laser eller spänningspuls genereras överskottsladdningarna.
Den princip TOF används för mätning av avståndet mellan en sensor och ett föremål. Den tid det tar för signalen att nå tillbaka till sensorn efter reflektion från ett objekt mäts och den används för att beräkna avståndet. Olika typer av signaler (bärare) som ljud, ljus kan användas med TOF-principen. När TOF används för att hitta räckvidd är det mycket kraftfullt när man avger ljus snarare än ljud. Jämfört med ultraljud ger det snabbare avläsning, högre noggrannhet och större räckvidd och bibehåller fortfarande dess låga vikt, små storlek och låga strömförbrukningsegenskaper.
Här i denna handledning använder vi en VL6180X TOF Range Finder-sensor med Arduino för att beräkna avståndet mellan sensorn och objektet. Denna sensor berättar också ljusintensitetsvärdet i LUX.
VL6180X Time-of-Flight (ToF) Range Finder Sensor
VL6180 skiljer sig från andra avståndssensorer eftersom den använder en exakt klocka för att mäta den tid det tar av ljuset att reflektera tillbaka från vilken yta som helst. Detta ger VL6180 en fördel jämfört med andra sensorer eftersom den är mer exakt och immun mot buller.
VL6180 är ett 3-i-1-paket som inkluderar en IR-sändare, en omgivande ljussensor och en avståndssensor. Den kommunicerar via ett I 2 C-gränssnitt. Den har en inbyggd 2.8V-regulator. Så även om vi ansluter en spänning större än 2,8 V kommer den automatiskt att flyttas ner utan att skada kortet. Den mäter ett intervall på upp till 25 cm. Två programmerbara GPIO finns i den.
Kretsschema
Här används Nokia 5110 LCD för att visa ljusnivå och avstånd. Nokia 5110 LCD fungerar på 3,3 V så att den inte kan anslutas till Arduino Nano digitala stift direkt. Så lägg till 10k-motstånd i serie med datasignalerna för att skydda 3.3V-linjerna från 5V digitala stift. Läs mer om att använda Nokia 5110 LCD med Arduino.
Den VL6180 Sensor kan anslutas direkt till Arduino. Kommunikationen mellan VL6180 och Arduino är I2C. Egentligen kombinerar I2C kommunikationsprotokoll de bästa funktionerna i SPI och UART. Här kan vi ansluta flera slavar till en enda mästare och vi kan ha flera mästare som styr en eller flera slavar. Liksom UART-kommunikation använder I2C två ledningar för kommunikation SDA (Serial Data) och SCL (Serial Clock), en datalinje och klocklinje.
Kretsschema för anslutning av VL6180 ToF Range Finder Sensor med Arduino visas nedan:
- Anslut RST-stift på LCD-skärmen till stift 6 på Arduino genom 10K-motståndet.
- Anslut CE-stift på LCD-skärmen till stift 7 på Arduino genom 10K-motståndet.
- Anslut LCD-stiftet på LCD-skärmen till stift 5 på Arduino genom 10K-motståndet.
- Anslut DIN-stift på LCD-skärmen till stift 4 på Arduino genom 10K-motståndet.
- Anslut CLK-stiftet på LCD-skärmen till stift 3 på Arduino genom 10K-motståndet.
- Anslut VCC-stiftet på LCD-skärmen till 3,3 V-stiftet på Arduino.
- Anslut GND-stiftet på LCD-skärmen till GND för Arduino.
- Anslut SCL-stiftet på VL6180 till A5-stiftet i Arduino
- Anslut SDL-stiftet på VL6180 till A4-stiftet i Arduino
- Anslut VCC-stiftet på VL6180 till 5V-stiftet i Arduino
- Anslut GND-stiftet på VL6180 till GND-stiftet på Arduino
Lägg till nödvändiga bibliotek för VL6180 ToF-sensor
Tre bibliotek kommer att användas för gränssnitt mellan VL6180-sensorn och Arduino.
1. Adafruit_PCD8544
Adafruit_PCD8544 är ett bibliotek för monokroma Nokia 5110 LCD-skärmar. Dessa skärmar använder SPI för kommunikation. Fyra eller fem stift krävs för gränssnitt mellan denna LCD-skärm. Länken för nedladdning av detta bibliotek ges nedan:
github.com/adafruit/Adafruit-PCD8544-Nokia-5110-LCD-library/archive/master.zip
2. Adafruit_GFX
Adafruit_GFX-biblioteket för Arduino är det centrala grafikbiblioteket för LCD-skärmar, vilket ger en gemensam syntax och en uppsättning grafiska primitiver (punkter, linjer, cirklar osv.). Det måste kopplas ihop med ett hårdvaruspecifikt bibliotek för varje displayenhet vi använder (för att hantera lägre nivåfunktioner). Länken för nedladdning av detta bibliotek ges nedan:
github.com/adafruit/Adafruit-GFX-Library
3. SparkFun VL6180
SparkFun_VL6180 är Arduino-biblioteket med grundläggande funktionalitet för VL6180-sensorn. VL6180 består av en IR-sändare, en avståndssensor och en omgivande ljussensor som kommunicerar via ett I2C-gränssnitt. Detta bibliotek låter dig läsa avståndet och ljusutgångarna från sensorn och mata ut data via en seriell anslutning. Länken för nedladdning av detta bibliotek ges nedan:
downloads.arduino.cc/libraries/github.com/sparkfun/SparkFun_VL6180_Sensor-1.1.0.zip
Lägg till alla bibliotek en efter en genom att gå till Skiss >> Inkludera bibliotek >> Lägg till.ZIP-bibliotek i Arduino IDE. Ladda sedan upp biblioteket som du laddade ner från ovanstående länkar.
Ibland behöver du inte lägga till tråd- och SPI-bibliotek, men om du får ett fel vänligen ladda ner och lägg till dem i din Arduino IDE.
github.com/PaulStoffregen/SPI
github.com/PaulStoffregen/Wire
Programmering och arbetsförklaring
Komplett kod med en fungerande video ges i slutet av denna handledning, här förklarar vi hela programmet för att förstå hur projektet fungerar.
I detta program hanteras majoriteten av delarna av biblioteken som vi lade till så att du inte behöver oroa dig för det.
I inställningsdelen s ställa in baudhastigheten som 115200 och initialisera Wire bibliotek för I2C. Kontrollera sedan om VL6180-sensorn fungerar som den ska eller inte, om den inte fungerar, visa ett felmeddelande.
I följande del ställer vi in skärmen, du kan ändra kontrasten till önskat värde här, jag ställer in den som 50
ogiltig installation () { Serial.begin (115200); // Starta Serial vid 115200bps Wire.begin (); // Starta I2C-biblioteksfördröjning (100); // fördröjning. if (sensor.VL6180xInit ()! = 0) { Serial.println ("KAN INTE INITALISERA"); // Initiera enheten och kontrollera om det finns fel }; sensor.VL6180xDefautSettings (); // Ladda standardinställningar för att komma igång. fördröjning (1000); // fördröja 1s display.begin (); // init klar // du kan ändra kontrasten runt för att anpassa skärmen // för bästa visning! display.setContrast (50); display.display (); // visa skärmdisplay.clearDisplay (); }
I tomrummet loop delen installationen instruktionerna för att visa värdena på LCD-skärmen. Här visar vi två värden, det ena är “Omgivande ljusnivå i Lux” (En lux är faktiskt ett lumen per kvadratmeter yta) och det andra är “Avstånd uppmätt i mm”. För att visa olika värden på en LCD-skärm definierar du positionen för varje text som ska visas på LCD-skärmen med hjälp av “display.setCursor (0,0);”.
void loop () { display.clearDisplay (); // Få Ambient Light-nivå och rapportera 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 ("Ljusnivå"); display.setCursor (0,12); display.println (sensor.getAmbientLight (GAIN_1)); // Få avstånd och rapportera i mm Serial.print ("Uppmätt avstånd (mm) ="); Serial.println (sensor.getDistance ()); display.setTextSize (1); display.setTextColor (SVART); display.setCursor (0, 24); display.println ("Avstånd (mm) ="); display.setCursor (0, 36); b = sensor.getDistance (); display.println (b); display.display (); fördröjning (500); }
Efter uppladdning av programmet, öppna den seriella bildskärmen och den ska visa utdata som visas nedan.
VL6180 TOF-sortimentet används i smartphones, bärbara pekskärmsenheter, surfplattor, bärbara datorer, spelapparater och hushållsapparater / industriella enheter.
Här visar vi den omgivande ljusnivån i Lux och avståndet i mm.
Hitta hela programmet och demonstrationsvideon nedan. Kontrollera också hur du mäter avstånd med ultraljudssensor och ljusnivå med BH1750 Ambient Light Sensor.