- Sensore del telemetro ToF (Time-of-Flight) VL6180X
- Schema elettrico
- Aggiunta delle librerie richieste per il sensore ToF VL6180
- Programmazione e spiegazione del lavoro
TOF o tempo di volo è un metodo comunemente usato per misurare la distanza di oggetti distanti da vari sensori di misurazione della distanza come il sensore a ultrasuoni. La misurazione del tempo impiegato da una particella, un'onda o un oggetto per percorrere una distanza attraverso un mezzo viene definita tempo di volo (TOF). Questa misura può quindi essere utilizzata per calcolare la velocità o la lunghezza del percorso. Può anche essere utilizzato per conoscere le particelle o le proprietà del mezzo come la composizione o la velocità di flusso. L'oggetto in viaggio può essere rilevato direttamente o indirettamente.
I dispositivi di misurazione della distanza ad ultrasuoni sono uno dei primi dispositivi che utilizzano il principio del tempo di volo. Questi dispositivi emettono un impulso ultrasonico e misurano la distanza da un materiale solido in base al tempo impiegato dall'onda per rimbalzare all'emettitore. Abbiamo utilizzato il sensore a ultrasuoni in molte delle nostre applicazioni per misurare la distanza:
- Misurazione della distanza basata su sensori Arduino e ultrasuoni
- Misura la distanza utilizzando Raspberry Pi e il sensore a ultrasuoni HCSR04
- Come misurare la distanza tra due sensori a ultrasuoni
Il metodo del tempo di volo può essere utilizzato anche per stimare la mobilità degli elettroni. In realtà, è stato progettato per la misura di film sottili a bassa conduttività, successivamente è stato adattato per i comuni semiconduttori. Questa tecnica viene utilizzata per transistor a effetto di campo organico e strutture metallo-dielettrico-metallo. Con l'applicazione del laser o dell'impulso di tensione, vengono generate le cariche in eccesso.
Il principio TOF viene utilizzato per misurare la distanza tra un sensore e un oggetto. Il tempo impiegato dal segnale per tornare al sensore dopo la riflessione da un oggetto viene misurato e viene utilizzato per calcolare la distanza. Vari tipi di segnali (portanti) come il suono, la luce possono essere utilizzati con il principio TOF. Quando TOF viene utilizzato per la ricerca della distanza, è molto potente quando emette luce piuttosto che suono. Rispetto agli ultrasuoni, fornisce una lettura più rapida, una maggiore precisione e una portata maggiore, pur mantenendo le caratteristiche di peso ridotto, dimensioni ridotte e basso consumo energetico.
Qui in questo tutorial useremo un sensore telemetro TOF VL6180X con Arduino per calcolare la distanza tra il sensore e l'oggetto. Questo sensore indica anche il valore di intensità della luce in LUX.
Sensore del telemetro ToF (Time-of-Flight) VL6180X
Il VL6180 si differenzia dagli altri sensori di distanza poiché utilizza un orologio preciso per misurare il tempo impiegato dalla luce per riflettersi da qualsiasi superficie. Ciò conferisce al VL6180 un vantaggio rispetto ad altri sensori perché è più preciso e immune al rumore.
VL6180 è un pacchetto 3 in 1 che include un emettitore IR, un sensore di luce ambientale e un sensore di portata. Comunica tramite un'interfaccia I 2 C. Ha un regolatore 2.8V a bordo. Quindi, anche se inseriamo una tensione superiore a 2,8 V, verrà automaticamente abbassata senza danneggiare la scheda. Si misura una gamma di fino a 25 cm. In esso sono forniti due GPIO programmabili.
Schema elettrico
Qui il display LCD del Nokia 5110 viene utilizzato per visualizzare il livello di luce e la distanza. Il Nokia 5110 LCD funziona a 3,3 V, quindi non può essere collegato direttamente ai pin digitali di Arduino Nano. Quindi aggiungere 10k resistenze in serie con i segnali di dati per proteggere le linee 3.3V da 5V pin digitali. Ulteriori informazioni sull'utilizzo dell'LCD del Nokia 5110 con Arduino.
Il sensore VL6180 può essere collegato direttamente ad Arduino. La comunicazione tra VL6180 e Arduino è I2C. In realtà il protocollo di comunicazione I2C combina le migliori caratteristiche di SPI e UART. Qui possiamo collegare più slave a un singolo master e possiamo avere più master che controllano uno o più slave. Come la comunicazione UART, I2C utilizza due fili per la comunicazione SDA (Serial Data) e SCL (Serial Clock), una linea dati e una linea di clock.
Di seguito è mostrato lo schema del circuito per il collegamento del sensore del telemetro ToF VL6180 con Arduino :
- Collega il pin RST dell'LCD al pin 6 di Arduino tramite il resistore da 10K.
- Collegare il pin CE dell'LCD al pin 7 di Arduino tramite la resistenza da 10K.
- Collega il pin DC dell'LCD al pin 5 di Arduino tramite il resistore da 10K.
- Collegare il pin DIN dell'LCD al pin 4 di Arduino tramite il resistore da 10K.
- Collegare il pin CLK dell'LCD al pin 3 di Arduino tramite il resistore da 10K.
- Collegare il pin VCC dell'LCD al pin 3.3V di Arduino.
- Collega il GND Pin dell'LCD al GND di Arduino.
- Collega il pin SCL di VL6180 al pin A5 di Arduino
- Collega il pin SDA di VL6180 al pin A4 di Arduino
- Collega il pin VCC di VL6180 al pin 5V di Arduino
- Collega il pin GND di VL6180 al pin GND di Arduino
Aggiunta delle librerie richieste per il sensore ToF VL6180
Tre librerie verranno utilizzate per interfacciare il sensore VL6180 con Arduino.
1. Adafruit_PCD8544
Adafruit_PCD8544 è una libreria per i display LCD monocromatici del Nokia 5110. Questi display utilizzano SPI per la comunicazione. Sono necessari quattro o cinque pin per l'interfacciamento di questo LCD. Il link per scaricare questa libreria è fornito di seguito:
github.com/adafruit/Adafruit-PCD8544-Nokia-5110-LCD-library/archive/master.zip
2. Adafruit_GFX
La libreria Adafruit_GFX per Arduino è la libreria grafica principale per i display LCD, che fornisce una sintassi comune e un insieme di primitive grafiche (punti, linee, cerchi, ecc.). Deve essere associato a una libreria hardware specifica per ogni dispositivo di visualizzazione che utilizziamo (per gestire le funzioni di livello inferiore). Il link per scaricare questa libreria è fornito di seguito:
github.com/adafruit/Adafruit-GFX-Library
3. SparkFun VL6180
SparkFun_VL6180 è la libreria Arduino con funzionalità di base del sensore VL6180. Il VL6180 è costituito da un emettitore IR, un sensore di portata e un sensore di luce ambientale che comunicano tramite un'interfaccia I2C. Questa libreria consente di leggere la distanza e le uscite luminose dal sensore e fornisce i dati tramite una connessione seriale. Il link per scaricare questa libreria è fornito di seguito:
downloads.arduino.cc/libraries/github.com/sparkfun/SparkFun_VL6180_Sensor-1.1.0.zip
Aggiungi tutte le librerie una per una andando in Sketch >> Includi libreria >> Aggiungi libreria.ZIP nell'IDE di Arduino. Quindi carica la libreria che hai scaricato dai link sopra.
A volte non sarà necessario aggiungere le librerie di fili e SPI, ma se ricevi un errore, scaricalo e aggiungili al tuo IDE Arduino.
github.com/PaulStoffregen/SPI
github.com/PaulStoffregen/Wire
Programmazione e spiegazione del lavoro
Il codice completo con un video funzionante viene fornito alla fine di questo tutorial, qui spieghiamo il programma completo per comprendere il funzionamento del progetto.
In questo programma la maggior parte delle parti sono gestite dalle librerie che abbiamo aggiunto, quindi non devi preoccuparti di questo.
Nella parte di configurazione s impostare il baud rate come 115200 e inizializzare la libreria Wire per I2C. Quindi controlla se il sensore VL6180 funziona correttamente o no, se non funziona, mostra un messaggio di errore.
Nella parte successiva stiamo impostando il display, puoi cambiare il contrasto al valore desiderato qui lo sto impostando come 50
void setup () { Serial.begin (115200); // Avvia seriale a 115200bps Wire.begin (); // Avvia ritardo libreria I2C (100); // ritardo. if (sensor.VL6180xInit ()! = 0) { Serial.println ("FAILED TO INITALIZE"); // Inizializza il dispositivo e verifica la presenza di errori }; sensor.VL6180xDefautSettings (); // Carica le impostazioni predefinite per iniziare. ritardo (1000); // ritardo 1s display.begin (); // init done // puoi cambiare il contrasto intorno per adattare il display // per la migliore visualizzazione! display.setContrast (50); display.display (); // mostra splashscreen display.clearDisplay (); }
Nel vuoto ad anello parte di setup le istruzioni per visualizzare i valori sullo schermo LCD. Qui stiamo visualizzando due valori, uno è il "Livello di luce ambientale in Lux" (un lux è in realtà un lumen per area di metro quadrato), e il secondo è "Distanza misurata in mm". Per visualizzare diversi valori su uno schermo LCD, definire la posizione di ciascun testo che dovrebbe essere visualizzato sullo schermo LCD utilizzando "display.setCursor (0,0);".
void loop () { display.clearDisplay (); // Ottieni il livello di luce ambientale e segnala in LUX Serial.print ("Ambient Light Level (Lux) ="); Serial.println (sensor.getAmbientLight (GAIN_1)); display.setTextSize (1); display.setTextColor (NERO); display.setCursor (0,0); display.println ("Light Level"); display.setCursor (0,12); display.println (sensor.getAmbientLight (GAIN_1)); // Ottieni distanza e segnala in mm Serial.print ("Distanza misurata (mm) ="); Serial.println (sensor.getDistance ()); display.setTextSize (1); display.setTextColor (NERO); display.setCursor (0, 24); display.println ("Distanza (mm) ="); display.setCursor (0, 36); b = sensor.getDistance (); display.println (b); display.display (); ritardo (500); }
Dopo aver caricato il programma, apri il monitor seriale e dovrebbe mostrare l'output come mostrato di seguito.
I telemetri VL6180 TOF sono utilizzati in smartphone, dispositivi touchscreen portatili, tablet, laptop, dispositivi di gioco ed elettrodomestici / dispositivi industriali.
Qui stiamo visualizzando il livello di luce ambientale in Lux e la distanza in mm.
Trova il programma completo e il video dimostrativo di seguito. Controllare anche come misurare la distanza utilizzando il sensore a ultrasuoni e il livello di luce utilizzando il sensore di luce ambientale BH1750.