Kom i gang med MEMS-basert konstruksjon av bevegelses- og orienteringssensorer ved å bruke Arduino-utbrytningskort
Bidrag fra DigiKeys nordamerikanske redaktører
2020-11-25
Konstruktører har i økende grad behov for å gi systemene sine funksjonalitet for orientering og bevegelse. Heldigvis har sensorer basert på teknologier som faststoff (solid-state) og mikroelektromekaniske systemer (MEMS – microelectromechanical systems) blitt tilgjengelige for å hjelpe dem med å gjøre dette. Med deres lille størrelse og lave kostnader er det mulig å implementere bevegelses- og orienteringssensorer i en lang rekke systemer, deriblant droner, roboter og selvfølgelig håndholdte produkter som smarttelefoner og nettbrett-datamaskiner. Disse sensorene brukes også i forebyggende vedlikeholdssystemer for industrielle tingenes Internett (IIoT – Industrial Internet of Things), som gir data for analyse ved hjelp av kunstig intelligens (AI) og maskinlæring (ML) på inngangspunktet (edge).
De viktigste typene MEMS-sensorer som brukes til å detektere bevegelse og orientering, er akselerometre, gyroskoper, magnetometre og forskjellige kombinasjoner av disse. Selv om mange konstruktører er interessert i å innlemme bevegelses- og orienteringssensorer i konstruksjonene sine, er de ofte usikre på hvor de skal begynne.
Ett alternativ er å bruke evaluerings- og utviklingssett levert av MEMS-sensorleverandører for å støtte løsningene. Forutsatt at det er god grad av tilgjengelig støtte, er dette en helt grei tilnærming. Dette krever imidlertid at konstruktøren enten begrenser seg til å kun bruke sensorene fra én enkelt leverandør, eller lærer seg å bruke programvareverktøyene fra flere forskjellige sensorleverandører.
Alternativt kan konstruktører som ikke er vant til å jobbe med bevegelses- og orienteringssensorer, dra nytte av å eksperimentere med og utvikle prototyper ved hjelp av rimelige utviklingskort med åpen kildekode fra Arduino, i tillegg til det samlede integrerte utviklingsmiljøet (IDE – integrated development environment), i kombinasjon med rimelige utbrytningskort (BOB – breakout board) med åpen kildekode som har sensorer fra flere leverandører.
For å hjelpe konstruktører med å komme i gang, inneholder denne artikkelen en ordliste med sensorterminologi, og den tar kort for seg rollen til bevegelses- og orienteringssensorer. Den introduserer deretter et utvalg av slike sensor-BOB-er fra Adafruit, og deres bruk.
Ordliste med sensorterminologi
To begreper som ofte brukes når det refereres til bevegelses- og orienteringssensorer, er «antall akser» og «frihetsgrader» (DOF – degrees of freedom). Dessverre brukes disse begrepene ofte synonymt, noe som kan føre til forvirring.
Begrepet akse kan som regel brukes til å beskrive dimensjonaliteten til dataene som brukes av et system. I forbindelse med bevegelse og orientering, er det tre akser av interesse, X, Y og Z.
Måten disse aksene visualiseres på, avhenger av det aktuelle systemet. Når det gjelder en smarttelefon i stående retning, er for eksempel X-aksen horisontal i forhold til skjermen og peker mot høyre, Y-aksen er vertikal i forhold til skjermen og peker oppover og Z-aksen, som er vinkelrett på de to andre aksene, anses å peke ut av skjermen (figur 1).
Figur 1: Et fysisk system kan kun ha maksimalt seks frihetsgrader fordi det er bare seks måter det kan bevege seg på i et tredimensjonalt (3D) rom: tre lineære og tre vinklede. (Bildekilde: Max Maxfield)
Når det gjelder en enhet som en smarttelefon, er det to typer bevegelser som er av interesse: lineær og vinklet. Når det gjelder lineær bevegelse, kan systemet bevege seg fra side til side på X-aksen, opp og ned på Y-aksen og fremover og bakover på Z-aksen. Når det kommer til vinkelbevegelse, kan systemet rotere rundt én eller flere av de tre aksene.
I forbindelse med bevegelse, refererer frihetsgrader til enhver av retningene der uavhengig bevegelse kan forekomme. På dette grunnlaget kan et fysisk system kun ha maksimalt seks frihetsgrader (6DOF), fordi det er bare seks måter det kan bevege seg på i et tredimensjonalt (3D) rom (tre lineære og tre vinklede).
Begrepet «orientering» refererer til den fysiske posisjonen eller retningen til noe i forhold til noe annet. Når det gjelder en smarttelefon, avgjør orienteringen om telefonen ligger flatt på baksiden, står oppreist på den ene kanten (enten i stående eller liggende modus) eller en posisjon midt imellom.
Én måte å se dette på er at orienteringen til en enhet kan spesifiseres av verdiene til alle mulige frihetsgrader på et gitt tidspunkt tX. Til sammenligning kan bevegelsen til en enhet fastsettes av forskjellene mellom verdiene for alle mulige frihetsgrader mellom tidspunktene t0 og t1.
Sensorer som akselerometre, gyroskoper og magnetometre er tilgjengelige med én, to eller tre akser. Et akselerometer med én akse vil for eksempel kun detektere endringer langs den av de tre aksene som det er justert til, en 2-akset sensor vil detektere endringer på to av de tre aksene; og en 3-akset sensor vil detektere endringer på alle tre aksene.
Hvis en sensorplattform beskrives som å spore mer enn seks akser, gir dette uttrykk for at den gir en høyere grad av nøyaktighet ved å spore flere datapunkter langs (eller rundt) X-, Y- og Z-aksene. Et eksempel er en 12-akset akselerometerpakke som bruker lineære akselerasjonsmålinger fra fire 3-aksede akselerometre.
Dessverre er det vanlig å forveksle frihetsgrader med antall akser. For eksempel kan kombinasjonen av et 3-akset akselerometer, 3-akset gyroskop og 3-akset magnetometer beskrives som en 9DOF-sensor av noen leverandører, selv om den mer korrekt bør beskrives som en 6DOF 9-akset sensor.
Sensorfusjon
I tillegg til å måle akselerasjon, måler et akselerometer også tyngdekraften. For eksempel, når det gjelder en smarttelefon, kan et 3-akset akselerometer fastsette hvilken retning som er ned, selv om brukeren står stille og enheten er ubevegelig.
Et akselerometer med tre akser kan også brukes til å fastsette enhetens vertikale og horisontale orientering, som kan bruke denne informasjonen til å presentere visningen i stående eller liggende modus. Akselerometeret kan imidlertid ikke alene brukes til å fastsette smarttelefonens orientering med hensyn til jordens magnetfelt. Denne funksjonaliteten er nødvendig for oppgaver som planetarium-apper som gjør det mulig for brukeren å identifisere og lokalisere stjerner, planeter og konstellasjoner på nattehimmelen ved å peke enheten mot interesseområdet. I dette tilfellet kreves et magnetometer. Hvis smarttelefonen alltid var plassert flatt på et bord, ville et 1-akset magnetometer vært tilstrekkelig. Siden en smarttelefon kan brukes i alle retninger, er det imidlertid nødvendig å bruke et 3-akset magnetometer.
Akselerometre påvirkes ikke av det omkringliggende magnetfeltet, men de påvirkes av bevegelse og vibrasjoner. Til sammenligning påvirkes ikke magnetometre av bevegelser og vibrasjoner per se, men de kan påvirkes av magnetiske materialer og elektromagnetiske felt i nærheten.
Selv om et 3-akset akselerometer også kan brukes til å utlede rotasjonsdata, gir et 3-akset gyroskop mer nøyaktige data om vinkelmoment. Gyroskoper fungerer godt når det gjelder måling av rotasjonshastighet, og de påvirkes ikke av akselerasjon i lineær retning eller av magnetfelt. Gyroskoper har imidlertid en tendens til å generere en liten «resterende» rotasjonshastighet, selv når de blir stasjonære. Dette er kjent som «nullpunktsdrift-forskyvning» (zero-drift-offset). Problemet oppstår hvis brukeren forsøker å fastsette en absolutt vinkel ved hjelp av gyroskopet, der det i dette tilfellet er nødvendig å integrere rotasjonshastigheten for å skaffe vinkelposisjonen. Problemet med integrasjon i dette scenariet er at feil kan akkumuleres. En liten feil på bare 0,01 grader i den første målingen kan for eksempel vokse til en full grad etter 100 målinger. Dette kalles «gyrodrift».
Begrepet «sensorfusjon» refererer til kombinasjonen av sensoriske data utledet fra ulike kilder på en slik måte at den resulterende informasjonen har mindre usikkerhet enn det som ville vært mulig dersom dataene fra disse kildene ble brukt individuelt.
Når det gjelder en sensormatrise som omfatter et 3-akset akselerometer, 3-akset gyroskop og 3-akset magnetometer, kan for eksempel dataene fra akselerometeret og magnetometeret brukes til å kansellere gyrodrift. Samtidig kan dataene fra gyroen brukes til å kompensere for vibrasjonsindusert støy fra akselerometeret og magnetisk material-/feltindusert støy fra magnetometeret.
Resultatet av å bruke sensorfusjon er at nøyaktigheten til utgangen overstiger nøyaktigheten til sensorene hver for seg.
Vi presenterer noen typiske sensorer
Avhengig av konstruksjonen det er snakk om, kan konstruktøren bestemme seg for å bruke kun én type bevegelses-/orienteringssensor i form av et akselerometer, gyroskop eller magnetometer.
Et godt introduksjonsakselerometer er 2019 utbrytningskortet fra Adafruit, som har et akselerometer med 3 akser og en 14-biters analog-til-digital-omformer (ADC) (figur 2).
Figur 2: Utbrytningskortet fra 2019 fra Adafruit har et 3-akset akselerometer som kan brukes til å detektere bevegelse, helling og grunnleggende orientering. (Bildekilde: Adafruit)
Den 3-aksede sensoren med høy presisjon har et bredt område, fra ±2 g til ±8 g, og den kan brukes til å detektere bevegelse, helling og grunnleggende orientering. Sensoren krever en forsyning på 3,3 volt, men utbrytningskortet inkluderer en 3,3-volts regulator og nivåovergangsskrets, noe som gjør den trygg for bruk med 3- eller 5-volts strøm og logikk. Kommunikasjon mellom utbrytningskortet og Arduino-en (eller en annen mikrokontroller) utføres ved å bruke I2C.
For konstruksjoner som kun krever en gyroskopisk sensor for å detektere vridnings- og dreiebevegelser, er Adafruit sitt 1032-utbrytningskort, med det 3-aksede gyroskopet L3GD20H fra STMicroelectronics, et godt introduksjonskort. L3GD20H, som har støtte for både I2C- og SPI-grensesnitt til Arduino (eller en annen mikrokontroller), kan konfigureres til en skala på ±250, ±500 eller ±2000 grader per sekund for å oppnå et stort følsomhetsområde. Igjen krever sensoren en 3,3-volts forsyning, men utbrytningskortet inkluderer en 3,3-volts regulator og nivåforskyvningskrets som gjør at den kan brukes med enten 3- eller 5-volts strøm og logikk.
På samme måte, for konstruksjoner som bare krever en magnetisk sensor, er et godt evalueringsalternativ et 4479-utbrytningskort fra Adafruit, som har det 3-aksede magnetometeret LIS3MDL fra STMicroelectronics. LIS3MDL kan registrere områder fra ±4 gauss (±400 mikrotesla (µT)) opptil ±16 gauss (±1600 µT eller 1,6 millitesla (mT)). Kommunikasjon mellom utbrytningskortet og Arduino-en (eller en annen mikrokontroller) utføres ved å bruke I2C. Igjen inkluderer utbrytningskortet en 3,3-volts regulator og nivåforskyvningskrets som gjør den trygg for bruk med 3- eller 5-volts strøm og logikk.
Det er veldig vanlig at flere sensorer brukes i kombinasjon med hverandre. For eksempel kan et akselerometer brukes i kombinasjon med et gyroskop for å utføre oppgaver som tredimensjonal bevegelsesregistrering og treghetsmåling, slik at brukeren kan fastsette hvordan et objekt beveger seg i et tredimensjonalt rom. Et eksempel på en slik kombinasjon er Adafruit sitt 4480-utbrytningskort (figur 3), som har sensorbrikken LSM6DS33 fra STMicroelectronics.
Figur 3: 4480-utbrytningskortet fra Adafruit har det 3-aksede akselerometeret LSM6DS33TR og et 3-akset gyroskop som kan brukes til å utføre oppgaver som tredimensjonal bevegelsesregistrering og treghetsmåling. (Bildekilde: Adafruit)
Det 3-aksede akselerometeret kan gi data som hvilken retning som er vendt mot jorden ved å måle tyngdekraften, og hvor raskt kortet akselererer i det tredimensjonale rommet. ISamtidig kan det 3-aksede gyroskopet måle spinn og vridning. I likhet med de andre sensor-utbrytningskortene som ble presentert tidligere, inkluderer 4480-utbrytningskortet en 3,3-volts regulator og nivåforskyvningskrets, noe som gjør det trygt for bruk med 3- eller 5-volts strøm og logikk. Sensordataene kan også nås ved hjelp av både I2C- eller SPI-grensesnitt, slik at de kan brukes med en Arduino (eller annen mikrokontroller) uten komplisert maskinvareoppsett.
Et annet eksempel på et utbrytningskort med to sensorer er 1120 fra Adafruit, som har kombinasjonen av et 3-akset akselerometer og et 3-akset magnetometer i form av en LSM303-sensorbrikke fra STMicroelectronics. Kommunikasjon mellom mikrokontrolleren og 1120 skjer via et I2C-grensesnitt, og utbrytningskortet inkluderer en 3,3-volts regulator og nivåforskyvningskrets, noe som gjør det trygt for bruk med 3- eller 5-volts strøm og logikk.
Noen konstruksjoner krever bruk av akselerometre, gyroskoper og magnetometre. I dette tilfellet er et nyttig introduksjons-utbrytningskort Adafruit sin 3463, som har to sensorbrikker: et 3-akset gyroskop og et 3-akset akselerometer med et 3-akset magnetometer. Kommunikasjon mellom utbrytningskortet og mikrokontrolleren implementeres via et SPI-grensesnitt. En 3,3-volts regulator og nivåforskyvningskrets er også inkludert, noe som gjør det trygt for bruk med 3- eller 5 volts strøm og logikk.
En fordel med 3463-utbrytningskortet er at konstruktøren får rå tilgang til dataene fra de tre sensorene. En tilsvarende ulempe er at bruken av denne sensoren (manipulering og behandling av data) vil kreve omtrent 15 kilobyte (Kbyte) av mikrokontrollerens flashminne og vil forbruke mange klokkesykluser.
Som et alternativ har Adafruit sitt 2472-utbrytningskort en BNO055-sensorbrikke fra Bosch. BNO055 omfatter et 3-akset akselerometer, et 3-akset gyroskop og et 3-akset magnetometer, og alle er presentert i én enkelt pakke (figur 4).
Figur 4: I tillegg til et 3-akset akselerometer, 3-akset gyroskop og 3-akset magnetometer, inkluderer BNO055-sensoren på Adafruit sitt 2472-utbrytningskort også en Arm Cortex-M0-prosessor som utfører sensorfusjon. (Bildekilde: Adafruit)
Videre inkluderer BNO055 også en 32-biters Arm Cortex-M0-prosessor. Den bruker rå data fra de tre sensorene, utfører sofistikert sensorfusjon og gir konstruktører behandlet informasjon de kan bruke: kvaterner (quaternion), Euler-vinkler og -vektorer. Nærmere bestemt, via 2472-utbrytningskortet sitt I2C-grensesnitt, kan konstruktører raskt og enkelt få tilgang til følgende:
- Absolutt orientering (Euler-vektor, 100 Hertz (Hz)): 3-aksede orienteringsdata basert på et 360-graders område.
- Absolutt orientering (kvaterner, 100 Hz): Firepunkts kvaterner-utgang for mer nøyaktig datamanipulering.
- Vinkelhastighetsvektor (100 Hz): Tre-akset for «rotasjonshastighet» i rad/s.
- Akselerasjonsvektor (100 Hz): Akselerasjon i tre akser (tyngdekraft + lineær bevegelse) i meter per sekund kvadrert (m/s2).
- Magnetisk feltstyrkevektor (20 Hz): Tre akser med magnetisk feltføling (i µT).
- Lineær akselerasjonsvektor (100 Hz): Tre akser med lineære akselerasjonsdata (akselerasjon minus tyngdekraft) i m/s2.
- Tyngdekraftvektor (100 Hz): Tre akser med gravitasjonsakselerasjon (minus enhver bevegelse) i m/s2.
- Temperatur (1 Hz): Omgivelsestemperatur i Celsius-grader.
Med integrert sensorfusjon frigjøres hovedmikrokontrollerens minne og beregningssykluser, noe som er ideelt for konstruktører som lager rimelige sanntidssystemer. Videre kan sensorfusjonsalgoritmer være vanskelige og tidkrevende å mestre. Med integrert sensorfusjon kan systemutviklere komme i gang på få minutter, i motsetning til dager eller uker hvis de implementerer algoritmer fra grunnen av.
Konklusjon
Mange konstruktører er interessert i å innlemme bevegelses- og orienteringssensorer i konstruksjonen, men er usikre på hvor de skal begynne. For konstruktører som ikke er vant til å jobbe med disse enhetene, kan det være utfordrende å gjøre seg kjent med sensorer fra forskjellige produsenter. En måte å begynne å eksperimentere og utvikle prototyper på, er å bruke rimelige mikrokontroller-utviklingskort med åpen kildekode, for eksempel Arduino, kombinert med rimelige sensor-utbrytningskort med åpen kildekode som har sensorer fra flere leverandører.
Videre lesing:
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.




