Tutustu MEMS-pohjaiseen liike- ja asentoanturien suunnitteluun Arduinon anturilaajennuskorttien avulla

Kirjoittaja Clive "Max" Maxfield

Julkaisija DigiKeyn kirjoittajat Pohjois-Amerikassa

Järjestelmissä tarvitaan yhä useammin asennon ja liikkeen tunnistusta. Puolijohteisiin ja mikrosähkömekaanisiin MEMS-järjestelmiin perustuvat teknologiat auttavat onneksi näissä asioissa. Laitteiden pienen koon ja edullisuuden ansiosta liikkeen ja asennon tunnistamista voidaan käyttää monenlaisissa järjestelmissä, kuten drooneissa, roboteissa ja tietenkin älypuhelinten ja tablettien kaltaisissa kannettavissa laitteissa. Tällaisia antureita käytetään myös teollisen esineiden internetin (Industrial Internet of Things, IIoT) ennakoivissa kunnossapitojärjestelmissä, joissa ne tuottavat dataa analysoitavaksi pilven reunalla tekoälyn (AI) ja koneoppimisen (ML) avulla.

Liikkeen ja asennon tunnistukseen käytettävien MEMS-anturien päätyyppejä ovat kiihtyvyysanturit, gyroskoopit, magnetometrit ja erilaiset yhdistelmäanturit. Suunnittelijat ovat usein kiinnostuneita liike- ja asentoanturien käytöstä tuotteissaan, mutta joskus on vaikea päästä alkuun suunnittelutyössä.

MEMS-anturien myyjien tarjoamien evaluointi- ja kehityssarjojen käyttö on yksi mahdollinen vaihtoehto, joka toimii hyvin etenkin jos tarjolla on riittävästi tukea. Suunnittelija joutuu silloin kuitenkin rajaamaan vaihtoehtonsa vain yhden toimittajan anturien käyttöön – tai opettelemaan usean anturitoimittajan ohjelmistotyökalut.

Jos suunnittelija ei ole tottunut käyttämään liike- ja asentoantureita, kokeileminen ja prototyyppien kehittäminen Arduinon edullisilla avoimen lähdekoodin mikrokontrollerin kehityskorteilla voi olla hyvä ratkaisu. Niiden kanssa voidaan käyttää edullisia avoimen lähdekoodin anturilaajennuskortteja (breakout board, BOB), joissa käytetään useiden eri toimittajien antureita.

Tässä artikkelissa autetaan suunnittelijoita pääsemään alkuun käsittelemällä ensin anturitermejä ja sen jälkeen käsittelemällä lyhyesti liike- ja asentoanturien roolia. Sen jälkeen artikkelissa esitellään Adafruit-yrityksen anturilaajennuskortteja ja niiden käyttömahdollisuuksia.

Anturiterminologiaa

Liike- ja asentoanturien yhteydessä käytetään yleisesti termejä ”akselien lukumäärä” ja ”vapausasteet” (degrees of freedom, DOF). Näitä termejä käytetään valitettavasti usein toistensa synonyymeina, mikä voi aiheuttaa hämmennystä.

Akseli-termillä kuvaillaan yleensä järjestelmän käyttämän datan dimensioita. Liikkeen ja asennon osalta kiinnostavia akseleita on kolme: X, Y ja Z.

Näiden akselien visualisointi vaihtelee järjestelmän mukaan. Esimerkiksi pystyasennossa olevassa älypuhelimessa X-akseli on näyttöön nähden vaakasuorassa ja suuntautuu oikealle, Y-akseli on puolestaan näyttöön nähden pystysuorassa ja suuntautuu ylöspäin. Z-akseli on kohtisuorassa muihin akseleihin nähden ja osoittaa näytöstä ulospäin (kuva 1).

Kaavio: Fyysisessä järjestelmässä voi aina olla enintään kuusi vapausastetta.Kuva 1: Fyysisessä järjestelmässä voi aina olla enintään kuusi vapausastetta, koska esine voi liikkua kolmiulotteisessa avaruudessa vain kuudella tavalla (kolme lineaarista liikesuuntaa ja kolme kulmaliikesuuntaa). (Kuvan lähde: Max Maxfield)

Älypuhelimen kaltaisessa laitteessa kiinnostavia liiketyyppejä on kaksi: lineaarinen liike ja kulmaliike. Lineaarisessa liikkeessä järjestelmä voi liikkua X-akselia pitkin sivulta toiselle, Y-akselia ylös- ja alaspäin sekä Z-akselia eteen- ja taaksepäin. Lisäksi järjestelmä voi kääntyä yhden tai useamman akselin ympäri.

Vapausasteilla tarkoitetaan liikkeen yhteydessä kaikkia suuntia, joihin itsenäinen liike on mahdollista. Näin ollen fyysisessä järjestelmässä on aina enintään kuusi vapausastetta (DOF), koska esine voi liikkua kolmiulotteisessa avaruudessa vain kuudella tavalla (kolme lineaarista liikesuuntaa ja kolme kulmaliikesuuntaa).

”Asennolla” tarkoitetaan fyysistä sijaintia tai suuntaa suhteessa johonkin toiseen. Älypuhelimen tapauksessa asento määrittää, onko puhelin vaakatasossa näyttö ylöspäin, onko se pystyssä (pysty- tai vaakasuunnassa) tai jossakin näiden asentojen välillä.

Asiaa voi hahmottaa vaikkapa siten, että laitteen asento tietyllä hetkellä tX voidaan määrittää kaikkien mahdollisten vapausasteiden arvoista. Laitteen liike puolestaan määräytyy kaikkien mahdollisten vapausasteiden arvojen eroista ajankohtina t0 ja t1.

Kiihtyvyysanturien, gyroskooppien ja magnetometrien kaltaisia antureita on saatavana yksi-, kaksi- tai kolmiakselisina. Esimerkiksi yksiakselinen kiihtyvyysanturi havaitsee vain muutokset, joita tapahtuu sillä yhdellä akselilla, johon se on kohdistettu. Kaksiakselinen kiihtyvyysanturi havaitsee muutokset, joita tapahtuu kolmesta akselista kahdella, ja kolmiakselinen kaikilla kolmella akselilla tapahtuvat muutokset.

Jos anturialustan kuvaillaan seuraavan useampaa kuin kuutta akselia, tämä tarkoittaa, että anturi tarjoaa suuremman tarkkuuden seuraamalla useita datapisteitä X-, Y- ja Z-akseleilla tai niiden ympärillä. Esimerkiksi 12-akselinen kiihtyvyysanturisarja mittaa lineaarista kiihtyvyyttä neljällä kolmiakselisella kiihtyvyysanturilla.

Vapausasteet kuitenkin sekoitetaan valitettavan usein akselien lukumäärään. Myyjä saattaa esimerkiksi kuvailla 3-akselisen kiihtyvyysanturin, 3-akselisen gyroskoopin ja 3-akselisen magnetometrin yhdistelmää väittämällä, että se on yhdeksän vapausasteen anturi (9DOF), vaikka täsmällisempi kuvaus olisi 9-akselinen 6DOF-anturi.

Anturidatan yhdistäminen

Kiihtyvyysanturi mittaa kiihtyvyyden lisäksi myös painovoimaa. Esimerkiksi älypuhelimen 3-akselinen kiihtyvyysanturi pystyy määrittämään, mikä suunta on alaspäin, vaikka käyttäjä seisoisi paikallaan eikä laite liikkuisi mihinkään.

Lisäksi 3-akselisella kiihtyvyysanturilla voidaan määrittää laitteen pysty- ja vaakasuora asento, jolloin laite voi tämän tiedon perusteella esittää sisältöä vaaka- tai pystykuvana. Kiihtyvyysanturia ei kuitenkaan voi käyttää yksinään älypuhelimen asennon määrittämiseen suhteessa maan magneettikenttään. Tätä ominaisuutta tarvitaan planetaariosovellusten kaltaisissa tehtävissä tähtien, planeettojen ja tähdistöjen tunnistamiseen yötaivaalta vain osoittamalla kiinnostavaa aluetta laitteella. Tässä tarvitaan avuksi myös magnetometri. Yksiakselinen magnetometri olisi riittävä, jos älypuhelin olisi aina pöydällä vaakatasossa. Koska älypuhelinta voidaan kuitenkin käyttää missä tahansa asennossa, tarvitaan kolmiakselinen magnetometri.

Kiihtyvyysanturi ei reagoi ympäristön magneettikenttään, mutta se tunnistaa liikkeen ja tärinän. Magnetometri puolestaan ei sinänsä piittaa liikkeestä ja tärinästä, mutta lähistön magneettiset aineet ja sähkömagneettiset kentät voivat vaikuttaa siihen.

Vaikka pyörimisdataa voidaan kerätä myös 3-akselisella kiihtyvyysanturilla, 3-akselinen gyroskooppi tarjoaa täsmällisempää tietoa kulmakiihtyvyydestä. Gyroskoopeilla voi mitata pyörimisnopeutta hyvin, eikä kiihtyvyys lineaarisessa suunnassa eikä magneettikenttä vaikuta niihin. Gyroskoopeilla on tästä huolimatta taipumus tuottaa vähäistä ”jäännöspyörimisnopeutta” jopa ollessaan paikoillaan. Tätä sanotaan ”nollasiirtymäksi”. Ongelma on siinä, jos käyttäjä yrittää määrittää absoluuttisen kulman gyroskoopilla, jolloin pyörimisnopeus on integroitava kulma-asennon määrittämiseksi. Integroinnin ongelma on tässä tilanteessa se, että virheet kertyvät. Ensimmäisen mittauksen pieni vain 0,01 asteen virhe voi kasvaa sadan mittauksen jälkeen jo täydeksi asteeksi. Arvo siis ”vaeltaa”.

Anturidatan yhdistämisellä tarkoitetaan erillisistä lähteistä saadun anturidatan yhdistelyä siten, että koostedatan epävarmuus on pienempi kuin mikä olisi mahdollista, jos eri lähteistä saatua dataa käytettäisiin erikseen.

Jos anturiryhmään kuuluu esimerkiksi 3-akselinen kiihtyvyysanturi, 3-akselinen gyroskooppi ja 3-akselinen magnetometri, gyroskoopin vaelluksen vaikutus voidaan kumota kiihtyvyysanturin ja magnetometrin avulla. Gyroskoopin tiedoilla taas voidaan kompensoida kiihtyvyysanturin mahdollista tärinästä johtuvaa kohinaa ja magneettisen materiaalin tai magneettikentän magnetometriin aiheuttamaa kohinaa.

Anturidatan yhdistämistä käytettäessä tulos on siis tarkempi kuin yksittäisten anturien tulokset.

Esimerkkejä antureista

Suunnittelija voi sovelluksesta riippuen päättää käyttää vain yhdenlaista liike- tai asentoanturia, joka voi olla kiihtyvyysanturi, gyroskooppi tai magnetometri.

Hyvä perustason kiihtyvyysanturi on Adafruitin 2019-BOB, joka tarjoaa 3-akselisen kiihtyvyysanturin ja 14-bittisen analogia-digitaalimuuntimen (ADC) (kuva 2).

Kuva: Adafruitin 2019-BOB.Kuva 2: Adafruitin 2019-BOB sisältää on 3-akselisen kiihtyvyysanturin, jolla voidaan tunnistaa liike, kallistus ja perusasento. (Kuvan lähde: Adafruit)

Tämän tarkan 3-akselisen anturin käyttöalue on laaja, ±2 g ... ±8 g, ja sitä voidaan käyttää liikkeen, kallistuksen ja perusasennon tunnistukseen. Anturi tarvitsee 3,3 voltin virtalähteen, mutta BOB sisältää alhaisen jännitehäviön 3,3 voltin regulaattorin ja tasomuunnospiirin, joten sitä voidaan käyttää 3 tai 5 voltin jännitteellä ja logiikalla. BOB-kortin ja Arduinon (tai muun mikrokontrollerin) väliseen viestintään käytetään I2C-väylää.

Jos sovelluksessa tarvitaan vain gyroskooppianturi, joka tunnistaa kierto- ja kääntymisliikkeet, esimerkiksi Adafruitin 1032-BOB ja sen 3-akselinen STMicroelectronics L3GD20H -gyroskooppi ovat hyvä perusratkaisu. L3GD20H tukee sekä I2C- että SPI-rajapintoja Arduinon (tai muuhun mikrokontrolleriin) kanssa kommunikointiin ja sen herkkyyden voi valita laajalta asteikkoalueelta (±250, ±500 tai ±2 000 astetta/sekunti). Tämäkin anturi tarvitsee 3,3 voltin virtalähteen, mutta BOB sisältää 3,3 voltin regulaattorin ja tasomuunnospiirin, joten sitä voi käyttää 3 tai 5 voltin jännitteellä ja logiikalla.

Vastaavasti Adafruitin 4479-BOB on hyvä evaluointivalinta sovelluksiin, joissa tarvitaan vain magneettianturia. Se käyttää 3-akselista STMicroelectronics LIS3MDL-magnetometriä. LIS3MDL-anturin tunnistusalue on ±4 gaussista (±400 mikroteslasta (µT)) ±16 gaussiin (±1 600 µT:aan tai 1,6 milliteslaan (mT)). BOB-piirin ja Arduinon (tai muun mikrokontrollerin) väliseen viestintään käytetään I2C-väylää. BOB sisältää tässäkin tapauksessa 3,3 voltin regulaattorin ja tasomuunnospiirin, joten sitä voidaan käyttää 3 tai 5 voltin jännitteellä ja logiikalla.

Näitä antureita käytetään hyvin yleisesti yhdessä toisten anturien kanssa. Esimerkiksi kiihtyvyysanturia voidaan käyttää yhdessä gyroskoopin kanssa vaikkapa 3D-liikkeen tunnistamiseen ja inertian mittaukseen eli objektin liikenopeuden määrittämiseen kolmiulotteisessa avaruudessa. Tällainen yhdistelmä on esimerkiksi Adafruitin 4480-BOB (kuva 3), joka käyttää STMicroelectronics LSM6DS33 ‑anturisirua.

Kuva: Adafruitin 4480-BOB.Kuva 3: Adafruitin 4480-BOB käyttää 3-akselista LSM6DS33TR-kiihtyvyysanturia ja 3-akselista gyroskooppia. Sillä voidaan esimerkiksi tallentaa 3D-liikettä ja mitata inertiaa. (Kuvan lähde: Adafruit)

Kolmiakselinen kiihtyvyysanturi mittaa painovoimaa ja tunnistaa sen perusteella, mikä suunta on alaspäin, sekä kuinka nopeasti kortin nopeus kiihtyy 3D-avaruudessa. 3-akselinen gyroskooppi puolestaan mittaa pyörimistä ja kiertoliikettä. Edellä esiteltyjen BOB-anturipiirien tapaan myös 4480 BOB sisältää tässäkin tapauksessa 3,3 voltin regulaattorin ja tasomuunnospiirin, joten sitä voidaan käyttää 3 tai 5 voltin jännitteellä ja logiikalla. Anturidataa voi myös käyttää I2C- tai SPI-rajapinnan kautta, joten data saadaan Arduinon (tai muun mikrokontrollerin) käyttöön ilman monimutkaisia laitteistoratkaisuja.

Adafruit 1120 on toinen esimerkki kahden anturin BOB-kortista. Siinä käytetään 3-akselista kiihtyvyysanturia ja 3-akselista magnetometria STMicroelectronics LSM303 ‑anturisirulla. Tiedonsiirto mikrokontrollerin ja 1120-kortin välillä tapahtuu I2C-rajapinnan kautta, ja BOB sisältää tässäkin tapauksessa 3,3 voltin regulaattorin ja tasomuunnospiirin, joten sitä voidaan käyttää 3 tai 5 voltin jännitteellä ja logiikalla.

Joissakin sovelluksissa on käytettävä sekä kiihtyvyysantureita, gyroskooppeja että magnetometrejä. Tällöin kannattaa kokeilla esimerkiksi Adafruitin 3463-BOB-korttia, jossa on kaksi anturisirua: 3-akselinen gyroskooppi sekä 3-akselinen kiihtyvyysanturi 3-akselisella magnetometrilla. BOB-kortin ja mikrokontrollerin välinen viestintä tapahtuu SPI-rajapinnan kautta. BOB sisältää myös 3,3 voltin regulaattorin ja tasomuunnospiirin, joten sitä voidaan käyttää 3 tai 5 voltin jännitteellä ja logiikalla.

Yksi 3463-BOB-kortin etu on se, että suunnittelija saa käyttöönsä kaikkien kolmen anturin raakadatan. Haittapuolena on taas se, että tämän anturin käyttö (datan käsittely ja prosessointi) vaatii noin 15 kilotavua (kt) mikrokontrollerin flash-muistia ja kuluttaa paljon kellosyklejä.

Toinen vaihtoehto on Adafruitin 2472-BOB, jossa käytetään Bosch BNO055 ‑anturisirua. BNO055 sisältää 3-akselisen kiihtyvyysanturin, 3-akselisen gyroskoopin ja 3-akselisen magnetometrin, kaikki siististi yhdessä paketissa (kuva 4).

Kuva: BNO055-anturi Adafruitin 2472-BOB-kortilla.Kuva 4: Adafruitin 2472-BOB-kortin BNO055-anturi sisältää 3-akselisen kiihtyvyysanturin, 3-akselisen gyroskoopin ja 3-akselisen magnetometrin lisäksi myös Arm Cortex-M0 ‑prosessorin, joka vastaa anturidatan yhdistämisestä. (Kuvan lähde: Adafruit)

BNO055-piirissä on myös 32-bittinen Arm Cortex-M0 ‑prosessori, joka lukee kaikkien kolmen anturin raakadatan, toteuttaa sofistikoituneen anturidatan yhdistämisen ja tarjoaa suunnittelijoille prosessoidun datan käyttökelpoisissa muodoissa: kvaternioina, Eulerin kulmina ja vektoreina. Suunnittelijat pääsevät tarkemmin sanottuna 2472 BOB-kortin I2C-rajapinnan kautta käyttämään nopeasti ja helposti seuraavia tietoja:

  • Absoluuttinen asento (Euler-vektori, 100 hertsiä (Hz)): 3-akselinen asento 360° pallomuodossa.
  • Absoluuttinen asento (kvaternio, 100 Hz): kvaterniolähtö neljällä pisteellä datan tarkempaa käsittelyä varten.
  • Kulmanopeusvektori (100 Hz): kolmiakselinen ”pyörimisnopeus”, yksikkö rad/s.
  • Kiihtyvyysvektori (100 Hz): kolmiakselinen kiihtyvyys (painovoima + lineaarinen liike), yksikkö metriä per sekunti toiseen (m/s2).
  • Magneettikentän voimakkuusvektori (20 Hz): kolmiakselinen magneettikentän voimakkuus (µT).
  • Lineaarinen kiihtyvyysvektori (100 Hz): kolmiakselinen lineaarinen kiihtyvyysdata (kiihtyvyys miinus painovoima), yksikkö m/s2.
  • Painovoimavektori (100 Hz): painovoiman kolmiakselinen kiihtyvyys (miinus mahdollinen liike), yksikkö m/s2.
  • Lämpötila (1 Hz): ympäristön lämpötila celsiusasteina.

Anturidatan yhdistäminen sirulla vapauttaa päämikrokontrollerin muistia ja laskentasyklejä, mikä sopii hyvin edullisten reaaliaikaisten järjestelmien suunnitteluun. Anturidatan yhdistämisalgoritmien oppiminen voi olla myös vaikeaa ja kestää kauan. Kun anturifuusio toteutetaan sirulla, järjestelmän kehittäjät ovat valmiina muutamassa minuutissa – algoritmien kehittämiseen alusta lähtien kuluisi sen sijaan useita päiviä tai viikkoja.

Yhteenveto

Suunnittelijat ovat usein kiinnostuneita liike- ja asentoanturien käytöstä tuotteissaan, mutta joskus on vaikea päästä suunnittelutyössä alkuun. Aiheeseen tottumattomien suunnittelijoiden voi olla vaikea tutustua eri valmistajien antureihin. Kokeilemisen ja prototyyppien tekemisen voi aloittaa Arduinon kaltaisilla edullisilla avoimen koodin mikrokontrollerin kehityskorteilla, ja edullisilla avoimen lähdekoodin anturilaajennuskorteilla, joissa käytetään useiden eri valmistajien antureita.

Muuta lukemista:

  1. Arvioi antureita ja oheislaitteita nopeasti Arduino BOB-korttien avulla
  2. IoT, IIoT, AIoT ja miksi ne ovat teollisuusautomaation tulevaisuus
  3. Lisää mihin tahansa teollisuusjärjestelmään helposti tekoälyä
DigiKey logo

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.

Tietoja kirjoittajasta

Image of Max Maxfield

Clive "Max" Maxfield

Clive "Max" Maxfield suoritti luonnontieteiden kandidaatin tutkinnon ohjaustekniikasta vuonna 1980 Sheffieldin Hallam Universityssä, Englannissa, ja aloitti uransa keskustietokoneiden CPU-keskusyksikköjen suunnittelijana. Vuosien mittaan Max on suunnitellut kaikkea mikropiireistä piirilevyihin ja brainwave-vahvistimista steampunk-ennustemoottoreihin (älä kysy). Hän on myös toiminut elektronisen suunnitteluautomaation (EDA) eturintamassa yli 30 vuotta.

Max on kirjoittanut ja ollut mukana kirjoittamassa useita kirjoja, mukaan lukien Designus Maximus Unleashed (banned in Alabama), Bebop to the Boolean Boogie (An Unconventional Guide to Electronics), EDA: Where Electronics Begins, FPGAs: Instant Access sekä How Computers Do Math. Tutustu hänen blogiinsa “Max’s Cool Beans”.

Tietoja tästä julkaisijasta

DigiKeyn kirjoittajat Pohjois-Amerikassa