- VL6180X Senzor de măsurare a timpului de zbor (ToF)
- Diagrama circuitului
- Adăugarea bibliotecilor necesare pentru senzorul ToL VL6180
- Programare și explicații de lucru
TOF sau Timpul de zbor este o metodă utilizată în mod obișnuit pentru a măsura distanța obiectelor îndepărtate prin diferite senzori de măsurare a distanței, cum ar fi senzorul cu ultrasunete. Măsurarea timpului luat de o particulă, o undă sau un obiect pentru a parcurge o distanță printr-un mediu este denumită Timp de zbor (TOF). Această măsurare poate fi apoi utilizată pentru a calcula viteza sau lungimea traseului. Poate fi, de asemenea, utilizat pentru a afla despre particula sau proprietățile mediului, cum ar fi compoziția sau debitul. Obiectul călător poate fi detectat direct sau indirect.
Dispozitivele cu ultrasunete de măsurare a distanței sunt unul dintre primele dispozitive care utilizează principiul timpului de zbor. Aceste dispozitive emit un impuls cu ultrasunete și măsoară distanța față de un material solid pe baza timpului luat de undă pentru a reveni la emițător. Am folosit senzori cu ultrasunete în multe dintre aplicațiile noastre pentru a măsura distanța:
- Măsurarea distanței pe baza senzorului Arduino și cu ultrasunete
- Măsurați distanța folosind senzorul cu ultrasunete Raspberry Pi și HCSR04
- Cum se măsoară distanța dintre doi senzori cu ultrasunete
Metoda timpului de zbor poate fi, de asemenea, utilizată pentru a estima mobilitatea electronilor. De fapt, a fost conceput pentru măsurarea filmelor subțiri cu conductivitate scăzută, ulterior a fost ajustat pentru semiconductori obișnuiți. Această tehnică este utilizată pentru tranzistoarele cu efect de câmp organic, precum și pentru structurile metal-dielectrice-metalice. Prin aplicarea laserului sau a impulsului de tensiune, sunt generate sarcinile în exces.
Principiul TOF este utilizat pentru măsurarea distanței dintre un senzor și un obiect. Timpul luat de semnal pentru a ajunge înapoi la senzor după ce reflectă de la un obiect este măsurat și este folosit pentru a calcula distanța. Diferite tipuri de semnale (purtători), cum ar fi sunetul, lumina pot fi utilizate cu principiul TOF. Când TOF este utilizat pentru depistarea distanței, este foarte puternic atunci când emite lumină mai degrabă decât sunet. Comparativ cu ultrasunetele, acesta oferă o citire mai rapidă, o precizie mai mare și o gamă mai mare, menținând în același timp greutatea redusă, dimensiunile mici și consumul redus de energie.
Aici, în acest tutorial, vom folosi un senzor VL6180X TOF Range Finder cu Arduino pentru a calcula distanța dintre senzor și obiect. Acest senzor indică și valoarea intensității luminii în LUX.
VL6180X Senzor de măsurare a timpului de zbor (ToF)
VL6180 diferă de alți senzori de distanță, deoarece folosește un ceas precis pentru a măsura timpul luat de lumină pentru a reflecta înapoi de pe orice suprafață. Acest lucru oferă VL6180 un avantaj față de alți senzori, deoarece este mai precis și imun la zgomot.
VL6180 este un pachet 3-în-1 care include un emițător IR, un senzor de lumină ambientală și un senzor de distanță. Comunică printr-o interfață I 2 C. Are un regulator de 2.8V la bord. Deci, chiar dacă conectăm o tensiune mai mare de 2,8V, acesta va fi automat deplasat în jos, fără a deteriora placa. Acesta măsoară un interval de până la 25 cm. În acesta sunt furnizate două GPIO-uri programabile.
Diagrama circuitului
Aici LCD- ul Nokia 5110 este utilizat pentru a afișa nivelul și distanța luminii. LCD-ul Nokia 5110 funcționează la 3,3 V, deci nu poate fi conectat direct cu pinii digitali Arduino Nano. Așadar, adăugați rezistențe de 10k în serie cu semnalele de date pentru a proteja liniile de 3,3V de pinii digitali de 5V. Aflați mai multe despre utilizarea Nokia 5110 LCD cu Arduino.
Senzorul VL6180 poate fi conectat direct la Arduino. Comunicația dintre VL6180 și Arduino este I2C. De fapt, protocolul de comunicație I2C combină cele mai bune caracteristici ale SPI și UART. Aici putem conecta mai mulți sclavi la un singur maestru și putem avea mai mulți maeștri care controlează un singur sau mai mulți sclavi. La fel ca comunicarea UART, I2C folosește două fire pentru comunicații SDA (Serial Data) și SCL (Serial Clock), o linie de date și o linie de ceas.
Schema de circuit pentru conectarea senzorului VL6180 ToF Range Finder cu Arduino este prezentată mai jos:
- Conectați pinul RST al LCD-ului la pinul 6 al Arduino prin rezistorul de 10K.
- Conectați PIN-ul CE al LCD-ului la pinul 7 al Arduino prin rezistorul de 10K.
- Conectați pinul DC al LCD-ului la pinul 5 al Arduino prin rezistorul de 10K.
- Conectați pinul DIN al LCD-ului la pinul 4 al Arduino prin rezistorul de 10K.
- Conectați PIN-ul CLK al LCD-ului la pinul 3 al Arduino prin rezistorul de 10K.
- Conectați pinul VCC al LCD-ului la pinul de 3,3 V al Arduino.
- Conectați pinul GND al LCD-ului la GND-ul Arduino.
- Conectați pinul SCL al VL6180 la pinul A5 al Arduino
- Conectați pinul SDA al VL6180 la pinul A4 al Arduino
- Conectați pinul VCC al VL6180 la pinul 5V al Arduino
- Conectați pinul GND al VL6180 la pinul GND al Arduino
Adăugarea bibliotecilor necesare pentru senzorul ToL VL6180
În interfața senzorului VL6180 cu Arduino vor fi utilizate trei biblioteci.
1. Adafruit_PCD8544
Adafruit_PCD8544 este o bibliotecă pentru afișajele LCD monocrome Nokia 5110. Aceste afișaje utilizează SPI pentru comunicare. Pentru interfațarea acestui LCD sunt necesari patru sau cinci pini. Link-ul pentru descărcarea acestei biblioteci este dat mai jos:
github.com/adafruit/Adafruit-PCD8544-Nokia-5110-LCD-library/archive/master.zip
2. Adafruit_GFX
Biblioteca Adafruit_GFX pentru Arduino este biblioteca grafică de bază pentru afișajele LCD, oferind o sintaxă comună și un set de primitive grafice (puncte, linii, cercuri etc.). Trebuie asociat cu o bibliotecă specifică hardware pentru fiecare dispozitiv de afișare pe care îl folosim (pentru a gestiona funcțiile de nivel inferior). Link-ul pentru descărcarea acestei biblioteci este dat mai jos:
github.com/adafruit/Adafruit-GFX-Library
3. SparkFun VL6180
SparkFun_VL6180 este biblioteca Arduino cu funcționalitatea de bază a senzorului VL6180. VL6180 constă dintr-un emițător IR, un senzor de distanță și un senzor de lumină ambientală care comunică printr-o interfață I2C. Această bibliotecă vă permite să citiți distanța și ieșirile de lumină de la senzor și transmite datele printr-o conexiune serială. Link-ul pentru descărcarea acestei biblioteci este dat mai jos:
downloads.arduino.cc/libraries/github.com/sparkfun/SparkFun_VL6180_Sensor-1.1.0.zip
Adăugați toate bibliotecile una câte una mergând în Sketch >> Includeți biblioteca >> Adăugați o bibliotecă.ZIP în Arduino IDE. Apoi încărcați biblioteca pe care ați descărcat-o din linkurile de mai sus.
Uneori nu va trebui să adăugați biblioteci de fir și SPI, dar dacă primiți o eroare, vă rugăm să descărcați și să le adăugați la IDE-ul dvs. Arduino
github.com/PaulStoffregen/SPI
github.com/PaulStoffregen/Wire
Programare și explicații de lucru
Codul complet cu un videoclip de lucru este dat la sfârșitul acestui tutorial, aici explicăm programul complet pentru a înțelege funcționarea proiectului.
În acest program majoritatea părților sunt tratate de bibliotecile pe care le-am adăugat, astfel încât nu trebuie să vă faceți griji cu privire la asta.
În configurarea parte s seta rata de transfer ca 115200 și să inițializeze biblioteca de sârmă pentru I2C. Apoi verificați dacă senzorul VL6180 funcționează corect sau nu, dacă nu funcționează, afișați un mesaj de eroare.
În următoarea parte, configurăm afișajul, puteți schimba contrastul cu valoarea dorită aici, îl setez ca 50
void setup () { Serial.begin (115200); // Porniți Serial la 115200bps Wire.begin (); // Începeți întârzierea bibliotecii I2C (100); // întârziere. if (sensor.VL6180xInit ()! = 0) { Serial.println ("FĂCUT LA INITALIZARE"); // Inițializați dispozitivul și verificați dacă există erori }; sensor.VL6180xDefautSettings (); // Încărcați setările implicite pentru a începe. întârziere (1000); // întârziere 1s display.begin (); // init done // puteți schimba contrastul pentru a adapta afișajul // pentru o vizionare cât mai bună! display.setContrast (50); display.display (); // afișează splashscreen display.clearDisplay (); }
În configurarea părții buclei de gol, instrucțiunile pentru afișarea valorilor pe ecranul LCD. Aici afișăm două valori, una este „Nivelul de lumină ambientală în Lux” (Un lux este de fapt un lumen pe metru pătrat de suprafață), iar al doilea este „Distanța măsurată în mm”. Pentru a afișa valori diferite pe un ecran LCD definiți poziția fiecărui text care ar trebui să fie afișat pe ecranul LCD utilizând „display.setCursor (0,0);”.
bucla void () { display.clearDisplay (); // Obțineți nivelul de lumină ambientală și raportați în LUX Serial.print ("Nivelul de lumină ambientală (Lux) ="); Serial.println (sensor.getAmbientLight (GAIN_1)); display.setTextSize (1); display.setTextColor (NEGRU); display.setCursor (0,0); display.println ("Nivel de lumină"); display.setCursor (0,12); display.println (sensor.getAmbientLight (GAIN_1)); // Obțineți Distanța și raportați în mm Serial.print ("Distanța măsurată (mm) ="); Serial.println (sensor.getDistance ()); display.setTextSize (1); display.setTextColor (NEGRU); display.setCursor (0, 24); display.println ("Distanța (mm) ="); display.setCursor (0, 36); b = sensor.getDistance (); display.println (b); display.display (); întârziere (500); }
După încărcarea programului, deschideți monitorul serial și acesta trebuie să afișeze ieșirea așa cum se arată mai jos.
Găsitoarele VL6180 TOF sunt utilizate în smartphone-uri, dispozitive portabile cu ecran tactil, tablete, laptopuri, dispozitive de jocuri și aparate de uz casnic / dispozitive industriale.
Aici afișăm nivelul de lumină ambientală în Lux și distanța în mm.
Găsiți programul complet și videoclipul demonstrativ de mai jos. De asemenea, verificați cum să măsurați distanța utilizând senzorul cu ultrasunete și nivelul de lumină utilizând senzorul de lumină ambientală BH1750.