- VL6180X Time-of-Flight (ToF) Range Finder Sensor
- Schakelschema
- Vereiste bibliotheken toevoegen voor VL6180 ToF-sensor
- Programmering en werkuitleg
TOF of Time of Flight is een veelgebruikte methode om de afstand van verre objecten te meten door verschillende afstandsmeetsensoren zoals een ultrasone sensor. Het meten van de tijd die een deeltje, golf of object nodig heeft om een afstand door een medium af te leggen, wordt Time-of-flight (TOF) genoemd. Deze meting kan vervolgens worden gebruikt om de snelheid of padlengte te berekenen. Het kan ook worden gebruikt om meer te weten te komen over het deeltje of de eigenschappen van het medium, zoals samenstelling of stroomsnelheid. Het reizende object kan direct of indirect worden gedetecteerd.
Ultrasone afstandsmeetapparaten zijn een van de eerste apparaten die het vliegtijdprincipe gebruiken. Deze apparaten zenden een ultrasone puls uit en meten de afstand tot een vast materiaal op basis van de tijd die de golf nodig heeft om terug te kaatsen naar de zender. We hebben in veel van onze toepassingen een ultrasone sensor gebruikt om de afstand te meten:
- Arduino en ultrasone sensorgebaseerde afstandsmeting
- Meet de afstand met behulp van de Raspberry Pi en HCSR04 ultrasone sensor
- Hoe de afstand tussen twee ultrasone sensoren te meten
De vluchttijdmethode kan ook worden gebruikt om de elektronenmobiliteit te schatten. Eigenlijk was het ontworpen voor het meten van laaggeleidende dunne films, later werd het aangepast voor gewone halfgeleiders. Deze techniek wordt gebruikt voor organische veldeffecttransistors en voor metaal-diëlektrische-metaalstructuren. Door de toepassing van de laser- of spanningspuls worden de overtollige ladingen gegenereerd.
Het TOF-principe wordt gebruikt om de afstand tussen een sensor en een object te meten. De tijd die het signaal nodig heeft om terug te reiken naar de sensor na reflectie van een object, wordt gemeten en gebruikt om de afstand te berekenen. Diverse soorten signalen (dragers) zoals geluid, licht kunnen worden gebruikt met het TOF principe. Wanneer TOF wordt gebruikt voor bereikbepaling, is het erg krachtig wanneer het licht uitzendt in plaats van geluid. In vergelijking met echografie biedt het een snellere aflezing, hogere nauwkeurigheid en een groter bereik met behoud van het lage gewicht, de kleine afmetingen en het lage energieverbruik.
Hier in deze tutorial zullen we een VL6180X TOF Range Finder Sensor met Arduino gebruiken om de afstand tussen sensor en het object te berekenen. Deze sensor vertelt ook de lichtintensiteitswaarde in LUX.
VL6180X Time-of-Flight (ToF) Range Finder Sensor
De VL6180 verschilt van andere afstandssensoren doordat het een nauwkeurige klok gebruikt om de tijd te meten die het licht nodig heeft om vanaf elk oppervlak terug te reflecteren. Dit geeft de VL6180 een voordeel ten opzichte van andere sensoren omdat hij nauwkeuriger en ongevoeliger is voor ruis.
VL6180 is een 3-in-1 pakket dat een IR-zender, een omgevingslichtsensor en een bereiksensor bevat. Het communiceert via een I 2 C-interface. Het heeft een ingebouwde 2.8V-regelaar. Dus zelfs als we een spanning van meer dan 2,8 V aansluiten, wordt deze automatisch teruggeschakeld zonder het bord te beschadigen. Het meet een bereik tot 25 cm. Er zijn twee programmeerbare GPIO's in voorzien.
Schakelschema
Hier wordt de Nokia 5110 LCD gebruikt om het lichtniveau en de afstand weer te geven. Het LCD-scherm van de Nokia 5110 werkt op 3,3 V, dus het kan niet rechtstreeks met Arduino Nano digitale pinnen worden verbonden. Voeg dus 10k weerstanden toe in serie met de datasignalen om de 3.3V-lijnen te beschermen tegen 5V digitale pinnen. Lees meer over het gebruik van de Nokia 5110 LCD met Arduino.
De VL6180 Sensor kan rechtstreeks op de Arduino worden aangesloten. De communicatie tussen de VL6180 en Arduino is I2C. Eigenlijk combineert het I2C-communicatieprotocol de beste eigenschappen van SPI en UART. Hier kunnen we meerdere slaves op een enkele master aansluiten en kunnen we meerdere masters een of meerdere slave laten besturen. Net als UART-communicatie gebruikt I2C twee draden voor communicatie SDA (Serial Data) en SCL (Serial Clock), een datalijn en een kloklijn.
Het schakelschema voor het verbinden van de VL6180 ToF Range Finder Sensor met Arduino wordt hieronder weergegeven:
- Verbind de RST-pin van LCD met pin 6 van Arduino via de 10K-weerstand.
- Verbind de CE Pin van LCD met pin 7 van Arduino via de 10K weerstand.
- Verbind de DC-pin van het LCD-scherm met pin 5 van Arduino via de 10K-weerstand.
- Verbind de DIN-pin van het LCD-scherm met de pin 4 van Arduino via de 10K-weerstand.
- Verbind de CLK Pin van LCD met de pin 3 van Arduino via de 10K weerstand.
- Verbind de VCC-pin van het LCD-scherm met de 3.3V-pin van Arduino.
- Verbind de GND Pin van LCD met de GND van Arduino.
- Verbind de SCL-pin van VL6180 met de A5-pin van Arduino
- Verbind de SDA-pin van VL6180 met de A4-pin van Arduino
- Verbind de VCC-pin van VL6180 met de 5V-pin van Arduino
- Verbind de GND-pin van VL6180 met de GND-pin van Arduino
Vereiste bibliotheken toevoegen voor VL6180 ToF-sensor
Drie bibliotheken zullen worden gebruikt om de VL6180-sensor met Arduino te verbinden.
1. Adafruit_PCD8544
Adafruit_PCD8544 is een bibliotheek voor de Monochrome Nokia 5110 LCD-schermen. Deze displays gebruiken SPI voor communicatie. Er zijn vier of vijf pinnen nodig om dit LCD-scherm te koppelen. De link om deze bibliotheek te downloaden wordt hieronder gegeven:
github.com/adafruit/Adafruit-PCD8544-Nokia-5110-LCD-library/archive/master.zip
2. Adafruit_GFX
De Adafruit_GFX-bibliotheek voor Arduino is de belangrijkste grafische bibliotheek voor LCD-schermen en biedt een gemeenschappelijke syntaxis en een reeks grafische primitieven (punten, lijnen, cirkels, enz.). Het moet worden gekoppeld aan een hardwarespecifieke bibliotheek voor elk weergaveapparaat dat we gebruiken (om de functies op een lager niveau af te handelen). De link om deze bibliotheek te downloaden wordt hieronder gegeven:
github.com/adafruit/Adafruit-GFX-Library
3. SparkFun VL6180
SparkFun_VL6180 is de Arduino-bibliotheek met basisfunctionaliteit van de VL6180-sensor. De VL6180 bestaat uit een IR-zender, een bereiksensor en een omgevingslichtsensor die communiceren via een I2C-interface. Met deze bibliotheek kunt u de afstands- en lichtoutputs van de sensor aflezen en de gegevens via een seriële verbinding uitvoeren. De link om deze bibliotheek te downloaden wordt hieronder gegeven:
downloads.arduino.cc/libraries/github.com/sparkfun/SparkFun_VL6180_Sensor-1.1.0.zip
Voeg alle bibliotheken een voor een toe door naar Sketch >> Inclusief bibliotheek >>.ZIP-bibliotheek toevoegen in Arduino IDE te gaan. Upload vervolgens de bibliotheek die u heeft gedownload via de bovenstaande links.
Soms hoef je geen draad- en SPI-bibliotheken toe te voegen, maar als je een foutmelding krijgt, download ze dan en voeg ze toe aan je Arduino IDE.
github.com/PaulStoffregen/SPI
github.com/PaulStoffregen/Wire
Programmering en werkuitleg
Aan het einde van deze tutorial wordt de volledige code met een werkende video gegeven, hier leggen we het volledige programma uit om de werking van het project te begrijpen.
In dit programma wordt het merendeel van de onderdelen afgehandeld door de bibliotheken die we hebben toegevoegd, dus daar hoeft u zich geen zorgen over te maken.
Stel in het setup- gedeelte de baudrate in op 115200 en initialiseer de Wire-bibliotheek voor I2C. Controleer vervolgens of de VL6180 sensor naar behoren werkt of niet, als hij niet werkt, toon dan een foutmelding.
In het volgende deel zijn we het display aan het instellen, u kunt het contrast wijzigen naar uw gewenste waarde, hier stel ik het in op 50
ongeldige setup () { Serial.begin (115200); // Start Serial op 115200bps Wire.begin (); // Start I2C-bibliotheekvertraging (100); // vertraging. if (sensor.VL6180xInit ()! = 0) { Serial.println ("INITALISEREN MISLUKT"); // Initialiseer het apparaat en controleer op fouten }; sensor.VL6180xDefautSettings (); // Laad de standaardinstellingen om te beginnen. vertraging (1000); // vertraging 1s display.begin (); // init done // je kunt het contrast veranderen om de weergave aan te passen // voor de beste weergave! display.setContrast (50); display.display (); // toon splashscreen display.clearDisplay (); }
In de leegte lus deel setup de instructies om de waarden op het LCD-scherm weer te geven. Hier geven we twee waarden weer, een is het "omgevingslichtniveau in lux" (één lux is eigenlijk één lumen per vierkante meter), en de tweede is "afstand gemeten in mm". Om verschillende waarden op een LCD-scherm weer te geven, definieert u de positie van elke tekst die op het LCD-scherm moet worden weergegeven met behulp van "display.setCursor (0,0);".
leegte loop () { display.clearDisplay (); // Verkrijg omgevingslichtniveau en rapporteer in LUX Serial.print ("Ambient Light Level (Lux) ="); Serial.println (sensor.getAmbientLight (GAIN_1)); display.setTextSize (1); display.setTextColor (ZWART); display.setCursor (0,0); display.println ("Lichtniveau"); display.setCursor (0,12); display.println (sensor.getAmbientLight (GAIN_1)); // Afstand ophalen en rapporteren in mm Serial.print ("Afstand gemeten (mm) ="); Serial.println (sensor.getDistance ()); display.setTextSize (1); display.setTextColor (ZWART); display.setCursor (0, 24); display.println ("Afstand (mm) ="); display.setCursor (0, 36); b = sensor.getDistance (); display.println (b); display.display (); vertraging (500); }
Open na het uploaden van het programma de seriële monitor en deze zou de uitvoer moeten tonen zoals hieronder getoond.
De VL6180 TOF range-vinders worden gebruikt in smartphones, draagbare touchscreen-apparaten, tablets, laptops, gaming-apparaten en huishoudelijke apparaten / industriële apparaten.
Hier tonen we het omgevingslichtniveau in lux en de afstand in mm.
Vind hieronder het volledige programma en de demonstratievideo. Controleer ook hoe u afstand kunt meten met een ultrasone sensor en het lichtniveau met de BH1750 omgevingslichtsensor.