3D optikai visszaverődésiidő-mérők gyors tervezése
Contributed By DigiKey's North American Editors
2022-04-26
A visszaverődési idő (ToF, Time of Flight) optikai mérésével végzett távolságmérés alapvető szerepet játszik a legkülönbözőbb készülékekben az ipari érzékeléstől kezdve a mozdulatérzékelő kezelőfelületekig. Most, hogy elérhetővé váltak a pontos, nagy sebességű, több képpontos visszaverődésiidő-mérők, a fejlesztők kifejleszthetik azokat a kifinomultabb térbeli (3D) érzékelési algoritmusokat, amelyekre ezeken a felhasználási területeken szükség van. A fejlesztési idő azonban a több képpontos optikai érzékelő alrendszer összetettsége miatt megnő.
Ez a cikk ismerteti a visszaverődési idő alapelveit, majd bemutatja a Broadcom optikai visszaverődésiidő-mérő fejlesztőkészletét, amely lehetővé teszi a fejlesztők számára a pontos 1D és 3D távolságmérő eszközök prototípusának gyors elkészítését, valamint a saját optikai visszaverődésiidő-mérő megoldások gyors megvalósítását.
Az optikai visszaverődésiidő-mérési technika alapjai
Az optikai visszaverődésiidő-mérési technikát több olyan felhasználási területen is használják, ahol a távolság pontos meghatározására van szükség. A módszer a fény levegőben egyik pontból a másikba való eljutásához szükséges idő mérésén alapuló távolságméréseket tesz lehetővé. Az ezen mérések elvégzéséhez használt konkrét számítások általában két különböző megközelítésen alapulnak – a közvetlen és a közvetett visszaverődésiidő-mérésen. A közvetlen visszaverődésiidő-mérés, más néven impulzusmérés során a készülék az 1. egyenlet segítségével méri az adott fényimpulzusnak a visszaverődésiidő-mérővel történő adása és vétele között eltelt időt:
1. egyenlet
Ahol:
c0 = A fény sebessége vákuumban
∆T = Az adás és a vétel között eltelt idő
Bár az elv egyszerű, a pontos mérések ezen módszerrel történő elvégzése számos kihívást jelent, beleértve a kellően erős adók és kellően érzékeny vevők szükségességét, a jel-zaj viszony javítását és az impulzusok fel- és lefutó éleinek pontos érzékelését.
Ezzel szemben a közvetett visszaverődésiidő-mérési módszerek modulált folytonos hullámot használnak, és az adott és a vett jel közti fáziskülönbséget mérik a 2. egyenlet szerint:
2. egyenlet
Ahol:
c0 = A fény sebessége vákuumban
fmod = A lézerfény modulációs frekvenciája
∆φ = A megadott fáziskülönbség
Amellett, hogy itt kisebbek az adó és a vevő teljesítményével szemben támasztott elvárások, a közvetett visszaverődésiidő-mérési módszer mérsékeli az impulzusformázásra vonatkozó követelményeket is, csökkentve a 3D távolságmérés és mozgásérzékelés tervezésének bonyolultságát.
Mind a közvetlen, mind a közvetett visszaverődésiidő-mérési módszerek megkövetelik az optikai bemeneti oldali eszközök körültekintő tervezését, valamint az adott és a vett jel pontos szabályozását. A fejlesztők már évek óta kihasználhatják az integrált áramkörös optikai visszaverődésiidő-mérők előnyeit, amelyek egyetlen tokban egyesítik a jeladókat és a jelvevő érzékelőket. Mindazonáltal ezeknek az eszközöknek a korábbi generációi általában megkövetelték a fejlesztőktől, hogy valamilyen kompromisszumot kössenek a teljesítmény- vagy a működési jellemzők valamilyen kombinációját illetően, például a fogyasztás, a hatótávolság, a pontosság vagy a sebesség terén. Az ilyen kompromisszumok lényeges akadállyá váltak az egyre növekvő számú olyan ipari érzékelőeszközök esetében, amelyeknek közepes, akár 10 méteres távolságból kell működniük.
A korszerűbb közvetett visszaverődésiidő-mérő modulokat, például a Broadcom AFBR-S50MV85G modulját kifejezetten arra tervezték, hogy megfeleljenek a gyors és pontos eredmények iránti növekvő igénynek közepes távolságok esetén, a lehető legkisebb tokméret és fogyasztás mellett. A Broadcom AFBR-S50MV85G-EK fejlesztőkészlete és a hozzá tartozó szoftverfejlesztő készlet (SDK) e köré az érzékelő köré épülve egy olyan több képpontos visszaverődésiidő-mérő fejlesztőplatformot kínál, amely lehetővé teszi a fejlesztők számára 3D visszaverődésiidő-mérő eszközök gyors kifejlesztését.
A visszaverődési idő mérésén alapuló távolságmérés egyszerűsítése integrált áramkörös modulokkal
Az ipari érzékelőeszközökhöz kifejlesztett AFBR-S50MV85G modul teljes optikai visszaverődésiidő-mérő megoldást kínál egyetlen tokban. Az integrált áramkörbe beépített alkatrészek közé tartozik egy 850 nm-es hullámhosszú VCSEL ([e.: vikszel], függőleges üregű, felületről sugárzó lézer) az infravörös (IR) megvilágításhoz, egy hatszögletű, 32 képpontos érzékelőmátrix, beépített lencsék a VCSEL lézerhez és az érzékelőoptikához, valamint egy felhasználásspecifikus integrált áramkör (ASIC).
Az érzékelőmátrixhoz képest rögzített helyzetben elhelyezett adó megvilágítja a céltárgyat, és az érzékelőmátrixban néhány képpont érzékeli a visszavert infravörös jelet. Alapesetben ez lehetővé teszi a modul számára, hogy beépített környezetifény-szűrő képességének köszönhetően pontos távolságmérést végezzen fehér, fekete, színes, fémes vagy fényvisszaverő felületek esetén, még erős napfényben is.
Ahogy a tárgy távolsága csökken, a parallaxishibák automatikus helyesbítése lehetővé teszi a gyakorlatilag alsó távolsághatár nélküli méréseket. Ugyanakkor az infravörös megvilágítás és az érzékelőmátrix kombinációja lehetővé teszi, hogy további információkat is kapjunk a tárgyról, beleértve annak mozgását, sebességét, dőlésszögét és oldalirányú elhelyezkedését. Ennek eredményeként a modul képes adatokat szolgáltatni az elhaladó vagy közeledő céltárgy irányának és sebességének meghatározásához (1. ábra).
1. ábra: Az AFBR-S50MV85G modul 8 × 4 képpontos érzékelőmátrixából nyert adatok felhasználásával a fejlesztők olyan 3D-s eszközöket fejleszthetnek ki, amelyek képesek a tárgyak mozgási jellemzőinek mérésére (kép: Broadcom)
A VCSEL és az érzékelőmátrix pontos működését a modul beépített felhasználásspecifikus integrált áramköre (ASIC) hangolja össze, amely tartalmazza a VCSEL vezérléséhez, az érzékelőmátrixtól kapott analóg jel rögzítéséhez és a digitális jelformáláshoz szükséges összes áramkört (2. ábra).
2. ábra: Az AFBR-S50MV85G modulba beépített felhasználásspecifikus integrált áramkör (ASIC) tartalmazza az összes olyan áramkört, amely a modul VCSEL fényforrásának vezérléséhez, az érzékelőmátrixból érkező jelek rögzítéséhez és az SPI-sínen továbbított digitális adatok előállításához szükséges (kép: Broadcom)
Az ASIC beépített tápáramköre lehetővé teszi, hogy a modul egyetlen 5 V-os tápegységről működjön, míg a gyárilag kalibrált és hőmérséklet-kiegyenlített ellenállás–kondenzátor (RC) oszcillátor és a digitális fáziszárt hurok (PLL) biztosítja az összes szükséges órajelet. Ennek az összeépítettségnek köszönhetően a fejlesztők könnyen beilleszthetik a modult a terveikbe pusztán egy mikrovezérlő egységet (MCU) és néhány további külső alkatrészt használva. A mikrovezérlő egységhez való illesztéshez csak egy általános célú be- és kimeneti (GPIO) lábra van szükség a modulból érkező „az adat használatra kész” (data ready) jelhez, valamint egy kapcsolatra a modul digitális soros perifériaillesztőjén (SPI) keresztül (3. ábra).
3. ábra: A Broadcom cég AFBR-S50MV85G modulja csak egy mikrovezérlőt és néhány további alkatrészt igényel egy teljes visszaverődésiidő-mérő rendszer megvalósításához (kép: Broadcom)
Hogy kiegészítse ezt az egyszerű hardverkialakítást, a Broadcom visszaverődésiidő-méréshez készült vezérlőszoftvere biztosítja a távolságmérés megvalósításához szükséges összes szoftveres funkciót. Míg a modul az optikai adatgyűjtést végzi a távolságmérési funkciókhoz, a Broadcom visszaverődésiidő-méréshez készült vezérlőszoftvere, amely a vállalat által biztosított AFBR-S50 SDK szoftverfejlesztő készletben található, elvégzi az összes hardverbeállítási, kalibrálási és mérési lépést. A mérés során a vezérlőszoftver kinyeri a képpontokból a távolság- és amplitúdóértékeket is.
Távolságmérő eszköz gyors fejlesztése
Az AFBR-S50 SDK-val kombinálva a Broadcom AFBR-S50MV85G-EK fejlesztőkészlete átfogó platformot kínál a távolságmérő eszközök prototípusainak gyors kifejlesztéséhez. A készletnek része egy az AFBR-S50MV85G modult tartalmazó illesztőkártya, az NXP cég ARM Cortex-M0+ mikrovezérlő egységére épülő FRDM-KL46Z fejlesztőkártya, valamint egy mini-USB-kábel, amelynek segítségével a fejlesztőkártya számítógéphez vagy más beágyazott rendszerhez csatlakoztatható (4. ábra).
4. ábra: A Broadcom AFBR-S50MV85G-EK fejlesztőkészlete és a hozzá tartozó szoftver teljes platformot kínál a visszaverődési idő mérésén alapuló távolságmérő eszközök fejlesztéséhez és prototípusának kialakításához (kép: Broadcom)
Mindössze néhány lépésre van szükség ahhoz, hogy a fejlesztőkészlettel nekiláthasson a visszaverődési idő mérésén alapuló távolságmérésnek. Az AFBR-S50 SDK letöltése után egy telepítővarázsló vezeti végig a fejlesztőt a gyors telepítési folyamaton. Miután a fejlesztő elindítja a Broadcom SDK csomagban található AFBR-S50 Explorer szoftveralkalmazást, a szoftver az USB-csatlakozón keresztül csatlakozik az AFBR-S50 fejlesztőkártyához, az NXP fejlesztőkártyáján lévő mikrovezérlőn futó vezérlőszoftveren keresztül fogadja a mérési adatokat, és lehetővé teszi a felhasználó számára az eredmények 1D vagy 3D ábrán történő megjelenítését (5. ábra).
5. ábra: Az AFBR-S50 Explorer szoftver a visszaverődésiidő-mérő érzékelőmátrix minden egyes képpontját érő megvilágítás amplitúdóját mutató 3D-s ábrák segítségével leegyszerűsíti a visszaverődésiidő-mérések kiértékelését (kép: Broadcom)
Amint az 5. ábrán látható, a 3D ábra megjeleníti minden egyes képpont leolvasott értékét, de a szoftverben elérhető egy másik nézet is, amely azt teszi lehetővé a fejlesztők számára, hogy csak a méréshez érvényesnek ítélt képpontokat tekintsék meg. Ebben az alternatív nézetben a meghatározott feltételeket nem teljesítő képpontokat a szoftver eltávolítja a grafikonról (6. ábra).
6. ábra: A Broadcom AFBR-S50 Explorer szoftverrel a fejlesztők jól értelmezhető 3D mérési ábrákat kapnak, amelyek kizárják az előre meghatározott feltételeket nem teljesítő képpontokat (kép: Broadcom)
Hogy a fejlesztők különböző használati körülmények, például eltérő megvilágítás, fényvisszaverő képesség és felülettípus esetén is vizsgálhassák a mérési pontosságot és teljesítményt, megtekinthetik a különböző érzékelési beállítások hatását, például több képpont használatát a magasabb szintű 3D eszközök vagy kevesebb képpont használatát a pontosabb mérést igénylő 1D felhasználási módok esetében. A mérési módszerek prototípusokkal történő kiértékelése után a fejlesztők építhetnek a Broadcom AFBR-S50 SDK szoftverfejlesztő készletben található mintaszoftverre, hogy gyorsan megvalósíthassák saját fejlesztésű visszaverődésiidő-mérő eszközeiket.
Visszaverődésiidő-mérő szoftveralkalmazások készítése
A Broadcom a visszaverődésiidő-mérő eszközök támogatását az érzékelőhardver-függő kódot, alkalmazásprogramozási felületet (API) és hardverabsztrakciós rétegeket (HAL) tartalmazó AFBR-S50 magkönyvtáron alapuló hatékony architektúrára építi (7. ábra).
7. ábra: A Broadcom visszaverődésiidő-mérési működési környezetén belül a visszaverődési idő (ToF) mérésére szolgáló vezérlőprogram alkalmazásprogramozási felülete (API) a visszaverődési idő mérésére szolgáló, előre lefordított vezérlőprogramot tartalmazó magkönyvtárban található kalibrálási, mérési és kiértékelési funkciókhoz hozzáférő felhasználói alkalmazáskódot kínál (kép: Broadcom)
A Broadcom a magkönyvtárat az AFBR-S50 SDK csomag részeként, egy előre lefordított ANSI-C könyvtárfájl formájában teszi elérhetővé, amely beágyazva tartalmazza az AFBR-S50MV85G hardver futtatásához szükséges összes adatot és algoritmust. A távolságmérő rendszer mikrovezérlő egységén futó magkönyvtár a kalibrálást, mérést és kiértékelést is magában foglaló funkciókat kínál a távolságmérés minimális processzorterheléssel és fogyasztással való elvégzéséhez. Mivel a magkönyvtár funkciói kezelik az összes mögöttes részletet, a fejlesztő által látott alapszintű mérési ciklus egyszerű (8. ábra).
8. ábra: Az AFBR-S50 SDK visszaverődésiidő-mérő szoftver megszakítások és visszahívások segítségével csökkenti minimálisra a processzor munkaterhelését (kép: Broadcom)
A mikrovezérlő egység minden mérési ciklus kezdetén (amely ciklust egy periodikus időzítő megszakításkérés (IRQ) indít) elindítja a mérést, majd azonnal visszatér tétlen állapotba (vagy folytatja valamilyen alkalmazáskód feldolgozását). A mérés befejezése után az AFBR-S50MV85G modul a csatlakoztatott GPIO vonalon megszakítást kér, ami felébreszti a mikrovezérlő egységet, amely pedig elindítja az adatok kiolvasását az SPI-sínen, majd visszatér előző állapotába. Az adatkiolvasás befejezése után (amelyet egy „SPI done” (Az SPI elvégezve) megszakításkérés (IRQ) jelez) a mikrovezérlő egység végrehajtja a visszaverődésiidő-mérőtől kapott adatok kiértékelésére szolgáló kódot.
A mérési adatok elvesztésének megakadályozása érdekében a magkönyvtár blokkolja az adatpuffert, hogy az értékelési rutin meghívásáig megakadályozza egy újabb mérési ciklus megkezdését. Emiatt a fejlesztők általában két puffert építenek be a nyers adatok számára, hogy lehetővé tegyék a mérési és kiértékelési feladatok egymást váltogatva történő végrehajtását.
Az eszközszoftverek fejlesztőinek fontos tudniuk, hogy a kalibrálási, mérési és kiértékelési adatokat a magkönyvtárban található rutinok védik. A gyakorlatban a fejlesztők a fejlesztőkészletet és az AFBR-S50 Explorer alkalmazást teljes prototípuskészítő platformként használhatják, hogy a mérési adatokat eljuttassák a magas szintű szoftveralkalmazás-kódhoz.
Azon fejlesztők számára, akiknek saját eszközszoftvereket kell kifejleszteniük, az AFBR-S50 SDK csomag számos mintaszoftvert is kínál az előre lefordított magkönyvtári modulok mellé. Ennek köszönhetően az SDK-ban található mintaprogramokat felhasználva a fejlesztők gyorsan létrehozhatják saját visszaverődésiidő-mérő eszközeiket. A fejlesztők az AFBR-S50MV85G hardver és az AFBR-S50 magkönyvtár funkcióit az eszközhöz kifejlesztett saját szoftverkódjukban az AFBR-S50 SDK API függvényeinek meghívásával, valamint a magkönyvtár által támogatott különböző visszahívásokhoz saját függvényeket megadva érhetik el (lásd ismét a 7. ábrát).
A Broadcom részletes dokumentációt is ad az API és a mintaszoftverek mellé, így a fejlesztők gyorsan a saját igényeikhez igazíthatják a mintaszoftvereket, de a munkát nulláról kezdve is gyorsan haladhatnak a dokumentációk alapján. Igazából az alapszintű mérési és kiértékelési ciklus egyszerű, pusztán csak a saját függvényeket és API-hívásokat kell a mérési ciklushoz illeszteni (lásd ismét a 8. ábrát). A mérési ciklust például, mint arról korábban már szó volt, három fázis alkotja: a visszaverődésiidő-mérő eszköz bevonása, az adatok kiolvasása és a kiértékelés. A három fázis elindításához szükséges magkönyvtári API-hívások a következők:
- Argus_TriggerMeasurement() – egy mérési keretet indít el aszinkron módon.
- Argus_GetStatus() – a mérés sikeres befejezésekor a STATUS_OK (Állapot: rendben) értéket adja vissza.
- Argus_EvaluateData() – a hasznos adatokat értékeli ki a nyers mérési adatok alapján.
A Broadcom ezt az alapvető mérési hurkot az SDK-ban található egyik mintaalkalmazásban mutatja be, ennek kódja az 1. listán látható.
Másolja a vágólapra
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.%d\n"
" Chip ID: %d\n"
" Module: %s\n"
"##################################################\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. */
Argus_TriggerMeasurement(hnd, measurement_ready_callback);
handle_error(status, "Argus_StartMeasurementTimer failed!");
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);
}
}
}
1. lista: A Broadcom AFBR-S50 SDK-ban található mintakód bemutatja az AFBR-S50MV85G modulból származó visszaverődésiidő-adatok megszerzésének és kiértékelésének alapvető tervezési mintáját (kódforrás: Broadcom)
Ahogy a listán látható, a korábban említett három API-függvényhívás alkotja a mérési ciklus végrehajtásának gerincét. Az API-dokumentáció és az SDK-ban található egyéb mintaprogramok tanulmányozásával a fejlesztők gyorsan fejleszthetnek ki összetett 3D-s eszközöket, kihasználva a modul azon tulajdonságát, hogy képes a magasabb szintű jellemzőknek, például a célobjektum sebességének, irányának és dőlésszögének meghatározásához szükséges adatokat szolgáltatni.
Összegzés
Az optikai visszaverődésiidő-mérő eszközök lehetővé tették a pontos távolságmérést igénylő különböző területeken szükséges eszközök kifejlesztését, de a mérési tartomány, a pontosság és a megbízhatóság korlátai gátat szabtak az olyan felhasználási területeken való elterjedésüknek, mint az ipari érzékelőrendszerek, ahol kis fogyasztású, ámde nagyobb távolságban is pontos eredmények mérésére képes eszközökre van szükség. A Broadcom integrált áramkörös optikai visszaverődésiidő-mérő alrendszere megfelel a következő generációs érzékelőeszközök ezen nemrégiben felmerült követelményeinek. Az erre a modulra épülő fejlesztőkészlet segítségével a fejlesztők gyorsan fejleszthetnek ki pontos mérőrendszereket az 1D-s távolságmérést igénylő területekre, valamint az objektumok összetett mozgásának követését megkövetelő 3D-s eszközökbe.
Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.


