Kom godt i gang med MEMS-baseret bevægelses- og orienteringssensordesign ved hjælp af Arduino Breakout Boards
Bidraget af DigiKeys nordamerikanske redaktører
2020-11-25
Designere har i stigende grad behov for at give deres systemer orienterings- og bevægelseskapacitet. Heldigvis er sensorer baseret på solid state (halvleder) og mikroelektromekaniske systemer (MEMS) teknologier blevet tilgængelige for at hjælpe dem med at gøre det. Deres lille størrelse og lave omkostninger gør det muligt at implementere bevægelses- og orienteringsregistrering i en bred vifte af systemer, herunder droner, robotter og selvfølgelig håndholdte produkter som smartphones og tablet-computere. Disse sensorer bruges også i forudsigelige vedligeholdelsessystemer til Industrial Internet of Things (IIoT) og leverer data til analyse ved hjælp af kunstig intelligens (AI) og maskinindlæring (ML) ved kanten.
Hovedtyperne af MEMS-sensorer, der bruges til at detektere bevægelse og orientering, er accelerometre, gyroskoper, magnetometre og forskellige kombinationer. Mens mange designere er interesseret i at integrere bevægelses- og orienteringssensorer i deres design, er de ofte usikre på, hvor de skal starte.
En mulighed er at bruge evaluerings- og udviklingssæt leveret af MEMS-sensorleverandører til at understøtte deres løsninger. Forudsat at der er en god grad af støtte, er dette en perfekt fin tilgang. Det kræver dog, at designeren enten begrænser sig til kun at bruge sensorerne fra en enkelt leverandør eller at lære softwareværktøjerne fra flere sensorleverandører.
Alternativt kan designere, der ikke er vant til at arbejde med bevægelses- og orienteringssensorer, drage fordel af at eksperimentere og prototyper ved hjælp af billige open source-mikrokontrollerudviklingskort fra Arduino sammen med dets enkelt integrerede udviklingsmiljø (IDE) i forbindelse med billige open-source sensor breakout boards (BOB), der har sensorer fra flere leverandører.
For at hjælpe designere med at komme i gang giver denne artikel en ordliste over sensorterminologi og en kort diskussion af bevægelses- og orienteringssensorers rolle. Derefter introducerer det et udvalg af sådanne sensor-BOB'er fra Adafruit og deres anvendelser.
Ordliste over sensorterminologi
To udtryk, der ofte bruges, når der henvises til bevægelses- og orienteringssensorer, er "antal akser" og "frihedsgrader" (DOF). Desværre bruges disse udtryk ofte synonymt, hvilket kan føre til forvirring.
Generelt kan udtrykket akse (flertalsakser) bruges til at beskrive dimensionaliteten af de data, der anvendes af et system. I sammenhæng med bevægelse og orientering er der tre akser af interesse, X, Y og Z.
Den måde, hvorpå disse akser visualiseres, afhænger af det pågældende system. I tilfælde af en smartphone i portrætretning er for eksempel X-aksen vandret i forhold til skærmen og peger mod højre, Y-aksen er lodret i forhold til skærmen og peger opad, og Z-aksen, som er vinkelret på de to andre akser, anses for at pege ud af skærmen (figur 1).
Figur 1: Et fysisk system kan kun have maksimalt seks DOF, fordi der kun er seks måder, hvorpå det kan bevæge sig i 3D-rummet: tre lineære og tre vinklede. (Billedkilde: Max Maxfield)
Med hensyn til en enhed som en smartphone er der to typer bevægelser af interesse: lineær og vinklet. I tilfælde af lineær bevægelse kan systemet bevæge sig fra side til side på X-aksen, op og ned på Y-aksen og fremad og bagud på Z-aksen. I tilfælde af vinkelbevægelse kan systemet rotere omkring en eller flere af de tre akser.
I forbindelse med bevægelse henviser DOF til en hvilken som helst af de retninger, hvor uafhængig bevægelse kan forekomme. På dette grundlag kan et fysisk system kun altid have maksimalt seks DOF (6DOF), fordi der kun er seks måder, hvorpå det kan bevæge sig i 3D-rummet (tre lineære og tre vinklede).
Udtrykket "orientering" henviser til den fysiske position eller retning af noget i forhold til noget andet. I tilfælde af en smartphone bestemmer orienteringen, om telefonen ligger fladt på ryggen, står op på den ene kant (enten i stående eller liggende tilstand) eller et sted imellem.
En måde at se på dette er, at en enheds orientering kan specificeres af værdierne for alle mulige DOF'er på et tidspunkt tx. Til sammenligning bestemmes bevægelsen af en enhed af forskellene mellem værdierne for alle mulige DOF'er mellem tid t0 og t1.
Sensorer som accelerometre, gyroskoper og magnetometre fås med en, to eller tre akser. Et 1-akset accelerometer registrerer for eksempel kun ændringer langs den af de tre akser, som det er rettet mod; en 2-akset sensor registrerer ændringer på to af de tre akser; og en 3-akset sensor registrerer ændringer på alle tre akser.
Hvis en sensorplatform beskrives som at spore mere end seks akser, indikerer dette, at den giver en højere grad af nøjagtighed ved at spore flere datapunkter langs (eller omkring) X-, Y- og Z-akserne. Et eksempel er en 12-akset accelerometerpakke, der bruger lineære accelerationsmålinger fra fire, 3-aksede accelerometre.
Desværre er det almindeligt at forveksle DOF med antallet af akser. For eksempel kan kombinationen af et 3-akset accelerometer, 3-akset gyroskop og 3-akset magnetometer beskrives af nogle leverandører som en 9DOF-sensor, selvom det mere korrekt skal beskrives som en 6DOF 9-akset sensor.
Sensorfusion
Ud over at måle acceleration måler et accelerometer også tyngdekraften. For eksempel i tilfælde af en smartphone kan et 3-akset accelerometer bestemme, hvilken retning der er nede, selvom brugeren står stille, og enheden er ubevægelig.
Et 3-akset accelerometer kan også bruges til at bestemme enhedens lodrette og vandrette retning, som kan bruge denne information til at præsentere sin skærm i stående eller liggende tilstand. I sig selv kan accelerometeret imidlertid ikke bruges til at bestemme smartphoneens retning i forhold til Jordens magnetfelt. Denne kapacitet er nødvendig til opgaver som planetarium-apps, der giver brugeren mulighed for at identificere og lokalisere stjerner, planeter og konstellationer på nattehimlen ved blot at pege enheden mod det interesserede område. I dette tilfælde kræves et magnetometer. Hvis smartphonen altid blev placeret fladt på et bord, ville et 1-akset magnetometer være tilstrækkeligt. Da en smartphone kan bruges i enhver retning, er det dog nødvendigt at anvende et 3-akset magnetometer.
Accelerometre påvirkes ikke af det omgivende magnetfelt, men de påvirkes af bevægelse og vibrationer. Til sammenligning påvirkes magnetometre ikke af bevægelse og vibrationer i sig selv, men de kan påvirkes af magnetiske materialer og elektromagnetiske felter i nærheden.
Selvom et 3-akset accelerometer også kan bruges til at udlede rotationsdata, giver et 3-akset gyroskop mere nøjagtige data vedrørende vinkelmoment. Gyroskoper fungerer godt, når det kommer til måling af rotationshastighed, og de påvirkes ikke af acceleration i en lineær retning eller af magnetfelter. Dog har gyroskoper en tendens til at generere en lille "rest" rotationshastighed, selv når de bliver stationære. Dette er kendt som "zero-drift-offset." Problemet opstår, hvis brugeren forsøger at bestemme en absolut vinkel ved hjælp af gyroskopet, i hvilket tilfælde det er nødvendigt at integrere rotationshastigheden for at opnå vinkelpositionen. Problemet med integration i dette scenarie er, at der kan akkumuleres fejl. En lille fejl på kun 0,01 grader i den første måling kan f.eks. vokse til hel grad efter 100 målinger. Dette er kendt som "gyro drift."
Udtrykket "sensorfusion" henviser til kombinationen af sensoriske data, der stammer fra forskellige kilder, således at den resulterende information har mindre usikkerhed, end det ville være muligt, hvis dataene fra disse kilder blev brugt individuelt.
I tilfælde af et sensorarray, der f.eks. omfatter et 3-akset accelerometer, 3-akset gyroskop og 3-akset magnetometer, kan dataene fra accelerometeret og magnetometeret bruges til at annullere gyrodrift. I mellemtiden kan dataene fra gyroen bruges til at kompensere for enhver vibrationsinduceret støj fra accelerometeret og magnetisk materiale/feltinduceret støj fra magnetometeret.
Resultatet af brug af sensorfusion er, at nøjagtigheden af output overstiger nøjagtigheden af de enkelte sensorer.
Introduktion til nogle repræsentative sensorer
Afhængig af applikationen kan designeren beslutte kun at anvende en enkelt bevægelses-/orienteringssensor i form af et accelerometer, gyroskop eller magnetometer.
Et godt introduktionsaccelerometer er 2019 BIR fra Adafruit, som har et 3-akset accelerometer med en 14-bit analog-til-digital konverteret (ADC) (figur 2).
Figur 2: 2019 BIR fra Adafruit har et 3-akset accelerometer, der kan bruges til at registrere bevægelse, tilt og grundlæggende orientering. (Billedkilde: Adafruit)
Den 3-aksede sensor med høj præcision har et bredt interval fra ±2 g til ±8 g og kan bruges til at detektere bevægelse, hældning og grundlæggende orientering. Sensoren kræver en 3,3 volt forsyning, men BOB inkluderer en 3,3 volt regulator med lavt udfald og niveauforskydningskredsløb, hvilket gør den sikker til brug med 3 volt eller 5 volt effekt og logik. Kommunikation mellem BIR og Arduino (eller en anden mikrokontroller) udføres ved hjælp af I2C.
Til applikationer, der kun kræver en gyroskopisk sensor til at detektere vridnings- og drejebevægelser, er et godt introduktionskort Adafruit's 1032 BOB med L3GD20H 3-akset gyroskop fra STMicroelectronics. Støtter begge I2C- og SPI-interfaces til Arduino (eller en anden mikrokontroller), kan L3GD20H indstilles til ±250, ±500 eller ±2000 grader pr. sekund for et stort følsomhedsområde. Endnu en gang kræver sensoren en 3,3 volt forsyning, men BOB inkluderer en 3,3 volt regulator og niveauskiftende kredsløb, der gør det muligt at bruge den med enten 3 volt eller 5 volt effekt og logik.
Til applikationer, der kun kræver en magnetisk sensor, er det en god evalueringsmulighed 4479 BIR fra Adafruit, som indeholder LIS3MDL 3-akset magnetometer fra STMicroelectronics. LIS3MDL kan registrere intervaller fra ±4 gauss (±400 microtesla (µT)) op til ±16 gauss (±1600 µT eller 1,6 millitesla (mT)). Kommunikation mellem BIR og Arduino (eller en anden mikrokontroller) udføres ved hjælp af I2C. Igen inkluderer BOB 3,3 volt regulator og niveauforskydningskredsløb, der gør det sikkert til brug med 3 volt eller 5 volt effekt og logik.
Det er meget almindeligt, at flere sensorer bruges i forbindelse med hinanden. For eksempel kan et accelerometer bruges i forbindelse med et gyroskop til at udføre opgaver som 3D-bevægelsesoptagelse og inerti-måling; at give brugeren mulighed for at bestemme, hvordan et objekt bevæger sig i et 3D-rum. Et eksempel på en sådan combo er Adafruit's 4480 BIR (figur 3), som indeholder LSM6DS33 sensorchip fra STMicroelectronics.
Figur 3: 4480 BIR fra Adafruit har LSM6DS33TR 3-akset accelerometer og et 3-akset gyroskop, der kan bruges til at udføre opgaver som 3D-bevægelsesoptagelse og inerti-måling. (Billedkilde: Adafruit)
3-akset accelerometer kan give data om, hvilken retning der er mod Jorden ved at måle tyngdekraften, og hvor hurtigt brættet accelererer i 3D-rummet. I mellemtiden kan 3-akse gyroskopet måle spin og twist. Som med de andre sensor-BOB'er, der blev præsenteret tidligere, inkluderer 4480 BOB en 3,3 volt regulator og niveauskiftende kredsløb, hvilket gør det sikkert til brug med 3 volt eller 5 volt effekt og logik. Sensordataene kan også tilgås ved hjælp af begge I2C- eller SPI-interfaces, så den kan bruges med en Arduino (eller anden mikrocontroller) uden kompliceret hardwareopsætning.
Et andet eksempel på en dobbelt-sensor BOB er 1120 fra Adafruit, som indeholder kombinationen af et 3-akset accelerometer og et 3-akset magnetometer i form af et LSM303 sensorchip fra STMicroelectronics. Kommunikationen mellem mikrokontrolleren og 1120 foregår via et I2C-interface og BOB inkluderer en 3,3 volt regulator og niveauskiftende kredsløb, hvilket gør det sikkert til brug med 3 volt eller 5 volt effekt og logik.
Nogle applikationer kræver brug af accelerometre, gyroskoper og magnetometre. I dette tilfælde er Adafruit en nyttig introduktions-BIR 3463, som har to sensorchips: Et 3-akset gyroskop og et 3-akset accelerometer med et 3-akset magnetometer. Kommunikation mellem BOB og mikrocontroller implementeres via en SPI-interfaces. Der er også en 3,3 volt regulator og niveauforskydningskredsløb inkluderet, hvilket gør det sikkert til brug med 3 volt eller 5 volt effekt og logik.
En fordel ved 3463 BOB er, at designeren får rå adgang til dataene fra de tre sensorer. En tilsvarende ulempe er, at brug af denne sensor (manipulering og behandling af dens data) vil kræve ca. 15 kilobyte (Kbytes) af mikrocontrollerens flashhukommelse og vil forbruge en masse clocl-cyklusser.
Som et alternativ, Adafruit's 2472 BIR har en BNO055 sensorchip fra Bosch. BNO055 inkluderer et 3-akset accelerometer, et 3-akset gyroskop og et 3-akset magnetometer, alt sammen præsenteret i en enkelt pakke (figur 4).
Figur 4: Ud over et 3-akset accelerometer, 3-akset gyroskop og 3-akset magnetometer inkluderer BNO055-sensoren på Adafruit's 2472 BOB også enArm Cortex-M0-processor, der udfører sensorfusion. (Billedkilde: Adafruit)
BNO055 inkluderer også en 32-bit Arm Cortex-M0-processor, der tager rådata fra de tre sensorer, udfører sofistikeret sensorfusion og giver designere bearbejdet information i former, de kan bruge: Kvaternioner, Euler-vinkler og vektorer. Mere specifikt via 2472 BOB's I2C-interface, kan designere hurtigt og nemt få adgang til følgende:
- Absolut orientering (Euler Vector, 100 Hertz (Hz)): Tre-akse orienteringsdata baseret på en 360 ° sfære.
- Absolut orientering (Quatenrion, 100 Hz): Fire-punkts kvaternionsoutput til mere nøjagtig databehandling.
- Vinkelhastighedsvektor (100 Hz): Tre-akse af "rotationshastighed" i rad/s.
- Accelerationsvektor (100 Hz): Tre akse med acceleration (tyngdekraft + lineær bevægelse) i meter pr. sekund i kvadrat (m/s2 ).
- Magnetfeltstyrkevektor (20 Hz): Tre-akse af magnetfeltregistrering (i µT).
- Lineær accelerationsvektor (100 Hz): Tre-akse med lineære accelerationsdata (acceleration minus tyngdekraft) i m/s2.
- Tyngdekraftsvektor (100 Hz): Tre-akse af tyngdeacceleration (minus enhver bevægelse) i m/s2.
- Temperatur (1 Hz): Omgivelsestemperatur i grader Celsius.
Når sensorfusionen udføres på chip, frigøres hovedmikrocontrollerens hukommelse og beregningscyklusser, hvilket er ideelt for designere, der kan oprette billige realtidssystemer. Desuden kan sensorfusionsalgoritmer være vanskelige og tidskrævende at mestre. Når sensorfusionen udføres på chip, kan systemudviklere være i gang på få minutter i modsætning til dage eller uger, hvis de implementerer algoritmer fra bunden.
Konklusion
Mange designere er interesserede i at inkorporere bevægelses- og orienteringssensorer i deres design, men er usikre på, hvor de skal starte. I tilfælde af designere, der ikke er vant til at arbejde med disse enheder, kan det være en udfordring at blive fortrolig med sensorer fra forskellige producenter. En måde at begynde at eksperimentere med og prototype er at bruge billige open-source mikrokontrollerudviklingskort som Arduino sammen med billige BOB'er til open source-sensorer med sensorer fra flere leverandører.
Yderligere læsning:
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.




