6. januarja, 2021

Plošče »breakout« Arduino in zasnova senzorjev gibanja in usmerjenosti na osnovi sistemov MEMS

Revija logo digikey 300x150 - Plošče »breakout« Arduino in zasnova senzorjev gibanja in usmerjenosti na osnovi sistemov MEMSOblikovalci za svoje sisteme vedno bolj potrebujejo zmogljivost usmerjenosti in gibanja. Na srečo jim pri tem lahko pomagajo senzorji, ki temeljijo na tehnologijah polprevodniških in mikroelektromehanskih sistemov (MEMS). Njihova majhna velikost in nizki stroški omogočajo uvedbo zaznavanja gibanja in usmerjenosti v različne sisteme, vključno z droni, roboti in seveda prenosnimi napravami, kot so pametni telefoni in tablični računalniki. Ti senzorji se uporabljajo tudi v sistemih napovedanega vzdrževanja za industrijski internet stvari, pri čemer zagotavljajo podatke za analizo z uporabo umetne inteligence in strojnega učenja.

Glavne vrste senzorjev MEMS, ki se uporabljajo za zaznavanje gibanja in usmerjenosti, so merilniki pospeška, žiroskopi, magnetometri in različne kombinacije le-teh. Čeprav številni oblikovalci želijo vključiti senzorje gibanja in usmerjenosti v svoje zasnove, pogosto ne vedo, kje začeti.

Ena od možnosti je uporaba kompletov za ocenjevanje in razvoj, ki jih zagotavljajo ponudniki senzorjev MEMS za podporo njihovim rešitvam. Pri zadostni stopnji podpore je to povsem ustrezen pristop. Vendar pa od oblikovalca zahteva, da se omeji na uporabo senzorjev enega ponudnika ali se priuči orodij programske opreme več ponudnikov senzorjev.

Namesto tega lahko oblikovalci, ki niso vajeni delati s senzorji gibanja in usmerjenosti, eksperimentirajo in izdelujejo prototipe s cenovno ugodnimi odprtokodnimi razvojnimi ploščami za mikrokrmilnike proizvajalca Arduino, skupaj z njihovim vdelanim razvojnim okoljem, v povezavi s cenovno ugodnimi odprtokodnimi senzorskimi ploščami »breakout« (BOB), ki imajo senzorje več ponudnikov.

Za lažji začetek je oblikovalcem v tem članku na voljo slovar senzorske terminologije in kratka razprava o vlogi senzorjev gibanja in usmerjenosti. Nato je predstavljen izbor takšnih senzorskih plošč BOB proizvajalca Adafruit in njihova uporaba.

 

Slovar senzorske terminologije

Dva izraza, ki se pogosto uporabljata v povezavi s senzorji gibanja in usmerjenosti, sta »število osi« in »prostostne stopnje«. Žal se izraza pogosto uporabljata kot sinonima, kar lahko povzroči zmedo.

Na splošno se izraz »os« (v množini »osi«) lahko uporablja za opis dimenzionalnosti podatkov, ki jih uporablja sistem. V kontekstu gibanja in usmerjenosti poznamo tri osi, X, Y in Z.

Način, na katerega so te osi prikazane, je odvisen od zadevnega sistema. Pri pametnem telefonu s pokončno usmerjenostjo je na primer os X vodoravna glede na zaslon in kaže v desno, os Y je navpična glede na zaslon in kaže navzgor, os Z, ki je pravokotna na drugi dve osi, pa kaže izven zaslona (slika 1).

9 1 1 300x256 - Plošče »breakout« Arduino in zasnova senzorjev gibanja in usmerjenosti na osnovi sistemov MEMS

Slika 1: Fizični sistem ima vedno lahko največ šest prostostnih stopenj, ker obstaja samo šest načinov, na katere se lahko premika v 3D prostoru: trije linearni in trije kotni. (Vir slike: Max Maxfield)

Pri napravah, kot je pametni telefon, obstajata dve vrsti gibanja: linearno in kotno. Pri linearnem gibanju se sistem lahko premika od ene do druge strani na osi X, navzgor in navzdol na osi Y ter naprej in nazaj na osi Z. Pri kotnem gibanju se sistem lahko vrti okoli ene ali več od treh osi.

V kontekstu gibanju se prostostna stopnja nanaša na katero koli od smeri, v kateri lahko poteka neodvisno gibanje. Na podlagi tega ima fizični sistem vedno lahko največ šest prostostnih stopenj, ker obstaja samo šest načinov, na katere se lahko premika v 3D prostoru (trije linearni in trije kotni).

Izraz »usmerjenost« se nanaša na fizični položaj ali smer nečesa glede na nekaj drugega. Pri pametnih telefonih usmerjenost določa, ali telefon leži na površini s hrbtno stranjo navzdol, stoji pokonci na enem robu (v pokončnem ali ležečem načinu) ali je v položaju nekje vmes.

To lahko razumemo tudi tako, da se usmerjenost naprave lahko določi z vrednostmi vseh možnih prostostnih stopenj ob določenem času tX. Za primerjavo, gibanje naprave se določi z razlikami med vrednostmi vseh možnih prostostnih stopenj med časoma t0 in t1.

Senzorji, kot so merilniki pospeška, žiroskopi in magnetometri, so na voljo z eno, dvema ali tremi osmi. Enoosni merilnik pospeška na primer zazna spremembe samo vzdolž tiste od treh osi, s katero je poravnan, dvoosni senzor zazna spremembe na dveh od treh osi, triosni senzor pa zazna spremembe na vseh treh oseh.

Če je v opisu senzorske platforme navedeno, da sledi več kot šestim osem, to označuje, da zagotavlja večjo natančnost s sledenjem več podatkovnim točkam vzdolž (ali okoli) osi X, Y in Z. Primer je zbirka 12-osnega merilnika pospeška, ki uporablja meritve linearnega pospeška iz štirih triosnih merilnikov pospeška.

Žal se prostostna stopnja pogosto zamenjuje s številom osi. Kombinacijo 3-osnega merilnika pospeška, 3-osnega žiroskopa in 3-osnega magnetometra nekateri ponudniki na primer opisujejo kot senzor z devetimi prostostnimi stopnjami, čeprav je pravilnejši opis 9-osni senzor s šestimi prostostnimi stopnjami.

 

Fuzija senzorjev

Poleg merjenja pospeška merilnik pospeška meri tudi gravitacijo. Pri pametnem telefonu lahko 3-osni merilnik pospeška na primer določi smer navzdol, tudi če uporabnik stoji pri miru in se naprava ne premika.

3-osni merilnik pospeška se lahko uporablja tudi za določanje navpične in vodoravne usmerjenosti naprave, pri čemer se ti podatki uporabijo za prikaz zaslona v pokončnem ali ležečem načinu. Merilnika pospeška samega po sebi ni mogoče uporabiti za določanje usmerjenosti pametnega telefona glede na zemeljsko magnetno polje. Ta zmogljivost je na primer potrebna za aplikacije planetarija, ki uporabniku omogočajo, da prepozna zvezde, planete in ozvezdja na nočnem nebu ter določi njihov položaj zgolj z usmeritvijo naprave proti želenemu območju. V tem primeru je potreben magnetometer. Če bi pametni telefon vedno ležal ravno na mizi, bi zadoščal enoosni magnetometer. Toda ker se pametni telefon lahko uporablja v poljubni usmerjenosti, je treba uporabiti 3-osni magnetometer.

Okoliško magnetno polje ne vpliva na merilnike pospeška, vplivajo pa nanje gibanje in vibracije. Za primerjavo, gibanje in vibracije sami po sebi ne vplivajo na magnetometre, lahko pa nanje vplivajo magnetni materiali in elektromagnetna polja v bližini.

Čeprav se za pridobivanje rotacijskih podatkov lahko uporablja tudi 3-osni merilnik pospeška, 3-osni žiroskop zagotavlja natančnejše podatke o kotnem gibanju. Žiroskopi dobro delujejo pri merjenju rotacijske hitrosti; pospeševanje v linearni smeri ali magnetna polja ne vplivajo nanje. Vendar pa žiroskopi pogosto ustvarijo majhno »preostalo« rotacijsko hitrost, tudi ko obmirujejo. To imenujemo »premik ničlišča«. Težava nastopi, če uporabnik poskuša določiti absolutni kot z uporabo žiroskopa, pri čemer je za pridobivanje kotnega položaja treba vključiti rotacijsko hitrost. Težava z vključevanjem v tem primeru je v tem, da se napake lahko kopičijo. Majhna napaka vrednosti zgolj 0,01 stopinje v prvi meritvi se na primer lahko spremeni v vrednost polne stopinje po 100 meritvah. To imenujemo »lezenje žiroskopa«.

Izraz »fuzija senzorjev« se nanaša na združevanje senzoričnih podatkov, pridobljenih iz različnih virov, pri čemer je pri teh podatkih manj negotovosti, kot bi bilo možno, če bi bili podatki iz teh virov uporabljeni posamezno.

Pri nizu senzorjev, ki ga sestavljajo 3-osni merilnik pospeška, 3-osni žiroskop in 3-osni magnetometer, se podatki iz merilnika pospeška in magnetometra lahko na primer uporabijo za izničenje lezenja žiroskopa. Medtem se lahko podatki iz žiroskopa uporabijo za kompenziranje šuma iz merilnika pospeška, ki ga povzročajo vibracije, in šuma iz magnetometra, ki ga povzročajo magnetni materiali oz. magnetna polja.

Pri fuziji senzorjev natančnost rezultata presega natančnost posameznih senzorjev.

 

Predstavitev nekaterih reprezentativnih senzorjev

Glede na aplikacijo lahko oblikovalec uvede samo eno vrsto senzorja gibanja/usmerjenosti v obliki merilnika pospeška, žiroskopa ali magnetometra.

Dober uvajalni merilnik pospeška je plošča BOB 2019 proizvajalca Adafruit, ki ima 3-osni merilnik pospeška s14-bitnim analogno-digitalnim pretvornikom (ADC) (slika 2).

9 1 2 300x210 - Plošče »breakout« Arduino in zasnova senzorjev gibanja in usmerjenosti na osnovi sistemov MEMS

Slika 2: Plošča BOB 2019 proizvajalca Adafruit s 3-osnim merilnikom pospeška, ki se lahko uporablja za zaznavanje gibanja, nagibanja in osnovne usmerjenosti.(Vir slike: Adafruit)

Zelo natančen 3-osni senzor ima širok razpon od ±2 g to ±8 g in se lahko uporablja za zaznavanje gibanja, nagibanja in osnovne usmerjenosti. Senzor potrebuje 3,3-voltno napajanje, toda plošča BOB ima 3,3-voltni regulator z nizko izklopno napetostjo in vezje s preklapljanjem med nivoji, zato je varen za uporabo s 3- ali 5-voltnim napajanjem in logiko. Komunikacija med ploščo BOB in ploščo Arduino (ali drugim mikrokrmilnikom) poteka prek vmesnika I2C.

Za aplikacije, ki potrebujejo samo žiroskopski senzor za zaznavanje vrtenja in obračanja, je dobra uvajalna plošča plošča BOB 1032 proizvajalca Adafruit s 3-osnim žiroskopom L3GD20H proizvajalca STMicroelectronics. L3GD20H podpira vmesnika I2C in SPI za Arduino (ali drug mikrokrmilnik) in se lahko nastavi na skalo ±250, ±500 ali ±2000 stopinj na sekundo za večje območje občutljivosti. Kot že rečeno, senzor potrebuje 3,3-voltno napajanje, toda plošča BOB ima 3,3-voltni regulator in vezje s preklapljanjem med nivoji, zato se lahko uporablja s 3- ali 5-voltnim napajanjem in logiko.

Podobno je za aplikacije, ki potrebujejo samo magnetni senzor, dobra izbira za ocenjevanje plošča BOB 4479 proizvajalca Adafruit s 3-osnim magnetometrom LIS3MDL proizvajalca STMicroelectronics. LIS3MDL lahko zazna razpone od ±4 G (±400 µT) do ±16 G (±1600 µT ali 1,6 mT). Komunikacija med ploščo BOB in ploščo Arduino (ali drugim mikrokrmilnikom) poteka prek vmesnika I2C. Še enkrat, plošča BOB ima 3,3-voltni regulator in vezje s preklapljanjem med nivoji, zato je varna za uporabo s 3- ali 5-voltnim napajanjem in logiko.

Povsem običajno je, da se več senzorjev uporablja skupaj. Merilnik pospeška se na primer lahko uporablja skupaj z žiroskopom za izvajanje opravil, kot sta zajem 3D gibanja in merjenje inercije, tako da lahko uporabnik določi, kako se predmet premika v 3D prostoru. Primer takšne kombinacije je plošča BOB 4480 proizvajalca Adafruit (slika 3) s senzorskim čipom LSM6DS33 proizvajalca STMicroelectronics.

9 1 3 300x204 - Plošče »breakout« Arduino in zasnova senzorjev gibanja in usmerjenosti na osnovi sistemov MEMS

Slika 3: Plošča BOB 4480 proizvajalca Adafruit ima 3-osni merilnik pospeška LSM6DS33TR in 3-osni žiroskop, ki se lahko uporabljata za izvajanje opravil, kot sta zajem 3D gibanja in merjenje inercije.(Vir slike: Adafruit)

3-osni merilnik pospeška lahko z merjenjem gravitacije določi smer proti Zemlji ter hitrost pospeševanja plošče v 3D prostoru. 3-osni žiroskop pa lahko meri vrtenje in obračanje. Tako kot pri drugih zgoraj predstavljenih senzorskih ploščah BOB ima plošča BOB 4480 3,3-voltni regulator in vezje s preklapljanjem med nivoji, zato je varna za uporabo s 3- ali 5-voltnim napajanjem in logiko. Poleg tega je dostop do podatkov senzorja mogoč prek vmesnika I2C ali SPI, zato se lahko uporablja s ploščo Arduino (ali drugim mikrokrmilnikom) brez zapletene nastavitve strojne opreme.

Drug primer plošče BOB z dvema senzorjema je plošča 1120 proizvajalca Adafruit s kombinacijo 3-osnega merilnika pospeška in 3-osnega magnetometra v obliki senzorskega čipa LSM303 proizvajalca STMicroelectronics. Komunikacija med mikrokrmilnikom in ploščo 1120 poteka prek vmesnika I2C, plošča BOB pa ima 3,3-voltni regulator in vezje s preklapljanjem med nivoji, zato je varna za uporabo s 3- ali 5-voltnim napajanjem in logiko.

Nekatere aplikacije zahtevajo uporabo merilnikov pospeška, žiroskopov in magnetometrov. V tem primeru je kot uvajalna plošča BOB primerna plošča 3463 proizvajalca Adafruit z dvema senzorskima čipoma: 3-osnim žiroskopom in 3-osnim merilnikom pospeška s 3-osnim magnetometrom. Komunikacije med ploščo BOB in mikrokrmilnikom potekajo prek vmesnika SPI. Poleg tega sta vključena 3,3-voltni regulator in vezje s preklapljanjem med nivoji, zato je varna za uporabo s 3- ali 5-voltnim napajanjem in logiko.

Prednost plošče BOB 3463 je v tem, da ima oblikovalec neobdelan dostop do podatkov iz treh senzorjev. Hkrati pa je njena slabost, da uporaba tega senzorja (prilagajanje in obdelava podatkov) zahteva približno 15 kilobajtov (Kb) Flash pomnilnika mikrokrmilnika in porabi veliko urnih ciklov.

Plošča BOB 2472 proizvajalca Adafruit kot alternativo uporablja senzorski čip BNO055 proizvajalca Bosch. BNO055 vključuje 3-osni merilnik pospeška, 3-osni žiroskop in 3-osni magnetometer v enem ohišju (slika 4).

9 1 4 300x232 - Plošče »breakout« Arduino in zasnova senzorjev gibanja in usmerjenosti na osnovi sistemov MEMS

Slika 4: Poleg 3-osnega merilnika pospeška, 3-osnega žiroskopa in 3-osnega magnetometra ima senzor BNO055 na plošči BOB 2472 proizvajalca Adafruit tudi procesor Arm Cortex-M0 za fuzijo senzorjev.(Vir slike: Adafruit)

Senzor BNO055 ima tudi 32-bitni procesor Arm Cortex-M0, ki pridobiva neobdelane podatke iz treh senzorjev, izvede prefinjeno fuzijo senzorjev in oblikovalcem zagotovi obdelane podatke v oblikah, ki jih lahko uporabijo: kvaternionih, Eulerjevih kotih in vektorjih. Še natančneje, prek vmesnika I2C na plošči BOB 2472 lahko oblikovalci hitro in enostavno dostopajo do naslednjih podatkov:

  • Absolutna usmerjenost (Eulerjev vektor, 100 Hz): podatki treh osi usmerjenosti na osnovi 360-stopinjskega območja.
  • Absolutna usmerjenost (kvaternion, 100 Hz): štiritočkovni kvaternion za natančnejše prilagajanje podatkov.
  • Vektor kotne hitrosti (100 Hz): tri osi »rotacijske hitrosti« v rad/s.
  • Vektor pospeševanja (100 Hz): tri osi pospeševanja (gravitacija + linearno gibanje) v metrih na kvadratno sekundo (m/s2).
  • Vektor moči magnetnega polja (20 Hz): tri osi zaznavanja magnetnega polja (v µT).
  • Vektor linearnega pospeška (100 Hz): podatki treh osi linearnega pospeška (pospešek minus gravitacija) v m/s2.
  • Vektor gravitacije (100 Hz): tri osi gravitacijskega pospeška (minus gibanje) v m/s2.
  • Temperatura (1 Hz): temperatura okolja v stopinjah Celzija.

 

Če se fuzija senzorjev izvede na čipu, se sprostijo glavni pomnilnik mikrokrmilnika in cikli izračunavanja, kar je popolno za oblikovalce, ki ustvarjajo cenovno ugodne sisteme v realnem času. Poleg tega je obvladovanje algoritmov za fuzijo senzorjev lahko zapleteno in zamudno. Če se fuzija senzorjev izvede na čipu, lahko razvijalci sistema začnejo delo v nekaj minutah. Če morajo uvesti algoritme povsem od začetka, pa lahko to traja nekaj dni ali tednov.

 

Zaključek

Številni oblikovalci želijo vključiti senzorje gibanja in usmerjenosti v svoje zasnove, vendar ne vedo, kje začeti. Za oblikovalce, ki niso vajeni dela s temi napravami, je seznanjanje s senzorji različnih proizvajalcev lahko težavno. Za eksperimentiranje in izdelovanje prototipov lahko uporabijo cenovno ugodne odprtokodne razvojne plošče za mikrokrmilnike, kot je Arduino, skupaj s cenovno ugodnimi odprtokodnimi senzorskimi ploščami BOB s senzorji več ponudnikov.

 

Dodatni članki:

Uporaba plošč BOB Arduino za hitro ocenjevanje senzorjev in zunanjih naprav

Internet stvari, industrijski internet stvari in umetna inteligenca stvari ter zakaj so prihodnost industrijske avtomatizacije

Enostavna uvedba umetne inteligence v poljuben industrijski sistem

 

Avtor: Rolf Horn