ST VL53L3CX Manual de utilizare pentru senzorul de măsurare a timpului de zbor

Introducere
VL53L3CX este un modul cu senzor de distanță de timp de zbor (ToF).
Scopul acestui manual de utilizare este acela de a descrie modelul de integrare și setul de funcții de apelat pentru a obține date de interval folosind driverul complet VL53L3CX.
Sistemul VL53L3CX s-a terminatview
Sistemul VL53L3CX este compus din modulul VL53L3CX și un driver care rulează pe gazdă.
Acest document descrie funcțiile driverului accesibile gazdei, pentru a controla dispozitivul și pentru a obține date de interval pentru integrarea cu gazde non-linux.

Figura 1. Sistemul VL53L3CX
Nota:
Prezentul document descrie funcțiile implementate și validate. Orice altă funcție disponibilă în drivere nu trebuie utilizată dacă nu este descrisă în acest document.
Driverul complet este o implementare a unui set de funcții necesare pentru a utiliza dispozitivul VL53L3CX. Face presupuneri minime privind integrarea sistemului de operare și serviciile. Ca atare, secvențierea acțiunilor, modelul de execuție/threading, adaptarea platformei și alocarea structurilor dispozitivelor nu fac parte din implementarea driverului simplu, ci sunt lăsate deschise integratorului.
Secvențierea apelurilor de șofer liber trebuie să urmeze un set de reguli, definite în acest document.
Descriere funcțională variată
Această secțiune descrie pe scurt capacitățile funcționale ale dispozitivului VL53L3CX.
Secvență de rang
Dispozitivul rulează cu un mecanism de strângere de mână, bazat pe o schemă standard de gestionare a întreruperilor.
După fiecare interval, gazda achiziționează datele de interval și permite următoarea distanță prin ștergerea întreruperii. Acest proces este denumit mecanism de strângere de mână. Următoarea distanță este declanșată dacă cea actuală este terminată și dacă gazda a șters întreruperea anterioară în așteptare.
Mecanismul de întrerupere permite transferul de date mai rapid, fără a pierde nicio valoare de interval din cauza problemelor de comunicare sau asincronism. În timpul fazei de strângere de mână, gazda efectuează unele procesări de date. Secvența de distanță este descrisă funcțional în figura de mai jos.

Secvența de strângere de mână permite calcularea parametrilor interni și aplicarea acestora pentru intervalul următor.
Strângerea de mână trebuie efectuată de utilizatorul șoferului gol. Întârzierea pentru a activa o nouă măsurare după primirea unei noi măsurători este cheia pentru rata generală de măsurare a sistemului.
Considerații de sincronizare
Sunt prezentate orare în figura 3. Secvență de distanță și obiective de sincronizare.
Gazda poate obține cel mai recent interval disponibil pe durata intervalului curent (buget de interval de timp).
Dacă gazda introduce o întârziere pentru ștergerea întreruperii, următorul interval va fi blocat până când întreruperea în așteptare este ștearsă.
Nota: Orare indicate în figura 3. Secvența de distanță și obiectivele de sincronizare sunt timpi tipici. Gazda poate modifica bugetul de sincronizare implicit folosind o funcție dedicată a driverului descrisă în Secțiunea 5.1 Bugetul de sincronizare. Gazda poate decide să schimbe bugetul de sincronizare fie pentru a se sincroniza în aplicație, fie pentru a crește precizia distanței.
În figura următoare, „Boot”, „SW standby” și „Init” durează 40 ms. Acest timp este necesar pentru a efectua o inițializare corectă a dispozitivului și este independent de platformă sau de bugetul de sincronizare utilizat. Primul interval, „Range1”, nu este valid, nefiind posibilă verificarea wrap-around. Aceasta înseamnă că prima valoare de interval validă este „Range2”, disponibilă după 40 ms plus de două ori durata bugetului de sincronizare.

Figura 3. Secvență de distanță și obiective de sincronizare
Descrierea funcțiilor de bază ale driverului complet
Această secțiune descrie fluxul de apeluri ale funcțiilor driverului care ar trebui urmat pentru a efectua o măsurătoare de distanță
folosind VL53L3CX.
Driverul VL53L3CX este utilizat în două clase de aplicații:
- Aplicații din fabrică utilizate pentru calibrarea dispozitivului, de obicei la testul de fabricație a produsului final (flux din fabrică)
- Aplicații de teren, care adună toate aplicațiile utilizatorului final folosind dispozitivul VL53L3CX (flux de variație)
Șofer gol
Fluxul din fabrică a șoferului gol este ilustrat în figura următoare.

Figura 4. Flux de interval API VL53L3CX (fabrică)
Nota: Fluxul de calibrare modifică modul de distanță. Este obligatoriu să apelați funcția SetDistanceMode() dacă doriți să utilizați senzorul imediat după o calibrare.
Fluxul de distanță al șoferului liber este ilustrat în figura următoare.

Figura 5. Flux de interval API VL53L3CX (câmp)
Inițializarea sistemului
Următoarea secțiune prezintă apelurile de funcții API necesare pentru a efectua inițializarea sistemului, înainte de a începe o măsurătoare.
Așteptați pornirea
Funcția VL53LX_WaitDeviceBooted() asigură că dispozitivul este pornit și gata. Nu este obligatoriu să apelați această funcție.
Nota: Această funcție blochează execuția gazdei. Această funcție nu ar trebui să se blocheze mai mult de 4 ms, presupunând:
- Frecvență I400C de 2 kHz
- Latență de 2 ms per tranzacție
Date init
Funcția VL53LX_DataInit() trebuie apelată de fiecare dată când dispozitivul iese din starea de „pornire inițială”. Efectuează inițializarea dispozitivului. După apelarea funcției VL53LX_DataInit(), datele de calibrare trebuie încărcate folosind funcția VL53LX_SetCalibrationData().
Gamă cu VL53L3CX
Pe gazdele non-Linux, utilizatorul secvențelor de drivere nu fac apel la driver într-un mod adecvat nevoilor aplicației, capacităților platformei și regulilor de secvență de apeluri ale driverului complet.
Începeți o măsurare
Funcția VL53LX_StartMeasurement() trebuie apelată pentru a începe o măsurătoare.
Așteptați un rezultat: sondaj sau întrerupere
Există 3 moduri de a ști că este disponibilă o măsurătoare. Gazda poate:
- apelați o funcție de sondare
- sondaj pentru o funcție de șofer
- așteptați o întrerupere fizică
Sondaj șofer pentru a obține starea rezultatului
Funcția VL53LX_WaitMeasurementDataReady() interoghează o stare internă până când o măsurătoare este gata.
Nota: Această funcție se blochează, deoarece se efectuează interogarea internă.
Sondaj gazdă pentru a obține starea rezultatului
Gazda poate interoga pe funcția VL53LX_GetMeasurementDataReady() pentru a ști când este gata o nouă măsurătoare. Această funcție nu blochează.
Utilizarea întreruperii fizice
O modalitate alternativă și preferată de a obține starea de distanță este utilizarea ieșirii de întrerupere fizică. În mod implicit, GPIO1 scade atunci când este gata o nouă măsurătoare.
Acest pin este doar un pin de ieșire, nu există niciun pin de întrerupere a intrării pe acest dispozitiv. Întreruperea trebuie să fie eliminată prin apelarea funcției driver VL53LX_ClearInterruptAndStartMeasurement().
Obțineți măsurare
Mai multe obiecte pot fi detectate pe distanță, iar datele de măsurare sunt raportate pentru fiecare obiect. view. Când apelați această funcție pentru a obține rezultate multiple ale dispozitivului, este returnată o structură numită VL53LX_MultiRangingData_t.
Opriți o măsurătoare
În modul continuu, gazda poate opri măsurarea apelând funcția VL53LX_StopMeasurement(). Dacă cererea de oprire are loc în timpul unei măsurători de interval, măsurarea este întreruptă imediat.
Variarea structurilor de date
Structura numită VL53LX_MultiRangingData_t conține următoarele date aplicabile tuturor țintelor detectate:
- Ora St.amp: neimplementat.
- Număr de fluxuri: acest număr întreg de 8 biți oferă un numărător incrementat la fiecare interval. Valoarea începe de la 0, crescând cu 1 cu 1 până la 255. Când ajunge la 255, pornește din nou de la 128 la 255.
- Numărul de obiecte găsite: Valoare întreagă de 8 biți care oferă numărul de obiecte găsite.
- Date interval [VL53LX_MAX_RANGE_RESULTS]: un tabel de structură de tip VL53LX_TargetRangeData_t. Numărul maxim de ținte este dat de VL53LX_MAX_RANGE_RESULTS și este implicit egal cu 4.
- Valoarea X talk s-a schimbat: Valoare întreagă de 8 biți care indică dacă valoarea de diafonie a fost modificată.
- Număr efectiv Spad Rtn: Număr întreg de 16 biți care returnează numărul efectiv de diode de avalanșă cu un singur foton (SPAD) pentru intervalul de curent. Pentru a obține valoarea reală, aceasta trebuie împărțită la 256.
O structură per țintă detectată (până la 4 în mod implicit) numită VL53LX_TargetRangeData_t care conține următoarele rezultate specifice pentru fiecare țintă detectată.
- RangeMaxMilliMeter: este un număr întreg de 16 biți, indicând distanța mai mare detectată.
- RangeMinMilliMeter: este un număr întreg de 16 biți, indicând distanța mai mică detectată.
- SignalRateRtnMegaCps: această valoare este rata semnalului de întoarcere în MegaCountPer Second (MCPS), aceasta este o valoare fixă de 16.16. Pentru a obține valoarea reală, aceasta trebuie împărțită la 65536.
- AmbientRateRtnMegaCps: această valoare este rata ambientală de retur (în MCPS), aceasta este o valoare de punct fix de 16.16, care este efectiv o măsură a cantității de lumină ambientală măsurată de senzor. Pentru a obține valoarea reală, aceasta trebuie împărțită la 65536.
- SigmaMilliMeter: această valoare a punctului fix de 16.16 este o estimare a abaterii standard a intervalului de curent, exprimată în milimetri. Pentru a obține valoarea reală, aceasta trebuie împărțită la 65536.
- RangeMilliMeter: este un număr întreg de 16 biți care indică distanța în milimetri.
- RangeStatus: acesta este un număr întreg de 8 biți care indică starea intervalului pentru măsurarea curentă. Valoarea = 0 înseamnă că intervalul este valid. Vezi Tabelul 1. Starea intervalului.
- Interval extins: acesta este un număr întreg de 8 biți care indică dacă intervalul a fost despachetat (numai pentru distanțe lungi)
Un anumit comportament este implementat atunci când ținta nu este detectată. Dacă ținta nu este detectată și măsurarea este validă, următoarele valori sunt raportate în structura VL53LX_TargetRangeData_t:
- RangeMaxMilliMeter: forțat la 8191.
- RangeMinMilliMeter: forțat la 8191.
- SignalRateRtnMegaCps: forțat la 0.
- AmbientRateRtnMegaCps: valoarea ratei ambientale este în mod normal calculată.
- SigmaMilliMeter: forțat la 0.
- RangeMilliMeter: forțat la 8191.
- RangeStatus: forțat la 255.
- ExtendedRange: forțat la 0.
Tabelul 1. Starea intervalului
| Valoare | RangeStatus șir | Comentariu |
| 0 | VL53LX_RANGESTATUS_RANGE_VALID | Măsurarea intervalului este validă |
| 1 | VL53LX_RANGESTATUS_SIGMA_FAIL | Ridicată dacă o verificare a estimatorului sigma este peste pragul intern definit. Estimatorul Sigma oferă o informație calitativă despre semnal. |
| 2 | VL53LX_RANGESTATUS_SIGNAL_FAIL | Este ridicată atunci când semnalul este prea scăzut pentru a detecta o țintă. |
| 4 | VL53LX_RANGESTATUS_OUTOFBOUNDS_FAIL | Ridicat când rezultatul intervalului este în afara limitelor |
| 5 | VL53LX_RANGESTATUS_HARDWARE_FAIL | Declanșat în cazul defecțiunii HW sau VCSEL |
| 6 | VL53LX_RANGESTATUS_RANGE_VALID_NO_WR AP_CHECK_FAIL | Nu a fost efectuată nicio verificare completă (acesta este primul interval) |
| 7 | VL53LX_RANGESTATUS_WRAP_TARGET_FAIL | S-a produs învârtirea |
| 8 | VL53LX_RANGESTATUS_PROCESSING_FAIL | Eroare internă de procesare |
| 10 | VL53LX_RANGESTATUS_SYNCRONISATION_INT | Ridicată o dată după init, valoarea de interval trebuie ignorată |
| 11 | VL53LX_RANGESTATUS_RANGE_VALID_MERGE D_PULSE | Distanța este OK, dar distanța raportată este rezultatul îmbinării mai multor ținte. |
| 12 | VL53LX_RANGESTATUS_TARGET_PRESENT_LA CK_OF_SIGNAL | Indicați că există o țintă, dar semnalul este prea scăzut pentru a raporta distanța |
| 14 | VL53LX_RANGESTATUS_RANGE_INVALID | Datele sunt negative și trebuie ignorate |
| 255 | VL53LX_RANGESTATUS_NONE | Ținta nu a fost detectată, fără avertisment sau eroare ridicată |
Prima măsurătoare nu include o verificare în întregime. Această măsurătoare poate fi eliminată.
Nota: Starea intervalului 1 este adesea cauzată de măsurători zgomotoase. Estimatorul Sigma este afectat de SNR-ul semnalelor tratate.
Nota: Starea intervalului 4 este ridicată atunci când apare o eroare la referința de măsurare. Acest lucru poate cauza valori aberante ca măsurători negative sau valori extrem de mari.
Descrierea funcțiilor suplimentare ale driverului
Bugetul de sincronizare
Bugetul de sincronizare este timpul alocat de utilizator pentru a efectua o măsurătoare în interval. VL53LX_SetMeasurementTimingBudgetMicroSeconds() este funcția care trebuie utilizată pentru a seta bugetul de sincronizare. Valoarea implicită a bugetului de sincronizare este de 33 ms. Minimul este de 8 ms, maxim este de 500 ms.
De example, pentru a seta bugetul de sincronizare la 66 ms: status = VL53LX_SetMeasurementTimingBudgetMicroSeconds(&VL53L3Dev, 66000 );
Funcția VL53LX_GetMeasurementTimingBudgetMicroSeconds() returnează bugetul de sincronizare programat.
Mod distanță
A fost adăugată o funcție pentru optimizarea setărilor interne în funcție de distanța de distanță solicitată de utilizator. Beneficiul schimbării modului de distanță este detaliat în tabelul următor.
Tabelul 2. Moduri de distanță
| Posibil mod de distanță | Beneficiu / comentarii |
| Scurt | Imunitate ambientală mai bună |
| Mediu (implicit) | Distanta maxima |
| Lung | Consum mai mic de energie |
Funcția de utilizat se numește VL53LX_SetDistanceMode().
Șoferul poate ajuta gazda să selecteze modul optim de distanță. O anumită valoare este returnată la fiecare interval pentru a indica cea mai bună alegere, în funcție de condițiile ambientale.
Valorile posibile sunt:
- VL53LX_DISTANCE_SHORT
- VL53LX_DISTANCE_MEDIUM
- VL53LX_DISTANCE_LONG
Parametrii de reglare
Parametrii de reglare permit găsirea celei mai bune potriviri între senzor și cazul de utilizare a gazdei. Pentru fiecare caz de utilizare, un set de parametri de reglare poate fi definit și încărcat în driver.
Majoritatea parametrilor de reglare sunt praguri reglabile, utilizate în algoritmul de tratare a semnalului. Modificarea acestor parametri permite algoritmului să facă compromisuri tehnice cu cazul specific de utilizare a clientului.
Setați un parametru de reglare
Există o funcție suplimentară pentru a încărca parametrii de reglare. Pentru cazuri specifice de utilizare, ST poate recomanda niște parametri specifici compuși dintr-o cheie și o valoare.
Lista parametrilor de reglare și valorile lor implicite este dată în vl53lx_tuning_parm_defaults.h file. Fie modificați o valoare a parametrului de reglare în aceasta file și recompilați codul sau utilizați funcția VL53LX_SetTuningParameter() pentru a încărca acest parametru de reglare.
Modificarea unui parametru de reglare poate modifica performanțele dispozitivului. ST recomandă utilizarea valorilor implicite pentru rezultate optime.
Îmbunătățiți precizia
Pentru a îmbunătăți acuratețea dispozitivului, utilizați parametrul de reglare numit VL53LX_TUNINGPARM_PHASECAL_PATCH_POWER. În mod implicit, acest parametru de reglare nu este aplicat (valoarea este setată la 0).
ST recomandă să setați valorile de calibrare și debitări la 2 după static_init. În acest caz, timpul pentru efectuarea măsurării semnalului de referință este mărit și permite o mai bună acuratețe. Setarea acestui parametru la 2 crește durata de obținere a primei măsurători cu 240 ms.
Îmbunătățiți latența și distanța maximă
Când ținta se mișcă, VL53L3CX poate avea nevoie de mai multe intervale pentru a reacționa, în funcție de scenă. O modalitate de a îmbunătăți latența este reglarea parametrului VL53LX_TUNINGPARM_RESET_MERGE_THRESHOLD. Valoarea implicită este 15000. Poate fi redusă pentru a îmbunătăți latența, dar distanța maximă va fi afectată.
Dacă utilizatorul crește valoarea, distanța maximă de distanță poate fi îmbunătățită, dar latența este afectată.
Detectarea petelor din sticlă de acoperire
Diafonia poate fi afectată de pete de pe capacul de sticlă. VL53L3CX încorporează o funcție capabilă să detecteze pete din mers și să aplice o nouă valoare de corecție a diafoniei. Utilizatorul poate activa/dezactiva această funcție apelând VL53LX_SmudgeCorrectionEnable().
Următoarele trei opțiuni pot fi setate cu această funcție:
- VL53LX_SMUDGE_CORRECTION_NONE pentru a dezactiva corecția
- VL53LX_SMUDGE_CORRECTION_CONTINUOUS pentru a activa o corecție continuă
- VL53LX_SMUDGE_CORRECTION_SINGLE pentru a activa o singură corecție după ce este primită o comandă de pornire.
Detectarea petelor rulează la fiecare interval. Dacă sunt îndeplinite anumite condiții (niciun obiect sub 80 cm, nivelul de lumină ambientală sub un prag și valoarea de diafonie peste 1 kcps), se calculează o nouă valoare de diafonie.
Dacă corectarea petelor este setată, valoarea de diafonie este corectată și este setat indicatorul HasXtalkValueChanged. Acest steag este șters automat la intervalul următor.
Notă: corectarea petelor este limitată la:
- 1.2 m folosind modul distanță scurtă
- 1.7 m folosind modul distanță medie
- 3.8 m folosind modul distanță lungă.
adresa I2C
Adresa implicită I2C a VL53L3CX este 0x52. Unele aplicații trebuie să seteze o adresă diferită a dispozitivului I2C. Acesta este cazul, de example, când mai multe părți VL53L3CX au aceeași magistrală I2C.
Clientul trebuie să aplice următoarea procedură:
- Montarea plăcii VL53L3CX trebuie proiectată cu atenție. Pinii Xshut și GPIO1 (întrerupere) trebuie controlați individual pentru fiecare VL53L3CX
- Gazda trebuie să pună în HW Standby, setând pinul Xshut la un nivel scăzut, toate VL53L3CX.
- Gazda ridică pinul Xshut al 1 din VL53L3CX
- Gazda apelează funcția VL53LX_SetDeviceAddress()
- Gazda repetă ultimele trei puncte, deoarece toate adresele VL53L3CX sunt setate corect.
De example, prin apelarea funcției: status = VL53LX_SetDeviceAddress(&VL53L3Dev, WantedAddress) valoarea WantedAddress este setată ca nouă adresă I2C.
Funcții de calibrare din fabrică ale clientului
Pentru a beneficia de performanța maximă a dispozitivului, driverul VL53L3CX include funcții de calibrare care trebuie rulate o singură dată la linia de producție a clientului.
Trebuie efectuate proceduri de calibrare pentru a compensa parametrii piese la piese care pot afecta performanțele dispozitivului. Datele de calibrare stocate în gazdă trebuie să fie încărcate în VL53L3CX la fiecare pornire, utilizând o funcție de driver dedicată. Sunt necesare trei calibrări: refSPAD, crosstalk și offset.
Ordinea funcțiilor de calibrare este numită după cum urmează:
- refSPAD
- diafonie
- offset
Cele trei funcții de calibrare pot fi efectuate în modul secvenţial sau individual. Când rulați individual, datele pasului anterior trebuie să fie încărcate înainte de a rula calibrarea.
Calibrare RefSPAD
Numărul de diode de avalanșă cu un singur foton (SPAD) este calibrat în timpul testului final al modulului la ST. Această valoare parte-la-parte este stocată în NVM și încărcată automat în dispozitiv în timpul pornirii.
Această calibrare permite ajustarea numărului de SPAD-uri pentru a optimiza dinamica dispozitivului.
Cu toate acestea, adăugarea unui capac deasupra modulului poate afecta această calibrare. ST recomandă clientului să efectueze din nou această calibrare în aplicarea produsului final. Același algoritm care rulează la FMT este aplicat atunci când această funcție este apelată: algoritmul caută prin trei locații: 1 (1x SPAD-uri atenuate), 2 (5 x SPAD-uri atenuate) și 3 (10 x SPAD-uri atenuate). Numărul de SPAD alese este făcut pentru a evita saturarea semnalului.
Funcția de calibrare RefSPAD
Următoarea funcție este disponibilă pentru calibrarea SPAD: VL53LX_PerformRefSpadManagement(VL53LX_DEV Dev)
Nota: Această funcție trebuie apelată mai întâi în procedura de calibrare.
Funcția poate emite următoarele trei mesaje de avertizare:
- VL53LX_WARNING_REF_SPAD_CHAR_NOT_ENOUGH_SPA S Mai puțin de 5 SPAD bun disponibil, ieșire nu este validă
- VL53LX_WARNING_REF_SPAD_CHAR_RATE_TOO_HIGH La sfârşitul ratei de referinţă a căutării > 40.0 Mcps Stabilitatea offsetului poate fi degradată.
- VL53LX_WARNING_REF_SPAD_CHAR_RATE_TOO_LOW La sfârșitul căutării, rata de referință < 10.0 Mcps. Stabilitatea offset poate fi degradată.
Procedura de calibrare RefSPAD
Nu trebuie respectate condiții speciale pentru această calibrare, cu excepția faptului că nicio țintă nu trebuie plasată deasupra dispozitivului.
Timpul pentru a efectua această calibrare este de doar câteva milisecunde.
Această funcție trebuie apelată după ce funcția VL53LX_DataInit() este apelată.
Obținerea rezultatelor calibrării refSPAD
Funcția VL53LX_GetCalibrationData() returnează toate datele de calibrare. Structura returnată VL53LX_CalibrationData_t conține o altă structură numită VL53LX_customer_nvm_managed_t, care conține cei opt parametri de calibrare refSPAD:
- ref_spad_man__num_requested_ref_spads: această valoare este între 5 și 44. Oferă numărul de SPAD-uri selectate
- ref_spad_man__ref_location: această valoare poate fi 1, 2 sau 3. Oferă locația SPAD-urilor în zona de referință.
- șase parametri suplimentari oferă hărțile spad corecte pentru locația selectată:
- global_config__spad_enables_ref_0
- global_config__spad_enables_ref_1
- global_config__spad_enables_ref_2
- global_config__spad_enables_ref_3
- global_config__spad_enables_ref_4
- global_config__spad_enables_ref_5
Setarea datelor de calibrare refSPAD
La fiecare pornire, după o pornire inițială, aplicația de teren client poate încărca datele de calibrare refSPAD după ce funcția VL53LX_DataInit() este apelată, folosind VL53LX_SetCalibrationData().
Se recomandă obținerea întregii structuri de calibrare apelând VL53LX_GetCalibrationData(). Modificați cei opt parametri descriși în Secțiunea 6.1.3 Obținerea rezultatelor calibrării refSPAD și apelați VL53LX_SetCalibrationData().
Calibrare crosstalk
Diafonia (XTalk) este definită ca cantitatea de semnal primită pe matricea de retur care se datorează reflectării luminii VCSEL în interiorul ferestrei de protecție (sticlă de acoperire) adăugată deasupra modulului din motive estetice.
In functie de calitatea sticlei de acoperire, acest semnal parazit poate afecta performantele dispozitivului. VL53L3CX are o corecție încorporată care compensează această problemă.
Calibrarea de diafonie este utilizată pentru a estima cantitatea de corecție necesară pentru a compensa efectul unui capac de sticlă adăugat deasupra modulului.
Ieșirea calibrării de diafonie conține mulți parametri care definesc modelul de diafonie, așa cum este descris în Secțiunea 6.2.3 Obținerea rezultatelor calibrării de diafonie.
Funcția de calibrare a diafoniei
Următoarea funcție dedicată este disponibilă pentru calibrarea diafoniei: VL53LX_PerformXTalkCalibration(&VL53L3Dev);
Nota: Această funcție trebuie apelată în a doua poziție în procedura de calibrare, după efectuarea calibrării refSPAD și înainte de calibrarea offset.
Procedura de calibrare a diafoniei
Pentru a efectua calibrarea de diafonie, o țintă trebuie plasată la o distanță de 600 mm de dispozitiv. Calibrarea de diafonie trebuie efectuată într-un mediu întunecat, fără contribuție IR. După ce funcțiile VL53LX_DataInit() și VL53LX_PerformRefSpadManagement() sunt apelate, trebuie apelată funcția de calibrare dedicată, folosind: VL53LX_PerformXTalkCalibration(&VL53L3Dev). Când aceste funcții sunt apelate, se efectuează calibrarea diafoniei și corecția de diafonie este aplicată implicit.
Obținerea rezultatelor calibrării diafoniei
Rezultatele calibrării constau, printre altele, dintr-o histogramă și un parametru numit „plane offset”. Offset-ul plan reprezintă cantitatea de corecție aplicată, iar histograma este repartiția corecției pe fiecare bin. Funcția VL53LX_GetCalibrationData() returnează toate datele de calibrare. Structura returnată VL53LX_CalibrationData_t conține alte structuri. Decalajul plan este conținut în VL53LX_customer_nvm_managed_t: algo_crosstalk_compensation_plane_offset_kcps este o valoare codificată de punct fix 7.9. Trebuie împărțit la 512 pentru a obține numărul real.
Sunt returnate alte două structuri relevante: VL53LX_xtalk_histogram_data_t și algo__xtalk_cpo_HistoMerge_kcps. Este obligatoriu să le păstrați.
Setarea datelor de calibrare a diafoniei
Odată ce funcția VL53LX_DataInit() este apelată, clientul poate încărca datele de calibrare a diafoniei folosind: VL53LX_SetCalibrationData()
Este mai bine să apelați VL53LX_GetCalibrationData(), să modificați parametrii descriși în secțiunea anterioară, inclusiv structura xtalk_histogram și să apelați VL53LX_SetCalibrationData()
Activați/dezactivați compensarea diafoniei
Funcția VL53LX_SetXTalkCompensationEnable() activează sau dezactivează compensarea diafoniei.
Nota: Compensarea diafoniei este dezactivată în mod implicit. Pentru a activa compensarea diafoniei, apelați V53LX_SetXTalkCompensationEnable&VL53L3Dev, 1);
Pentru a dezactiva compensarea diafoniei, apelați VL53LX_SetXTalkCompensationEnable&VL53L3Dev, 0);
Nota: Această funcție nu efectuează nicio calibrare sau încărcare de date încrucișate, ea activează doar compensarea.
Nota: Calibrarea sau încărcarea funcției de date de calibrare trebuie apelată separat de această funcție de activare/dezactivare (vezi secțiunile de mai sus).
Calibrare offset
Lipirea dispozitivului pe placa clientului sau adăugarea unui capac de sticlă poate introduce un decalaj în distanța. Acest decalaj parte-la-parte trebuie măsurat în timpul calibrării offset-ului. Calibrarea offset permite, de asemenea, calibrarea valorii dmax, folosind aceleași condiții de calibrare ca și calibrarea offset.
Funcții de calibrare offset
Următoarele două funcții sunt disponibile pentru calibrarea offsetului:
- VL53LX_PerformOffsetSimpleCalibration(Dev, CalDistanceMilliMeter)
- VL53LX_PerformOffsetPerVCSELCalibration(Dev, CalDistanceMilliMeter)
Argumentul funcțiilor este distanța țintă în milimetri. Calibrarea offset-ului trebuie efectuată după corectarea diafoniei.
VL53LX_PerformOffsetPerVCSELCalibrarea este cea mai precisă funcție, dar durează mai mult pentru a efectua calibrarea (timp înmulțit cu 3).
Procedura de calibrare offset
Clienții pot selecta orice reflectanță grafică plasată la orice distanță (folosind aceeași configurație ca și calibrarea diafoniei). Singurul punct de verificat este să vă asigurați că rata semnalului este măsurată între 2 și 80 MCps cu configurația aleasă.
Tabelul 3. Configurarea calibrării offsetului
| Diagramă | Distanţă | Condiții de mediu | Rata semnalului |
| Orice | Orice | Întunecat (fără contribuție IR) | 2MCps <Rata semnalului <80Mcps |
Două mesaje de avertizare sunt returnate de aceste funcții:
- VL53LX_WARNING_OFFSET_CAL_INSUFFICIENT_MM1_SP DS Semnalul este prea scăzut, precizia calibrării offset-ului poate fi degradată.
- VL53LX_WARNING_OFFSET_CAL_PRE_RANGE_RATE_TOO_H Semnalul GH este prea mare. Precizia calibrării offsetului poate fi degradată.
Obținerea rezultatelor calibrării offset
Funcția VL53LX_GetCalibrationData() returnează toate datele de calibrare. Structura returnată VL53LX_CalibrationData_t conține o altă structură numită VL53LX_customer_nvm_managed_t care conține cele trei rezultate ale calibrării offset:
- algo__part_to_part_range_offset_mm
- mm_config__inner_offset_mm
- mm_config__offset_exterior_mm
Offset-ul general aplicat dispozitivului este media ultimelor două valori. Dacă este selectată o calibrare perVCSELC, rezultatul funcției include următoarele date:
- short_a_offset_mm
- short_b_offset_mm
- mediu_a_offset_mm
- mediu_b_offset_mm
- long_a_offset_mm
- lung_bb_offset_mm
În funcție de modul de distanță (perioada VCSEL) ales, una dintre aceste compensații se aplică automat.
Selectarea modului de corectare a offsetului
Modul de corectare a offsetului poate fi setat cu două opțiuni, folosind funcția VL53LX_SetOffsetCorrectionMode.
Nota: VL53LX_OFFSETCORRECTIONMODE_PERVCSEL ar trebui utilizat în mod implicit. Permite creșterea preciziei offset-ului pe perioadă VCSEL.
Tabelul 4. Opțiuni de corectare a offset
| Apelată funcția de calibrare offset | Opțiunea modului de corecție care trebuie utilizată |
| EfectuațiSimpleOffsetCalibration | VL53LX_OFFSETCORRECTIONMODE_STANDARD |
| PerformPerVCSELOffsetCalibration | VL53LX_OFFSETCORRECTIONMODE_PERVCSEL |
Nota: Dacă este disponibil un singur tip de calibrare a decalajului, este obligatoriu să setați modul de corecție a decalajului la opțiunea corespunzătoare. Acest lucru nu se face automat.
Setarea datelor de calibrare offset
Clientul poate încărca datele de calibrare offset după ce funcția VL53LX_DataInit() este apelată, utilizând VL53LX_SetCalibrationData().
Este mai bine să apelați VL53LX_GetCalibrationData(), să modificați parametrii descriși în secțiunile anterioare și să apelați VL53LX_SetCalibrationData()
Calibrări ale atelierului de reparații ale clienților
În cazul în care valorile de calibrare sunt pierdute, din cauza schimbării componentelor într-un atelier de reparații, clientul poate aplica o procedură dedicată, în care nu sunt necesare setări specifice (ținte).
Calibrarea este compusă din trei etape:
- RefSpad
- Crosstalk
- Calibrări offset
RefSpad și Xtalk sunt aceleași ca cele descrise în Secțiunea 6.1 Calibrare RefSPAD și Secțiunea 6.2 Calibrare Crosstalk.
O funcție dedicată este disponibilă pentru a efectua calibrarea offsetului: VL53LX_PerformOffsetZeroDistanceCalibration.
O țintă trebuie stabilită în fața dispozitivului, atingând capacul de sticlă. Ținta poate fi o simplă foaie de hârtie (fără nevoie specială de reflectanța hârtiei).
Funcția de mai sus trebuie apelată și rezultatele pot fi preluate în mod similar cu procesul descris în secțiunile anterioare.
Erori și avertismente simple ale șoferului
O eroare de driver este raportată când este apelată orice funcție de driver. Valorile posibile pentru erorile driverului sunt descrise în tabelul următor. Avertismentele sunt acolo pentru a informa utilizatorul că anumiți parametri nu sunt optimizați. Avertismentele nu sunt blocante pentru gazdă.
Tabelul 5. Descrierea erorilor și a avertismentelor de driver complet
| Valoarea erorii | Șir de eroare API | Apariția |
| 0 | VL53LX_ERROR_NONE | Nicio eroare |
| -1 | VL53LX_ERROR_CALIBRATION_WARNING | Date de calibrare nevalide |
| -4 | VL53LX_ERROR_INVALID_PARAMS | Un parametru nevalid este setat într-o funcție |
| -5 | VL53LX_ERROR_NOT_SUPPORTED | Parametrul solicitat nu este acceptat în configurația programată |
| -6 | VL53LX_ERROR_RANGE_ERROR | Starea întreruperii este incorectă |
| -7 | VL53LX_ERROR_TIME_OUT | Intervalul este întrerupt din cauza timeout-ului |
| -8 | VL53LX_ERROR_MODE_NOT_SUPPORTED | Modul solicitat nu este acceptat |
| -10 | VL53LX_ERROR_COMMS_BUFFER_TOO_SMALL | Buffer-ul furnizat este mai mare decât suportul I2C |
| -13 | VL53LX_ERROR_CONTROL_INTERFACE | Eroare raportată de la funcția IO |
| -14 | VL53LX_ERROR_INVALID_COMMAND | Comanda este nevalidă |
| -16 | VL53LX_ERROR_REF_SPAD_INIT | A apărut o eroare în timpul calibrării SPAD de referință |
| -17 | VL53LX_ERROR_GPH_SYNC_CHECK_FAIL | Driverul desincronizat cu dispozitivul. Poate fi necesară o oprire/pornire sau o repornire |
| -18 | VL53LX_ERROR_STREAM_COUNT_CHECK_FAIL | |
| -19 | VL53LX_ERROR_GPH_ID_CHECK_FAIL | |
| -20 | VL53LX_ERROR_ZONE_STREAM_COUNT_CHEC K_FAIL | |
| -21 | VL53LX_ERROR_ZONE_GPH_ID_CHECK_FAIL | |
| -22 | VL53LX_ERROR_XTALK_EXTRACTION_FAIL | Fără succesample atunci când utilizați matricea completă la sample diafonia. În acest caz, nu există suficiente informații pentru a genera o nouă valoare de diafonie. Funcția va ieși și va lăsa parametrii actuali de diafonie nemodificați |
| -23 | VL53LX_ERROR_XTALK_EXTRACTION_SIGMA_L IMIT_FAIL | Estimarea medie sigma a diafoniei sample este > decat limita maxima admisa. În acest caz, diafonia sample este prea zgomotos pentru măsurare. Funcția va ieși și va lăsa parametrii actuali de diafonie nemodificați |
| -24 | VL53LX_ERROR_OFFSET_CAL_NO_SAMPLE_FA IL | A apărut o eroare în timpul calibrării offsetului. Verificați configurarea este în conformitate cu recomandările ST. |
| -25 | VL53LX_ERROR_OFFSET_CAL_NO_SPADS_ENA BLED_FAIL | |
| -28 | VL53LX_WARNING_REF_SPAD_CHAR_NOT_EN OUGH_SPADS | Avertisment: numărul de spad-uri găsite este prea mic pentru a obține calibrarea corectă a refSpadManagement. Asigurați-vă că configurarea este în conformitate cu recomandările ST. |
| -29 | VL53LX_WARNING_REF_SPAD_CHAR_RATE_TO O_HIGH | Avertisment: rata semnalului a fost găsită prea mică pentru a obține calibrarea corectă a refSpadManagement. Asigurați-vă că configurarea este în conformitate cu recomandările ST. |
| -30 | VL53LX_WARNING_REF_SPAD_CHAR_RATE_TO O_LOW | Avertisment: numărul de spads găsit prea mic pentru a obține o calibrare precisă a offset-ului. Asigurați-vă că configurarea este în conformitate cu recomandările ST. |
| -31 | VL53LX_WARNING_OFFSET_CAL_MISSING_SA MPLES | Avertisment a apărut în timpul calibrării offset. Asigurați-vă că configurarea este în conformitate cu recomandările ST. |
| -32 | VL53LX_WARNING_OFFSET_CAL_SIGMA_TOO_ HIGH | |
| -33 | VL53LX_WARNING_OFFSET_CAL_RATE_TOO_HI GH | |
| -34 | VL53LX_WARNING_OFFSET_CAL_SPAD_COUNT_TOO_LOW | |
| -38 | VL53LX_WARNING_XTALK_MISSING_SAMPLES | Avertisment a apărut în timpul calibrării diafoniei. Asigurați-vă că configurarea este în conformitate cu recomandările ST. |
| -41 | VL53LX_ERROR_NOT_IMPLEMENTED | Funcția apelată nu este implementată |
Istoricul reviziilor
| Data | Versiune | Schimbări |
| 28-sept-2020 | 1 | Lansare inițială |
| 02-dec-2021 | 2 | S-au actualizat structurile returnate în Secțiunea 6.2.3 Obținerea rezultatelor calibrării diafoniei |
| 03-Iun-2022 | 3 | Secțiunea 3.1 Driver complet: s-a adăugat o notă privind calibrareaSecțiunea 5.4 Detectarea petelor din sticlă de acoperire: s-a adăugat o notă privind corectarea petelor |
NOTIFICARE IMPORTANT – CITIȚI CU ATENTIE
STMicroelectronics NV și filialele sale („ST”) își rezervă dreptul de a face modificări, corecții, îmbunătățiri, modificări și îmbunătățiri produselor ST și/sau acestui document în orice moment, fără notificare. Cumpărătorii trebuie să obțină cele mai recente informații relevante despre produsele ST înainte de a plasa comenzi. Produsele ST sunt vândute în conformitate cu termenii și condițiile de vânzare ale ST în vigoare la momentul confirmării comenzii.
Cumpărătorii sunt singurii responsabili pentru alegerea, selecția și utilizarea produselor ST, iar ST nu își asumă nicio responsabilitate pentru asistența la aplicare sau proiectarea produselor cumpărătorilor.
Nicio licență, expresă sau implicită, pentru niciun drept de proprietate intelectuală nu este acordată de către ST prin prezenta.
Revânzarea produselor ST cu prevederi diferite de informațiile prezentate aici va anula orice garanție acordată de ST pentru un astfel de produs. ST și sigla ST sunt mărci comerciale ale ST. Pentru informații suplimentare despre mărcile comerciale ST, consultați www.st.com/trademarks. Toate celelalte nume de produse sau servicii sunt proprietatea proprietarilor respectivi.
Informațiile din acest document înlocuiesc și înlocuiesc informațiile furnizate anterior în orice versiuni anterioare ale acestui document. © 2022 STMicroelectronics – Toate drepturile rezervate
Documente/Resurse
![]() |
ST VL53L3CX Senzor de măsurare a timpului zborului [pdfManual de utilizare VL53L3CX Senzor de măsurare a timpului de zbor, VL53L3CX, Senzor de măsurare a timpului de zbor, Senzor de distanță a zborului, Senzor de distanță |




