VL53L0X Sensore distanza laser ToF

 

Il sensore di distanza VL53L0X utilizza la tecnologia ToF acronimo di Time of Flight.
Si tratta di un sensore laser a infrarossi che presenta un funzionamento simile a quello di una fotocellula.
All’interno del dispositivo sono presenti un piccolo Emettitore Laser ed un Ricevitore.
Quanto viene emesso un impulso luminoso vien misurato il tempo di ritorno della luce.
Questo permette di calcolare la distanza tra il sensore e l’oggetto.

VL53L0X Sensore distanza ToF

Caratteristiche del sensore

Il sensore di distanza VL53L0X (datasheet) è un modulo laser Time-of-Flight (ToF)  di nuova generazione alloggiato nel pacchetto più piccolo oggi sul mercato, che fornisce una misurazione accurata della distanza qualunque sia la riflettanza del bersaglio a differenza delle tecnologie convenzionali.
Può misurare fino a 3 metri con un’eccellente linearità a breve distanza e capacità di rilevare diversi oggetti nel campo visivo (FoV).
Si tenga comunque presente  che il sensore misura la distanza di un oggetto come una parete perché il fascio che usa è un cono di luce: non è possibile utilizzarlo per misurare la distanza di un singolo punto. Se di fronte al sensore mettete un oggetto che non riempie il suo cono di misura la misura rilevata potrebbe non essere  corretta.

 

VL53L0X Sensore distanza ToFIl VL53L0X integra un array SPAD (acronimo di Single Photon Avalanche Diodes) all’avanguardia e incorpora la tecnologia brevettata FlightSenseTM di seconda generazione di ST.
L’emettitore VCSEL (Vertical Cavity Surface-Emitting Laser) da 940 nm del VL53L0X è totalmente invisibile all’occhio umano (è visibile però se lo si inquadra per esempio con la camera di un cellulare ), accoppiato con filtri fisici a infrarossi interni, consente distanze più lunghe, maggiore immunità alla luce ambientale e una migliore robustezza per coprire la diafonia ottica in vetro .

VL53L0X Sensore distanza ToF

VL53L0X Sensore distanza ToF

VL53L0X Sensore distanza ToF

Video del test del sensore

Schema elettrico del modulo

Analizziamo ora lo schema elettrico del  modulo su cui è utilizzato il sensore di distanza VL53L0X ToF. Nel nostro caso il modulo riporta la sigla CJVL53L0XV2 con un PCB di colore nero , ma in commercio si trovano altri modelli con sigle diverse e PCB di altri colori.

Nello schema, oltre al sensore VL53L0X (datasheet), troviamo un modulo regolatore 662K 2.8V (datasheet)

Questo permette di alimentare il modulo a 5V, con riduzione del suo valore a quello di 2.8 V, valore massimo per il sensore.
E’ comunque possibile alimentare anche  con una tensione di 3,3 V sul pin VIN,  quindi il modulo è compatibile con MCU da 3.3 a 5 V .
Troviamo poi vari condensatori per il livellamento della tensione di alimentazione.
Visto la differenza di tensione di alimentazione e quella del sensore, è presente un circuito per la traslazione dei livelli per la line SCL e SDA- Il circuito è formato da due FET presenti all’interno di un chip 2N7002DW (datasheet).

Infine sono presenti due resistenze di  pull-up sulle linee SCL e SDA. Sul connettore del modulo sono presenti due ulteriori pin:

  • XSHUT: pin ingresso che permette lo shutdown del sensore
  • GPIO1: pin uscita interrupt programmabile.

Foto del PCB

Caratteristiche

  • Alimentazione: da 2,6 volt a 5,5 volt
  • Corrente assorbita: 15 mA tipica – 40 mA max.
  • Range di misura: min. 10 mm , max. 4 mt
  • Emettitore laser: 940 nm invisibile – class 1
  • Interfaccia di comunicazione: I²C
  • Dimensioni (mm): 25x10x3 – passo fori 20 mm
  • Connettore 6 poli: a saldare strip 12mm, passo 2,54mm
  • Peso: circa 2 grammi

 

Pin del modulo

SiglaDescrizione
VIN:Positivo alimentazione  (2,6 ÷5,5 V)
GND: Negativo alimentazione
SCL: Clock (SCL / SCK) per I2C e SPI
SDA:Dati (SDA / SDI) per I2C e SPI
GPIO1:Uscita interrupt open drain
XSHUT:Ingresso stand-by

Tipologia di sensore

Il modulo MLX90614 GY-906 può essere trovato in tre diverse tipologie: BAA, BCC e DCI.  Questi differiscono principalmente per l’accuratezza e la distanza di misura della temperatura .

Dove trovare il sensore?

Il modulo sensore VL53L3CX  può essere acquistato presso il sito FUTURA ELETTRONICA, il codice prodotto è  1606-HR2705. Il suo costo al momento della pubblicazione dell’articolo è di 21,00€.
Citazione dell’articolo nella sezione ARTICOLI, NEWS, PROGETTI di Elettronica In

Contenuto del blister, il connettore andrà saldato a vostra cura

Collegamento di base del sensore

Vediamo prima di tutto il collegamento di base del sensore di distanza VL53L3CX ; in questo caso leggeremo i valori forniti dal sensore tramite il monitor seriale dell’IDE.

Materiale occorrente

Il materiale per realizzare il nostro termometro è formato da:

Scheda Arduino UNO

Sensore di distanza VL53L3CX

Bread board

Cavi di collegamento colorati M/M

Schema dei collegamenti

Verifica dell’indirizzo I2C

Per prima cosa bisogna scoprire e verificare l’indirizzo i2c del sensore tramite lo Sketch i2c_scan che troveremo nella sezione “File” –> “Esempi” –> “Wire”–> “i2c_scaner” dell’IDE di Arduino.

Carichiamolo sulla nostra scheda ed apriamo il monitor seriale, con il tasto

Verificare che la velocità sia 9600 baud, il risultato sarà simile al seguente:

Se non leggiamo nulla potremmo aver invertito i cavi del collegamento I2C quindi possiamo correggere la connessione.
Se tutto è corretto, leggeremo il suo indirizzo che è 0x29; è possibile comunque modificarlo nel caso si utilizzino più sensori o magari si abbiano altre periferiche I2C con lo stesso indirizzo.

Librerie di gestione del modulo

Per facilitare l’uso del  modulo sono disponibili varie librerie. Per il caricamento occorre aprire sotto il menù Sketch, #include libreria, “Gestione Librerie..”

Nel campo ricerca si inserirà “Adafruit_VL53L0X” , trovata la libreria, premendo su “More info..” apparirà il tasto “Installa” cliccare il tasto, la libreria verrà installata.

Per installare le librerie, vi consiglio l’articolo Arduino – Tutorial, come installare una libreria

Sketch test di base

Sotto è riportato lo sketch di base per la lettura del sensore, l’unità di misura saranno i millimetri.
Per la lettura occorre attivare il monitor seriale dell’IDE premendo l’apposito tasto

Il risultato sarà simile a questo, se ci fossero problemi, verificare che la velocità di comunicazione sia impostata a115200 baud.
Nel caso il sensore non rilevi nulla di fronte a se oppure oltre il suo campo di misura , sarà riportata la scritta ” Fuori dal limite”

Lettura valori su display OLED

Per un utilizzo più semplice del sensore possiamo collegare un display OLED, in questo caso un modulo OLED da  0.96 ” con una risoluzione di 128×32 pixel, che sfrutta il driver SSD1306 e si interfaccia tramite la connessioni I2C. Per informazioni sul display vi consiglio la lettura dell’articolo Display OLED 128×32 I2C Adafruit.

Materiale necessario

Scheda Arduino UNO

Sensore di distanza VL53L3CX

OLED  0.96 ” 128×32 pixel I2C

Bread board

Cavi di collegamento colorati M/M

Schema dei collegamenti

Verifica dell’indirizzo I2C

Anche in questo caso è possibile utilizzare quanto si è già visto sopra per verificare che sia il sensore che il display siano ben collegati e riconosciti . I due dispositivi hanno indirizzi diversi per cui non ci sono problemi di gestione. L’esito dovrebbe essere simile a quello riportato nell’immagine sottostante

Se tutto è corretto, leggeremo sia l’indirizzo del sensore che è 0x29 sia quello del display che è 0x3C.

Libreria per display OLED

Per utilizzare il display OLED è necessario installare l’apposita libreria. Può essere cercata tra le librerie installabili nell’IDE, basterà inserire nel campo di ricerca “Adafruit_SSD1306“.
Sarà anche mostrata una finestra che segnala che la libreria ha una dipendenza con la libreria grafica “Adafruit GFX Library“.  Procedete premendo  “Install all”.
Per altre informazioni su come installare le librerie vedete l’articolo Arduino – Tutorial, come installare una libreria

OLED 0.91 128x32 pixel libreria

Sketch test con display OLED

Sotto è riportato lo sketch che permette di leggere i valori di distanza direttamente sul display OLED, la misura della distanza è espressa in millimetri.
Nel caso il sensore non rilevi nulla di fronte a se oppure oltre il suo campo di misura , sul display non viene mostrato nulla.

Utilizzo contemporaneo di più sensori VL53L0X

In un proprio progetto, potrebbe essere necessario utilizzare più sensori VL53L0X contemporaneamente. Questo è possibile in quanto si  può modificare l’indirizzo I2C del sensore.
Si consideri che il cambio dell’indirizzo non è permanente, infatti quando si toglierà l’alimentazione al sensore verrà automaticamente reimpostato il valore di default 0x29.
Per modificare l’indirizzo I2C al sensore VL53L0X si dovrà utilizzare anche il piedino XSHUT. Questo piedino è internamente collegato a VCC e protetto da un diodo. Se non utilizzato è quindi internamente impostato a livello ALTO ed il sensore è attivo. Se collegato ad un pin di OUTPUT di Arduino e posto basso, il sensore viene disattivato.
Ogni sensore sarà  gestito dal programma che imposterà il singolo indirizzo I2C. Sotto è riportato un esempio di schema e un’estratto del listato di gestione. Tra gli esempi della libreria, il programma completo “vl5310x_dual”