Modulo sensore VL53L8CX
Manuale d'uso
Introduzione
Lo scopo di questo manuale utente è spiegare come gestire il sensore ToF (Time-of-Flight) VL53L8X, utilizzando l'API del driver ultra lite (ULD). Descrive le principali funzioni per programmare il dispositivo, le calibrazioni ei risultati di output.
Basato sulla tecnologia FlightSense di ST, il VL53L8CX incorpora un'efficiente lente di metasuperficie (DOE) posizionata sull'emettitore laser che consente la proiezione di un FoV quadrato di 45° x 45° sulla scena.
La sua capacità multizona fornisce una matrice di 8×8 zone (64 zone) e può lavorare a velocità elevate (60 Hz) fino a 400 cm.
Grazie alla modalità autonoma con soglia di distanza programmabile, il VL53L8CX è perfetto per qualsiasi applicazione che richieda il rilevamento di utenti a bassa potenza. Gli algoritmi brevettati di ST e l'innovativa costruzione del modulo consentono al VL53L8CX di rilevare, in ciascuna zona, più oggetti all'interno del campo visivo con una comprensione approfondita. Gli algoritmi dell'istogramma ST garantiscono l'immunità al crosstalk del vetro di copertura oltre i 60 cm.
Come tutti i sensori Time-of-Flight (ToF) basati sulla tecnologia FlightSense di ST, il VL53L8CX registra, in ciascuna zona, una distanza assoluta indipendentemente dal colore e dalla riflettanza del target.
Alloggiato in un pacchetto reflowable in miniatura che integra un array SPAD, il VL53L8CX raggiunge le migliori prestazioni in varie condizioni di illuminazione ambientale e per un'ampia gamma di materiali del vetro di copertura.
Tutti i sensori ToF di ST integrano un VCSEL che emette una luce IR a 940 nm completamente invisibile, totalmente sicura per gli occhi (certificazione Classe 1).
Acronimi e Abbreviazioni
Acronimo/abbreviazione | Definizione |
DOE | elemento ottico diffrattivo |
Campo visivo | campo di view |
I2C | circuito inter-integrato (bus seriale) |
Kcps/SPAD | Kilo-count al secondo per spad (unità utilizzata per quantificare il numero di fotoni nell'array SPAD) |
Memoria RAM | memoria ad accesso casuale |
SCL | linea orologio seriale |
SDA | dati seriali |
SPAD | diodo a valanga a singolo fotone |
ToF | Tempo di volo |
ULD | driver ultraleggero |
VCSEL | diodo ad emissione superficiale a cavità verticale |
Xtalk | diafonia |
Descrizione funzionale
2.1 Fine del sistemaview
Il sistema VL53L8CX è composto da un modulo hardware e dal software del driver ultra lite (VL53L8CX ULD) in esecuzione su un host (vedere la figura seguente). Il modulo hardware contiene il sensore ToF. La STMicroelectronics fornisce il driver del software, denominato in questo documento "il driver". Questo documento descrive le funzioni del driver, che sono accessibili all'host. Queste funzioni controllano il sensore e ottengono i dati di distanza.
2.2 Orientamento efficace
Il modulo include una lente sopra l'apertura RX, che capovolge (orizzontalmente e verticalmente) l'immagine catturata del bersaglio. Di conseguenza, la zona identificata come zona 0, in basso a sinistra dell'array SPAD, è illuminata da un bersaglio posto in alto a destra della scena.
2.3 Schemi e configurazione I2C/SPI
La comunicazione tra driver e firmware è gestita da I2C o SPI. La capacità massima dell'I2C è di 1 MHz e la capacità massima dell'SPI è di 20 MHz. L'implementazione di ciascun protocollo di comunicazione richiede pull up come descritto nella scheda tecnica VL53L8CX.
Il dispositivo VL53L8CX ha un indirizzo I2C predefinito di 0x52. Tuttavia, è possibile modificare l'indirizzo predefinito per evitare conflitti con altri dispositivi o per facilitare l'aggiunta di più moduli VL53L8CX al sistema per un maggiore FoV di sistema. L'indirizzo I2C può essere modificato utilizzando la funzione vl53l8cx_set_i2c_address(). Per utilizzare l'SPI, il multisensore è cablato utilizzando una configurazione slave indipendente (il pin NCS).
Per consentire a un dispositivo di modificare il proprio indirizzo I2C senza influire sugli altri sul bus I2C, è importante farlo
disabilitare la comunicazione I2C dei dispositivi non modificati. La procedura è la seguente:
- Accendere il sistema normalmente.
- Tirare verso il basso il pin LPn del dispositivo di cui non verrà modificato l'indirizzo.
- Sollevare il pin LPn del dispositivo con l'indirizzo I2C modificato.
- Programmare l'indirizzo I2C sul dispositivo utilizzando la funzione set_i2c_address().
- Tirare verso l'alto il pin LPn del dispositivo non riprogrammato.
Tutti i dispositivi dovrebbero ora essere disponibili sul bus I2C. Ripetere i passaggi precedenti per tutti i dispositivi nel sistema che richiedono un nuovo indirizzo I2C.
Contenuto del pacchetto e flusso di dati
3.1 Architettura e contenuto del driver
Il pacchetto VL53L8CX ULD è composto da quattro cartelle. Il driver si trova nella cartella /VL53L8CX_ULD_API.
Il driver è composto da obbligatorio e facoltativo fileS. Opzionale filesono plugins utilizzato per estendere le funzionalità ULD.
Ogni plugin inizia con la parola “vl53l8cx_plugin” (ad esempio vl53l8cx_plugin_xtalk.h). Se l'utente non vuole il proposto plugins, possono essere rimossi senza influire sulle altre funzionalità del driver. La figura seguente rappresenta l'obbligo filese l'opzionale plugins.
Nota:
L'utente deve anche implementare due filesi trova nella cartella /Platform. La piattaforma proposta è un guscio vuoto, e va riempito di funzioni dedicate.
Piattaforma.h file contiene macro obbligatorie per utilizzare l'ULD. Tutti i file il contenuto è obbligatorio per utilizzare correttamente l'ULD.
3.2 Flusso di calibrazione
Crosstalk (Xtalk) è definito come la quantità di segnale ricevuto sull'array SPAD, che è dovuto alla riflessione della luce VCSEL all'interno della finestra protettiva (vetro di copertura) aggiunta sopra il modulo. Il modulo VL53L8CX è autocalibrato e può essere utilizzato senza alcuna calibrazione aggiuntiva.
Potrebbe essere necessaria la calibrazione Xtalk se il modulo è protetto da un vetro di copertura. Il VL53L8CX è immune a Xtalk oltre i 60 cm grazie a un algoritmo di istogramma. Tuttavia, a brevi distanze inferiori a 60 cm, Xtalk può essere più grande del segnale di ritorno effettivo. Ciò fornisce una falsa lettura del bersaglio o fa apparire i bersagli più vicini di quanto non siano in realtà. Tutte le funzioni di calibrazione Xtalk sono incluse in un plugin Xtalk (opzionale). L'utente deve utilizzare il file 'vl53l8cx_plugin_xtalk'.
Xtalk può essere calibrato una volta e i dati possono essere salvati in modo da poter essere riutilizzati in seguito. È necessario un bersaglio a distanza fissa, con una riflettanza nota. La distanza minima richiesta è di 600 mm e il bersaglio deve coprire l'intero campo visivo. A seconda della configurazione, l'utente può modificare le impostazioni per adattare la calibrazione Xtalk, come proposto nella tabella seguente.
Tabella 1. Impostazioni disponibili per la calibrazione
Collocamento | Minimo | Proposto da STMicroelettronica |
Massimo |
Distanza [mm] | 600 | 600 | 3000 |
Numero di samples | 1 | 4 | 16 |
Riflettanza [%] | 1 | 3 | 99 |
Nota:
Aumentando il numero di samples aumenta la precisione, ma aumenta anche il tempo per la calibrazione. Il tempo relativo al numero di samples è lineare e i valori seguono il timeout approssimativo:
- Anno 1ample ≈ 1 secondo
- Anno 4amples ≈ 2.5 secondi
- Anno 16amples ≈ 8.5 secondi
La calibrazione viene eseguita utilizzando la funzione vl53l8cx_calibrate_xtalk(). Questa funzione può essere utilizzata in qualsiasi momento.
Tuttavia, il sensore deve essere prima inizializzato. La figura seguente rappresenta il flusso di calibrazione xtalk.
Figura 7. Flusso di calibrazione Xtalk
3.3 Gamma di flusso
La figura seguente rappresenta il flusso variabile utilizzato per ottenere le misurazioni. La calibrazione Xtalk e le chiamate di funzioni opzionali devono essere utilizzate prima di iniziare la sessione di misurazione. Le funzioni get/set non possono essere utilizzate durante una sessione di intervallo e la programmazione "al volo" non è supportata.
Funzionalità disponibili
L'API VL53L8CX ULD include diverse funzioni, che consentono all'utente di regolare il sensore, a seconda del caso d'uso. Tutte le funzioni disponibili per il conducente sono descritte nelle sezioni seguenti.
4.1 Inizializzazione
L'inizializzazione deve essere eseguita prima di utilizzare il sensore VL53L8CX. Questa operazione richiede all'utente di:
- Accendi il sensore (pin VDDIO, AVDD, CORE_1V8 e LPn impostati su High
- Chiama la funzione vl53l8cx_init(). La funzione copia il firmware (~84 Kbyte) nel modulo. Questo viene fatto caricando il codice sull'interfaccia I2C/SPI ed eseguendo una routine di avvio per completare l'inizializzazione.
4.2 Gestione del reset del sensore
Per ripristinare il dispositivo, è necessario attivare i seguenti pin:
- Imposta i pin VDDIO, AVDD e CORE_1V8 su basso.
- Attendere 10 ms.
- Imposta i pin VDDIO, AVDD e CORE_1V8 su alto.
Nota:
Attivando solo il pin I2C_RST si ripristina la comunicazione I2C.
4.3 Risoluzione
La risoluzione corrisponde al numero di zone disponibili. Il sensore VL53L8CX ha due possibili risoluzioni: 4×4 (16 zone) e 8×8 (64 zone). Di default il sensore è programmato in 4×4.
La funzione vl53l8cx_set_resolution() consente all'utente di modificare la risoluzione. Poiché la frequenza di range dipende dalla risoluzione, questa funzione deve essere utilizzata prima di aggiornare la frequenza di range. Inoltre, la modifica della risoluzione aumenta anche la dimensione del traffico sul bus I2C/SPI quando vengono letti i risultati.
4.4 Frequenza del range
La frequenza di misurazione può essere utilizzata per modificare la frequenza di misurazione. Poiché la frequenza massima è diversa tra le risoluzioni 4×4 e 8×8, questa funzione deve essere utilizzata dopo aver scelto una risoluzione. I valori minimi e massimi consentiti sono elencati nella tabella seguente.
Tabella 2. Frequenze minime e massime
Risoluzione | Frequenza minima [Hz] | Frequenza di portata massima [Hz] |
4×4 | 1 | 60 |
8×8 | 1 | 15 |
La frequenza di range può essere aggiornata utilizzando la funzione vl53l8cx_set_ranging_frequency_hz(). Per impostazione predefinita, la frequenza di range è impostata su 1 Hz.
4.5 Modalità di portata
La modalità di misurazione consente all'utente di scegliere tra prestazioni elevate o basso consumo energetico.
Le modalità proposte sono due:
- Continuo: il dispositivo acquisisce continuamente fotogrammi con una frequenza variabile definita dall'utente. Il VCSEL è abilitato durante tutto il range, quindi la distanza massima del range e l'immunità ambientale sono migliori. Questa modalità è consigliata per misurazioni veloci o alte prestazioni.
- Autonomo: Questa è la modalità di default. Il dispositivo acquisisce continuamente fotogrammi con una frequenza variabile definita dall'utente. Il VCSEL è abilitato durante un periodo definito dall'utente, utilizzando la funzione vl53l8cx_set_integration_time_ms(). Poiché il VCSEL non è sempre abilitato, il consumo energetico è ridotto. I vantaggi sono più evidenti con una frequenza ridotta. Questa modalità è consigliata per applicazioni a bassa potenza.
La modalità di intervallo può essere modificata utilizzando la funzione vl53l8cx_set_ranging_mode().
4.6 Tempo di integrazione
Il tempo di integrazione è una funzione disponibile solo utilizzando la modalità Autonomous range (fare riferimento alla Sezione 4.5 Modalità range).
Consente all'utente di modificare l'ora mentre VCSEL è abilitato. La modifica del tempo di integrazione se la modalità di intervallo è impostata su continua non ha alcun effetto. Il tempo di integrazione predefinito è impostato su 5 ms.
L'effetto del tempo di integrazione è diverso per le risoluzioni 4×4 e 8×8. La risoluzione 4×4 è composta da un tempo di integrazione e la risoluzione 8×8 è composta da quattro tempi di integrazione. Le figure seguenti rappresentano l'emissione VCSEL per entrambe le risoluzioni.
La somma di tutti i tempi di integrazione + 1 ms di sovraccarico deve essere inferiore al periodo di misurazione. In caso contrario, il periodo di intervallo viene automaticamente aumentato.
4.7 Modalità di alimentazione
Le modalità di alimentazione possono essere utilizzate per ridurre il consumo energetico quando il dispositivo non viene utilizzato. Il VL53L8CX può funzionare in una delle seguenti modalità di alimentazione:
- Riattivazione: il dispositivo è impostato su HP inattivo (alta potenza), in attesa di istruzioni.
- Sleep: il dispositivo è impostato su LP inattivo (basso consumo), lo stato di basso consumo. Il dispositivo non può essere utilizzato fino a quando non viene impostato in modalità di riattivazione. Questa modalità conserva il firmware e la configurazione.
La modalità di alimentazione può essere modificata utilizzando la funzione vl53l8cx_set_power_mode(). La modalità predefinita è riattivazione.
Nota:
Se l'utente desidera modificare la modalità di alimentazione, il dispositivo non deve trovarsi in uno stato di intervallo.
4.8 affilatrice
Il segnale restituito da un bersaglio non è un impulso pulito con spigoli vivi. I bordi sono in pendenza e possono influenzare le distanze riportate nelle zone adiacenti. L'affilatoio viene utilizzato per rimuovere parte o tutto il segnale causato dall'abbagliamento velato.
L'example mostrato nella figura seguente rappresenta un bersaglio vicino a 100 mm centrato nel FoV, e un altro bersaglio, più indietro a 500 mm. A seconda del valore dello sharpener, il bersaglio vicino può apparire in più zone rispetto a quello reale.
Figura 11. Exampfile della scena utilizzando diversi valori di nitidezza
L'affilatore può essere modificato utilizzando la funzione vl53l8cx_set_sharpener_percent(). I valori consentiti sono compresi tra 0% e 99%. Il valore predefinito è 5 %.
4.9 Ordine obiettivo
Il VL53L8CX può misurare diversi target per zona. Grazie all'elaborazione dell'istogramma, l'host è in grado di scegliere l'ordine dei target segnalati. Ci sono due opzioni:
- Più vicino: l'obiettivo più vicino è il primo segnalato
- Più forte: l'obiettivo più forte è il primo segnalato
L'ordine di destinazione può essere modificato utilizzando la funzione vl53l8cx_set_target_order(). L'ordine predefinito è Strongest.
L'example nella figura seguente rappresenta il rilevamento di due bersagli. Uno a 100 mm a bassa riflettanza e uno a 700 mm ad alta riflettanza.
4.10 Obiettivi multipli per zona
Il VL53L8CX può misurare fino a quattro target per zona. L'utente può configurare il numero di target restituiti dal sensore.
Nota:
La distanza minima tra due target da rilevare è di 600 mm.
La selezione non è possibile dal driver; deve essere fatto in 'platform.h' file. La macro
VL53L8CX_NB_ TARGET_PER_ZONE deve essere impostato su un valore compreso tra 1 e 4. L'ordine del target descritto nella Sezione 4.9 Ordine del target influisce direttamente sull'ordine del target rilevato. Per impostazione predefinita, il sensore emette solo un massimo di un target per zona.
Nota:
Un numero maggiore di obiettivi per zona aumenta la dimensione della RAM richiesta.
4.11 Margine Xtalk
Il margine Xtalk è una funzionalità aggiuntiva disponibile solo utilizzando il plugin Xtalk. Il .c e .f fileÈ necessario utilizzare 'vl53l8cx_plugin_xtalk'.
Il margine viene utilizzato per modificare la soglia di rilevamento quando è presente un vetrino coprioggetto sulla parte superiore del sensore. La soglia può essere aumentata per garantire che il vetro di copertura non venga mai rilevato, dopo aver impostato i dati di calibrazione Xtalk.
Per esempioample, l'utente può eseguire una calibrazione Xtalk su un singolo dispositivo e riutilizzare gli stessi dati di calibrazione per tutti gli altri dispositivi. Il margine Xtalk può essere utilizzato per ottimizzare la correzione Xtalk. La figura sottostante rappresenta il margine Xtalk.
Figura 13. Margine Xtalk
4.12 Soglie di rilevamento
Oltre alle normali capacità di portata, il sensore può essere programmato per rilevare un oggetto in base a determinati criteri predefiniti. Questa funzionalità è disponibile utilizzando il plug-in "soglie di rilevamento", che è un'opzione non inclusa di default nell'API. IL files chiamato 'vl53l8cx_plugin_detection_thresholds' deve essere utilizzato.
La funzione può essere utilizzata per attivare un interrupt al pin A1 (INT) quando vengono soddisfatte le condizioni definite dall'utente. Sono possibili tre configurazioni:
- Risoluzione 4×4: utilizzando 1 soglia per zona (totale di 16 soglie)
- Risoluzione 4×4: utilizzando 2 soglie per zona (totale 32 soglie)
- Risoluzione 8×8: utilizzando 1 soglia per zona (totale di 64 soglie)
Qualunque sia la configurazione utilizzata, la procedura per la creazione delle soglie e la dimensione della RAM sono le stesse. Per ogni combinazione di soglia, devono essere compilati diversi campi: - Zone id: id della zona selezionata (fare riferimento alla Sezione 2.2 Orientamento effettivo)
- Misura: misura da catturare (distanza, segnale, numero di SPAD, …)
- Tipo: finestre di misura (in finestre, fuori finestre, sotto soglia bassa, …)
- Soglia bassa: utente con soglia bassa per il trigger. L'utente non ha bisogno di impostare il formato, viene gestito automaticamente dall'API.
- Soglia alta: utente con soglia alta per il trigger. L'utente non ha bisogno di impostare il formato, viene gestito automaticamente dall'API.
- Operazione matematica: utilizzata solo per combinazioni 4×4 – 2 soglie per zona. L'utente può impostare una combinazione utilizzando diverse soglie in una zona.
4.13 Interrompere l'autostop
La funzione di interruzione dell'arresto automatico viene utilizzata per interrompere la sessione di misurazione durante una misurazione. Per impostazione predefinita, il sensore non può essere arrestato durante una misurazione, perché le misurazioni del fotogramma devono essere completate. Tuttavia, utilizzando l'autostop, le misurazioni del frame vengono interrotte quando viene attivato un interrupt.
La funzione di arresto automatico è utile quando è combinata con una soglia di rilevamento. Quando viene rilevato un target, la misurazione corrente viene automaticamente interrotta. Autostop può essere utilizzato in una macchina a stati del cliente per passare rapidamente a un'altra configurazione del sensore.
È possibile abilitare una funzione di arresto automatico degli interrupt utilizzando la funzione vl53l8cx_set_detection_threshold_auto_stop().
Dopo che una misurazione è stata interrotta, si consiglia di arrestare il sensore utilizzando la funzione vl53l8cx_stop_ranging().
4.14 Indicatore di movimento
Il sensore VL53L8CX dispone di una funzione firmware incorporata che consente il rilevamento del movimento in una scena. L'indicatore di movimento viene calcolato tra fotogrammi sequenziali. Questa opzione è disponibile utilizzando il plugin 'vl53l8cx_plugin_motion_indicator'.
L'indicatore di movimento viene inizializzato utilizzando la funzione vl53l8cx_motion_indicator_init(). Se l'utente desidera modificare la risoluzione del sensore, deve aggiornare la risoluzione dell'indicatore di movimento utilizzando la funzione dedicata: vl53l8cx_motion_indicator_set_resolution().
L'utente può anche modificare le distanze minima e massima per il rilevamento del movimento. La differenza tra le distanze minima e massima non può essere superiore a 1500 mm. Per impostazione predefinita, le distanze vengono inizializzate con valori compresi tra 400 mm e 1500 mm.
I risultati vengono memorizzati nel campo 'motion_indicator'. In questo campo, l'array 'motion' fornisce un valore contenente l'intensità del movimento per zona. Un valore elevato indica un'elevata variazione di movimento tra i fotogrammi. Un movimento tipico fornisce un valore compreso tra 100 e 500. Questa sensibilità dipende dal tempo di integrazione, dalla distanza del bersaglio e dalla riflettanza del bersaglio.
Una combinazione ideale per applicazioni a bassa potenza è l'uso dell'indicatore di movimento con modalità di misurazione autonoma e soglie di rilevamento programmate sul movimento. Ciò consente il rilevamento delle variazioni di movimento nel campo visivo con un consumo energetico minimo.
4.15 Pin di sincronizzazione esterno
È possibile utilizzare una sorgente di trigger esterna per sincronizzare le acquisizioni. Quando la sincronizzazione esterna è abilitata, il VL53L8CX attende un'interruzione sul pin SYNC per avviare l'acquisizione successiva. Per utilizzare questa funzione, il pin SYNC (B1) deve essere collegato come descritto nella scheda tecnica del prodotto.
Non ci sono requisiti specifici per l'utilizzo della sincronizzazione esterna. Tuttavia, la frequenza del VL53L8CX dovrebbe essere superiore alla frequenza del segnale esterno.
La sincronizzazione esterna può essere abilitata o disabilitata utilizzando la funzione vl53l8cx_set_external_sync_pin_enable(). Il range può essere avviato come al solito utilizzando la funzione vl53l8cx_start_ranging(). Quando un utente desidera arrestare il sensore, si consiglia di attivare/disattivare il pin SYNC per riattivare il firmware VL53L8CX.
Un flusso d'attualità per l'utilizzo del pin di sincronizzazione esterno è mostrato di seguito nella Sezione 4.15.
Figura 14. Flusso di sincronizzazione esterno
Risultati a distanza
5.1 Dati disponibili
Un ampio elenco di dati sull'obiettivo e sull'ambiente può essere emesso durante le attività di misurazione. La tabella seguente descrive i parametri a disposizione dell'utente.
Tabella 3. Uscita disponibile utilizzando il sensore VL53L8CX
Elemento |
Nb byte (RAM) | Unità |
Descrizione |
Ambiente per SPAD | 256 | Kcps/SPAD | Misurazione della velocità ambientale eseguita sull'array SPAD, senza emissione di fotoni attivi, per misurare la velocità del segnale ambientale dovuta al rumore. |
Numero di bersagli rilevati |
64 |
Nessuno | Numero di bersagli rilevati nella zona corrente. Questo valore dovrebbe essere il primo da controllare per conoscere la validità di una misura. |
Numero di SPAD abilitati | 256 | Nessuno | Numero di SPAD abilitati per la misura corrente. Un bersaglio riflettente lontano o basso attiverà più SPAD. |
Segnale per SPAD |
256 x nb obiettivi programmati |
Kcps/SPAD |
Quantità di fotoni misurati durante il VCSEL
Pulse. |
Gamma sigma |
128 x nb obiettivi programmati |
Millimetro |
Stimatore Sigma per il rumore nella distanza del target riportato. |
Distanza |
128 x nb obiettivi programmati | Millimetro | Distanza bersaglio |
Stato obiettivo | 64 x nb obiettivi programmati | Nessuno | Validità delle misure. Vedere la Sezione 5.5 Interpretazione dei risultati per ulteriori informazioni. |
Riflessione | 64 obiettivi numerici programmati | Percent | Riflettanza target stimata in percentuale |
Indicatore di movimento | 140 | Nessuno | Struttura contenente i risultati dell'indicatore di movimento. Il campo 'movimento' contiene l'intensità del movimento. |
Nota:
Per più elementi (segnale per spad, sigma, …) l'accesso ai dati è diverso se l'utente ha programmato più di 1 target per zona (vedi Sezione 4.10 Target multipli per zona). Vedi esample code per ulteriori informazioni.
5.2 Personalizza la selezione dell'output
Per impostazione predefinita, tutte le uscite VL53L8CX sono abilitate. Se necessario, l'utente può disabilitare alcune uscite del sensore.
La disabilitazione delle misurazioni non è disponibile sul driver; deve essere eseguito in 'platform.h' file. L'utente può dichiarare le seguenti macro per disabilitare le uscite:
#define VL53L8CX _DISABLE_AMBIENT_PER_SPAD
#define VL53L8CX _DISABLE_NB_SPADS_ENABLED
#define VL53L8CX _DISABLE_NB_TARGET_DETECTED
#define VL53L8CX _DISABLE_SIGNAL_PER_SPAD
#define VL53L8CX _DISABLE_RANGE_SIGMA_MM
#define VL53L8CX _DISABILITA_DISTANZA_MM
#define VL53L8CX _DISABLE_TARGET_STATUS
#define VL53L8CX _DISABLE_REFLECTANCE_PERCENT
#define VL53L8CX _DISABLE_MOTION_INDICATOR
Di conseguenza, i campi non vengono dichiarati nella struttura dei risultati ei dati non vengono trasferiti all'host.
Le dimensioni della RAM e le dimensioni I2C/SPI sono ridotte.
Per garantire la coerenza dei dati, la ST consiglia di mantenere sempre abilitati 'numero di target rilevati' e 'stato target'. Consente di filtrare le misurazioni in base allo stato del target (fare riferimento alla Sezione 5.5 Interpretazione dei risultati).
5.3 Ottenere risultati variabili
Durante la sessione di misurazione, ci sono due modi per sapere se sono disponibili nuovi dati di misurazione:
- Modalità polling: usa continuamente la funzione vl53l8cx_check_data_ready(). Rileva un nuovo conteggio del flusso restituito dal sensore.
- Modalità di interruzione: attende un'interruzione sollevata sul pin A1 (INT). L'interrupt viene cancellato automaticamente dopo ~100 μs.
Quando i nuovi dati sono pronti, i risultati possono essere letti utilizzando la funzione vl53l8cx_get_ranging_data(). Restituisce una struttura aggiornata contenente tutto l'output selezionato. Poiché il dispositivo è asincrono, non vi è alcuna interruzione da cancellare per continuare la sessione di misurazione.
Questa funzione è disponibile per entrambe le modalità di misurazione continua e autonoma.
5.4 Utilizzo del formato firmware grezzo
Dopo aver trasferito i dati di misurazione tramite I2C/SPI, avviene una conversione tra il formato del firmware e il formato dell'host. Questa operazione viene tipicamente eseguita per avere una distanza in millimetri come uscita predefinita del sensore. Se l'utente desidera utilizzare il formato del firmware, la seguente macro deve essere definita nella piattaforma file:
VL53L8CX#define VL53L8CX _USE_RAW_FORMAT
5.5 Interpretazione dei risultati
I dati restituiti dal VL53L8CX possono essere filtrati per tener conto dello stato del target. Lo stato indica la validità della misurazione. L'elenco completo degli stati è descritto nella tabella seguente.
Tabella 4. Elenco degli stati target disponibili
Stato obiettivo | Descrizione |
0 | I dati sulla distanza non vengono aggiornati |
1 | Velocità del segnale troppo bassa sull'array SPAD |
2 | Fase obiettivo |
3 | Stimatore Sigma troppo alto |
4 | Coerenza target non riuscita |
5 | Intervallo valido |
6 | Avvolgimento non eseguito (tipicamente il primo intervallo) |
7 | Coerenza della tariffa non riuscita |
8 | Velocità del segnale troppo bassa per il target attuale |
9 | Intervallo valido con impulso grande (potrebbe essere dovuto a un target unito) |
10 | Portata valida, ma nessun bersaglio rilevato alla portata precedente |
11 | Coerenza della misurazione non riuscita |
12 | Bersaglio sfocato da un altro, a causa dell'affilatoio |
13 | Obiettivo rilevato ma dati incoerenti. Succede spesso per obiettivi secondari. |
255 | Nessun target rilevato (solo se è abilitato il numero di target rilevati) |
Per avere dati coerenti, l'utente deve filtrare lo stato di destinazione non valido. Per fornire una valutazione di affidabilità, un obiettivo con stato 5 è considerato valido al 100%. Uno stato di 6 o 9 può essere considerato con un valore di confidenza del 50 %. Tutti gli altri stati sono al di sotto del livello di confidenza del 50 %.
5.6 Errori del conducente
Quando si verifica un errore utilizzando il sensore VL53L8CX, il driver restituisce un errore specifico. La tabella seguente elenca i possibili errori.
Tabella 5. Elenco degli errori disponibili utilizzando il driver
Stato obiettivo | Descrizione |
0 | Nessun errore |
127 | L'utente ha programmato un'impostazione errata (risoluzione sconosciuta, frequenza di portata troppo alta, ...) |
255 | Errore grave. Di solito si tratta di un errore di timeout, dovuto a un errore I2C/SPI. |
altro | Combinazione di più errori sopra descritti |
Nota:
Più codici di errore possono essere implementati dall'host utilizzando la piattaforma files.
Tabella 6. Cronologia delle revisioni del documento
Data | Versione | Cambiamenti |
13-gen-23 | 1 | Versione iniziale |
AVVISO IMPORTANTE – LEGGERE ATTENTAMENTE
STMicroelectronics NV e le sue consociate ("ST") si riservano il diritto di apportare cambiamenti, correzioni, miglioramenti, modifiche e migliorie ai prodotti ST e/o al presente documento in qualsiasi momento senza preavviso. Gli acquirenti devono ottenere le ultime informazioni pertinenti sui prodotti ST prima di effettuare ordini. I prodotti ST sono venduti secondo i termini e le condizioni di vendita di ST in vigore al momento della conferma dell'ordine.
Gli acquirenti sono gli unici responsabili della scelta, della selezione e dell'uso dei prodotti ST e ST non si assume alcuna responsabilità per l'assistenza applicativa o la progettazione dei prodotti degli acquirenti.
Nel presente documento ST non concede alcuna licenza, espressa o implicita, su alcun diritto di proprietà intellettuale.
La rivendita di prodotti ST con disposizioni diverse dalle informazioni qui stabilite invaliderà qualsiasi garanzia concessa da ST per tale prodotto.
ST e il logo ST sono marchi di ST. Per ulteriori informazioni sui marchi ST, fare riferimento a www.st.com/trademarks. Tutti gli altri nomi di prodotti o servizi sono di proprietà dei rispettivi proprietari.
Le informazioni contenute nel presente documento annullano e sostituiscono le informazioni fornite in precedenza in qualsiasi versione precedente del documento.
© 2023 STMicroelectronics – Tutti i diritti riservati
Documenti / Risorse
![]() |
Modulo sensore ST VL53L8CX [pdf] Manuale d'uso UM3109, modulo sensore VL53L8CX, VL53L8CX, modulo sensore, modulo |