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

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.
Sistem terminatview
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ță de rang

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.
Considerații 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.
Șofer gol
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.
Fluxul de variație API

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:

  1. apelați o funcție de sondare
  2. sondaj pentru o funcție de șofer
  3. 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ă:

  1. refSPAD
  2. diafonie
  3. 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:

  1. RefSpad
  2. Crosstalk
  3. 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ță

Referințe

Lasă un comentariu

Adresa ta de e-mail nu va fi publicată. Câmpurile obligatorii sunt marcate *