0,00 €

V košarici ni izdelkov.

0,00 €

V košarici ni izdelkov.

More
    DomovRevijaPredstavljamoHiter razvoj tridimenzionalnih optičnih zasnov za zaznavanje s časom preleta

    Hiter razvoj tridimenzionalnih optičnih zasnov za zaznavanje s časom preleta

    Optično merjenje razdalje s časom preleta (ang. time-of-flight, ToF) ima ključno vlogo na različnih področjih uporabe, od industrijskega zaznavanja do uporabniških vmesnikov na osnovi kretenj. Z natančnimi in hitrimi ToF senzorji z več slikovnimi pikami lahko razvijalci uvedejo bolj prefinjene tridimenzionalne (3D) algoritme za zaznavanje na teh področjih uporabe. Vendar pa je razvoj počasnejši zaradi zapletenosti optičnega podsistema za zaznavanje z več slikovnimi pikami.

    Digi-Key Electronics
    Avtor: Rolf Horn
    2022-308-20

    Ta članek obravnava osnovna načela ToF tehnologije. V nadaljevanju je predstavljen optični ToF razvojni komplet proizvajalca Broadcom, ki razvijalcem omogoča hitro izdelavo prototipov natančnih eno- in tridimenzionalnih aplikacij za merjenje razdalje ter hitro uvajanje prilagojenih optičnih rešitev zaznavanja s časom preleta.

    Osnove optične ToF tehnologije
    Optična ToF tehnologija omogoča meritve na osnovi časa, ki ga potrebuje svetloba za potovanje po zraku, in se uporablja za pridobivanje točne razdalje, ki je potrebna pri različnih uporabah. Izračuni, ki se uporabljajo za te meritve, na splošno temeljijo na dveh različnih pristopih – neposrednem in posrednem ToF. Pri neposrednem ToF, ki ga imenujemo tudi impulzno merjenje razdalje, naprava meri čas med oddajo in sprejemom določenega svetlobnega impulza s ToF senzorjem z uporabo enačbe 1:

    Enačba 1
    Kjer: c0 = hitrost svetlobe v vakuumu
    ∆T = pretečeni čas med oddajo in sprejemom

    Čeprav je koncept preprost, se zmožnost izvajanja natančnih meritev s tem pristopom sooča s številnimi izzivi, vključno s potrebo po dovolj zmogljivih oddajnikih in sprejemnikih, izboljšanjem razmerja med signalom in šumom ter natančnim zaznavanjem mej impulzov.

    Nasprotno pa metode s posrednim ToF uporabljajo modulirani neprekinjeni val in merijo fazno razliko med oddanimi in sprejetimi signali v skladu z enačbo 2:

    Enačba 2
    Kjer: c0 = hitrost svetlobe v vakuumu
    fmod = frekvenca modulacije laserja
    ∆ϕ= določena fazna razlika

    Poleg zmanjšanja zahtev glede moči oddajnika in sprejemnika se pri pristopu z neposrednim ToF zmanjšajo tudi zahteve glede oblikovanja impulzov, kar poenostavi zahtevnost zasnove za izvajanje tridimenzionalnega merjenja razdalje in zaznavanja gibanja.

    Tako neposredna kot posredna metoda zahtevata premišljeno zasnovo optičnega čelnega dela in natančen nadzor signalov oddajnika in sprejemnika. Razvijalci že več let izkoriščajo prednosti vdelanih optičnih ToF senzorjev, ki združujejo naprave za oddajanje in senzorje za sprejemanje v enem ohišju. Kljub temu so prejšnje generacije teh naprav od razvijalcev običajno zahtevale kompromise pri nekaterih kombinacijah zmogljivosti ali značilnosti delovanja, kot so poraba energije, domet, natančnost in hitrost. Takšni kompromisi so postali glavna ovira za vse več aplikacij za industrijsko zaznavanje, ki morajo delovati na srednjih razdaljah do 10 metrov (m).

    Naprednejši moduli senzorja s posrednim ToF, kot je AFBR-S50MV85G proizvajalca Broadcom, so posebej zasnovani za vedno večjo potrebo po hitrih in natančnih rezultatih pri srednjih razdaljah, hkrati pa ohranjajo najmanjšo velikost ohišja in porabo energije. Na osnovi tega senzorja razvojni komplet AFBR-S50MV85G-EK proizvajalca Broadcom in povezani komplet za razvoj programske opreme (SDK) zagotavljata razvojno platformo za ToF senzor z več slikovnimi pikami, ki omogoča razvijalcem hitro uvedbo aplikacij za tridimenzionalno zaznavanje s časom preleta.

    Kako ugnezdeni modul poenostavi merjenje razdalje s časom preleta
    AFBR-S50MV85G modul je bil razvit za aplikacije industrijskega zaznavanja in zagotavlja celovito optično rešitev zaznavanja s časom preleta v enem ohišju. Njegove ugnezdene komponente vključujejo 850-nanometrski (nm) laser s površinskim oddajanjem in vertikalno votlino (VCSEL) za infrardečo (IR) osvetlitev, šestkotno matriko senzorja z 32 slikovnimi pikami, vgrajene leče za VCSEL in optiko senzorja ter integrirano vezje za določen namen (ASIC).

    Oddajnik, ki je fiksno poravnan glede na matriko za zaznavanje, osvetli ciljni predmet, zaradi česar določeno število slikovnih pik v matriki za zaznavanje zazna odbiti IR-signal. Pri osnovnem delovanju to modulu omogoča natančno merjenje razdalje z belih, črnih, barvnih, kovinskih ali odsevnih površin (tudi pri neposredni sončni svetlobi), saj ima vgrajene funkcije za blokiranje okoliške svetlobe.

    Ko se oddaljenost do predmeta zmanjšuje, samodejna kompenzacija napak zaradi paralakse omogoča meritve praktično brez spodnje meje oddaljenosti. Hkrati pa kombinacija infrardeče osvetlitve in matrike za zaznavanje omogoča dostop do dodatnih informacij o predmetu, vključno z njegovim gibanjem, hitrostjo, kotom nagiba in bočno poravnavo. Posledično lahko modul zagotovi podatke, ki so potrebni za določanje smeri in hitrosti ciljnega predmeta, ki potuje mimo ali se približuje (slika 1).

    ASIC vezje, vgrajeno v modul, omogoča natančno delovanje VCSEL laserja in matrike za zaznavanje ter zagotavlja vsa vezja, ki so potrebna za krmiljenje VCSEL laserja, zajem analognega signala iz matrike za zaznavanje in obdelavo digitalnega signala (slika 2).

    Napajalno vezje, vgrajeno v ASIC vezje omogoča, da modul deluje z enim 5-voltnim napajanjem, vgrajeni tovarniško umerjeni in temperaturno kompenzirani RC oscilator (upor-kondenzator) ter digitalna fazno sklenjena zanka (PLL) pa zagotavljata vse potrebne signale takta. Zato razvijalci zlahka vključijo modul v svoje zasnove z uporabo mikrokontrolerske enote (MCU) in nekaj dodatnih zunanjih komponent. Vmesnik z mikrokontrolersko enoto potrebuje samo priključek splošnonamenskega vhoda/izhoda (ang. general purpose input/output, GPIO) za signal pripravljenosti podatkov iz modula ter povezavo prek digitalnega serijskega perifernega vmesnika (SPI) modula (slika 3).

    Poleg te preproste zasnove strojne opreme je v programski opremi ToF gonilnika proizvajalca Broadcom na voljo tudi povezana funkcija programske opreme, ki je potrebna za izvajanje merjenja razdalje. Medtem ko modul zbira optične podatke za aplikacije za merjenje razdalje, programska oprema ToF gonilnika proizvajalca Broadcom, ki je vključena v komplet za razvoj programske opreme AFBR-S50, ki ga zagotovi podjetje, izvede vse postopke konfiguracije strojne opreme, umerjanja in meritev. Med merjenjem programska oprema gonilnika izvleče vrednosti razdalje in amplitude slikovnih pik.

    Kako hitro razviti aplikacijo za merjenje razdalje
    AFBR-S50MV85G-EK razvojni komplet proizvajalca Broadcom skupaj z AFBR-S50 kompletom za razvoj programske opreme zagotavlja celovito platformo za hitro izdelavo prototipov in razvoj aplikacij za merjenje razdalje. Kompletu je priložena plošča vmesnika, ki vsebuje AFBR-S50MV85G modul, razvojno ploščo FRDM-KL46Z proizvajalca NXP, ki temelji na mikrokontrolerski enoti ARM Cortex-M0+, in mini-USB kabel za povezovanje sklopa razvojne plošče s prenosnikom ali drugim ugnezdenim sistemom (slika 4).

    Za začetek merjenja razdalje s časom preleta je pri razvojnem kompletu potrebnih le nekaj korakov. Ko razvijalec prenese AFBR-S50 SDK komplet za razvoj programske opreme, ga čarovnik za namestitev vodi skozi postopek hitre namestitve. Ko razvijalec zažene AFBR-S50 Explorer programsko opremo ponudnika Broadcom, ki je vključena v komplet za razvoj programske opreme, se ta prek USB vmesnika poveže z AFBR-S50 razvojno ploščo, prejme podatke meritve prek programske opreme gonilnika, ki deluje v mikrokontrolerski enoti NXP plošče, in uporabniku omogoči prikaz rezultatov v 1D- ali 3D-diagramu (slika 5).

    Kot je prikazano na sliki 5, 3D-diagram prikazuje odčitke iz vsake slikovne pike, toda programska oprema ponuja dodaten pogled, v katerem razvijalci vidijo samo slikovne pike, ki se upoštevajo za meritev. V tem dodatnem pogledu so slikovne pike, ki ne izpolnjujejo določenih meril, odstranjene iz diagrama (slika 6).

    Razvijalci si lahko ogledajo vpliv različnih konfiguracij zaznavanja, na primer uporabo več slikovnih pik za izboljšane 3D-aplikacije ali manj slikovnih pik za 1D-aplikacije, ki zahtevajo natančnejše merjenje, ter tako raziščejo natančnost in zmogljivost meritev v različnih primerih uporabe, kot so osvetlitev, odbojnost in vrsta površine. Po ovrednotenju merilnih metod v svojih prototipih lahko razvijalci razvijajo s pomočjo vzorčne programske opreme, ki je vključena v AFBR-S50 komplet za razvoj programske opreme ponudnika Broadcom, in tako hitro uvedejo prilagojene aplikacije za zaznavanje s časom preleta.

    Razvijanje prilagojenih aplikacij za zaznavanje s časom preleta
    Broadcom razvija podporo za aplikacije za zaznavanje s časom preleta s pomočjo učinkovite arhitekture, ki temelji na AFBR-S50 osnovni knjižnici, sestavljeni iz kode za strojno opremo senzorja, programskega vmesnika (API) in abstrakcijskih ravni strojne opreme (HAL) (slika 7).

    Broadcom kot del kompleta za razvoj AFBR-S50 programske opreme ponuja osnovno knjižnico kot vnaprej sestavljeno datoteko ANSI-C knjižnice, v katero so vdelani vsi podatki in algoritmi, potrebni za zagon strojne opreme AFBR-S50MV85G. Osnovna knjižnica se izvaja v mikrokontrolerski enoti sistema za merjenje razdalje in zagotavlja funkcije umerjanja, merjenja in vrednotenja za izvajanje merjenja razdalje z minimalno obremenitvijo obdelave in porabo energije. Ker funkcije osnovne knjižnice obravnavajo vse temeljne podatke, je osnovni cikel merjenja, ki ga vidi razvijalec, enostaven (slika 8).

    Na začetku vsakega cikla merjenja (ki ga sproži periodična prekinitev časovnika ali zahteva za prekinitev (IRQ)) mikrokontrolerska enota sproži merjenje in se takoj vrne v stanje nedejavnosti (ali nadaljuje obdelavo kode programa). Po končanem merjenju AFBR-S50MV85G modul uporabi povezano GPIO linijo za signalizacijo prekinitve, s čimer prebudi mikrokontrolersko enoto, da začne branje podatkov na vodilu SPI, preden se vrne v prejšnje stanje. Ko je branje podatkov končano (kar signalizira IRQ za SPI), mikrokontrolerska enota izvede kodo za vrednotenje pridobljenih podatkov ToF senzorja.

    Osnovna knjižnica prepreči začetek novega merilnega cikla tako, da blokira podatkovni medpomnilnik, dokler se ne pokliče rutina vrednotenja, s čimer prepreči izgubo merilnih podatkov. Zato razvijalci običajno vključijo dvojni medpomnilnik za neobdelane podatke, s čimer omogočijo prepleteno izvajanje opravil merjenja in vrednotenja.

    Razvijalcem programske opreme so na voljo rutine osnovne knjižnice, ki ščitijo podatke umerjanja, merjenja in vrednotenja. Pravzaprav lahko razvijalci uporabijo razvojni komplet in AFBR-S50 Explorer aplikacijo kot celovito platformo za izdelavo prototipov za posredovanje merilnih podatkov v kodo programa na visoki ravni.

    Razvijalcem, ki morajo uvesti programsko opremo po meri, je na voljo AFBR-S50 komplet za razvoj programske opreme, ki združuje vnaprej sestavljene module osnovne knjižnice z več primeri programske opreme. Tako lahko razvijalci hitro ustvarijo svoje aplikacije za zaznavanje s časom preleta, saj lahko razvijajo na osnovi vzorčnih aplikacij, ki so na voljo v kompletu za razvoj programske opreme. Razvijalci lahko do AFBR-S50MV85G strojne opreme in funkcij AFBR-S50 osnovne knjižnice dostopajo v kodi programa za svojo aplikacijo tako, da pokličejo funkcije v API-ju AFBR-S50 kompleta za razvoj programske opreme in določijo svoje funkcije za različne povratne klice, ki jih podpira osnovna knjižnica (znova glejte sliko 7).

    Broadcom ponuja obširno dokumentacijo o API-ju in vzorčni programski opremi, kar omogoča razvijalcem, da hitro prilagodijo primere programske opreme svojim potrebam ali začnejo od začetka. Osnovni cikel merjenja in vrednotenja je pravzaprav preprost, saj enostavno uskladi funkcije in klice API-ja po meri s ciklom merjenja (znova glejte sliko 8). Cikel merjenja, ki je obravnavan zgoraj, vključuje tri faze: povezovanje ToF naprave, branje podatkov in vrednotenje. API klici osnovne knjižnice, ki so potrebni za inicializacijo teh treh faz, vključujejo:

    • Argus_TriggerMeasurement(), ki asinhrono sproži en okvir merjenja;
    • Argus_GetStatus(), ki vrne vrednost STATUS_OK pri uspešno zaključenem merjenju;
    • Argus_EvaluateData(), ki ovrednoti uporabne
    • informacije iz neobdelanih merilnih
    • podatkov.

    Broadcom prikaže to osnovno merilno zanko v vzorčni aplikaciji, ki je vključena v distribucijo kompleta za razvoj programske opreme, kot je prikazano na seznamu 1.

    int main(void)
    {
    status_t status = STATUS_OK;
    
    /* Initialize the platform hardware including the required peripherals
    * for the API. */
    hardware_init();
    
    /* The API module handle that contains all data definitions that is
    * required within the API module for the corresponding hardware device.
    * Every call to an API function requires the passing of a pointer to this
    * data structure. */
    argus_hnd_t * hnd = Argus_CreateHandle();
    handle_error(hnd ? STATUS_OK : ERROR_FAIL, »Argus_CreateHandle failed!«);
    
    /* Initialize the API with default values.
    * This implicitly calls the initialization functions
    * of the underlying API modules.
    *
    * The second parameter is stored and passed to all function calls
    * to the S2PI module. This piece of information can be utilized in
    * order to determine the addressed SPI slave and enabled the usage
    * of multiple devices on a single SPI peripheral. */
    
    status = Argus_Init(hnd, SPI_SLAVE);
    handle_error(status, »Argus_Init failed!«);
    
    /* Print some information about current API and connected device. */
    uint32_t value = Argus_GetAPIVersion();
    uint8_t a = (value >> 24) & 0xFFU;
    uint8_t b = (value >> 16) & 0xFFU;
    uint8_t c = value & 0xFFFFU;
    uint32_t id = Argus_GetChipID(hnd);
    argus_module_version_t mv = Argus_GetModuleVersion(hnd);
    print(»n##### AFBR-S50 API - Simple Example ##############n«
    » API Version: v%d.%d.%dn«
    » Chip ID: %dn«
    » Module: %sn«
    »##################################################n«,
    a, b, c, id,
    mv == AFBR_S50MV85G_V1 ? »AFBR-S50MV85G (v1)« :
    mv == AFBR_S50MV85G_V2 ? »AFBR-S50MV85G (v2)« :
    mv == AFBR_S50MV85G_V3 ? »AFBR-S50MV85G (v3)« :
    mv == AFBR_S50LV85D_V1 ? »AFBR-S50LV85D (v1)« :
    mv == AFBR_S50MV68B_V1 ? »AFBR-S50MV68B (v1)« :
    mv == AFBR_S50MV85I_V1 ? »AFBR-S50MV85I (v1)« :
    mv == AFBR_S50SV85K_V1 ? »AFBR-S50SV85K (v1)« :
    »unknown«);
    
    /* Adjust some configuration parameters by invoking the dedicated API methods. */
    status = Argus_SetConfigurationFrameTime( hnd, 100000 ); // 0.1 second = 10 Hz
    handle_error(status, »Argus_SetConfigurationFrameTime failed!«);
    
    /* The program loop ... */
    for (;;)
    {
    myData = 0;
    /* Triggers a single measurement.
    * Note that due to the laser safety algorithms, the method might refuse
    * to restart a measurement when the appropriate time has not been elapsed
    * right now. The function returns with status #STATUS_ARGUS_POWERLIMIT and
    * the function must be called again later. Use the frame time configuration
    * in order to adjust the timing between two measurement frames. */
    status = Argus_TriggerMeasurement(hnd, measurement_ready_callback);
    handle_error(status, »Argus_StartMeasurementTimer failed!«);
    if (status == STATUS_ARGUS_POWERLIMIT)
    {
    /* Not ready (due to laser safety) to restart the measurement yet.
    * Come back later. */
    continue;
    }
    else
    {
    /* Wait until measurement data is ready. */
    do
    {
    status = Argus_GetStatus(hnd);
    }
    while (status == STATUS_BUSY);
    handle_error(status, »Waiting for measurement data ready (Argus_GetStatus) failed!«);
    /* The measurement data structure. */
    argus_results_t res;
    
    /* Evaluate the raw measurement results. */
    status = Argus_EvaluateData(hnd, &res, (void*) myData);
    handle_error(status, »Argus_EvaluateData failed!«);
    
    /* Use the obtain results, e.g. print via UART. */
    print_results(&res);
    }
    }
    }

    Kot je prikazano na seznamu, trije zgoraj omenjeni klici API funkcije tvorijo ogrodje izvajanja cikla merjenja. S preučevanjem dokumentacije o API-ju in drugih vzorčnih aplikacijah v kompletu za razvoj programske opreme lahko razvijalci hitro uvedejo zapletene 3D-aplikacije, pri čemer uporabijo zmožnost modula, da zagotovi podatke, ki so potrebni za določitev naprednih značilnosti, kot so hitrost, smer in kot nagiba ciljnega predmeta.

    Zaključek
    Optične naprave za zaznavanje razdalje s časom preleta so omogočile uporabo v različnih segmentih, ki zahtevajo natančno merjenje razdalje, vendar so omejitve glede razpona, natančnosti in zanesljivosti merjenja zaustavljale širitev na področja uporabe, kot so sistemi za industrijsko zaznavanje, ki zahtevajo naprave z nizko porabo energije, ki lahko zagotavljajo natančne rezultate pri večjih razponih. Integrirani ToF optični podsistem proizvajalca Broadcom izpolnjuje te nove zahteve za aplikacije za zaznavanje naslednje generacije. Razvijalci lahko z razvojnim kompletom, ki temelji na tej napravi, hitro uvedejo sisteme za natančno merjenje v enodimenzionalnih aplikacijah in sledenje zapletenemu gibanju predmetov v tridimenzionalnih aplikacijah.

    https://www.digikey.com