Kom igång med konstruktion av MEMS-baserade rörelse- och riktningssensorer med tilläggskort för Arduino
Bidraget med av DigiKeys nordamerikanska redaktörer
2020-11-25
Konstruktörer behöver i allt högre utsträckning förse sina system med funktioner för riktning och rörelse. Lyckligtvis har sensorer baserade på teknikerna solid state (halvledare) och mikroelektromekaniska system (MEMS) blivit tillgängliga för att hjälpa dem att åstadkomma detta. Det lilla formatet och den låga kostnaden medför att rörelse- och riktningsavkänning kan distribueras i en stor mängd system, inklusive drönare, robotar och givetvis handhållna produkter som t.ex. smartphones och tablets. Sensorerna används även i förutsägande underhållssystem för Industrial Internet of Things (IIoT), som tillhandahåller data för analys av artificiell intelligens (AI) och maskininlärning (ML) i den yttre änden.
De huvudsakliga typer av MEMS-sensorer som används för att upptäcka rörelse och riktning är accelerometrar, gyroskop, magnetometrar och olika kombinationer av dessa. Även om många konstruktörer är intresserade av att integrera sensorer för rörelse och riktning i sina konstruktioner, är de ofta osäkra på var de ska börja.
Ett alternativ är att använda utvärderings- och utvecklingssatser från leverantörer av MEMS-sensorer för att stödja deras lösningar. Förutsatt att det finns en väl fungerande support är detta en helt godtagbar lösning. Den kräver dock att konstruktören antingen begränsar sig till att använda sensorer från endast en leverantör eller att de lär sig programvaruverktygen från flera tillverkare av sensorer.
Eller så kan konstruktörer som inte är vana att arbeta med rörelse- och riktningssensorer dra nytta av att experimentera och skapa prototyper med hjälp av billiga utvecklingskort för mikrokontroller med öppen källkod frånArduino, dess integrerade utvecklingsmiljö (IDE) och billiga tilläggskort med sensorer och öppen källkod, som innehåller sensorer från flera leverantörer.
Artikeln tillhandahåller en ordlista med sensorterminologi och en kort diskussion om rörelse- och riktningssensorernas betydelse, för att hjälpa konstruktörer att komma igång. Den introducerar sedan ett urval av sådana tilläggskort med sensorer från Adafruit och deras användningsområden.
Ordlista för sensorterminologi
Två termer som ofta används när det handlar om rörelse- och riktningssensorer är "antal axlar" och ”rörelseriktningar” (DOF). Tyvärr används dessa termer ofta synonymt, vilket kan leda till förvirring.
Generellt sett kan termen axel (axlar i plural) användas för att beskriva dimensionaliteten hos den data som används av ett system. I sammanhanget med rörelse och riktning finns det tre intressanta axlar, X, Y och Z.
Hur axlarna visualiseras beror på systemet i fråga. När det gäller en smartphone i stående läge är X-axeln till exempel horisontell med avseende på skärmen och pekar åt höger, Y-axeln är vertikal med avseende på skärmen och pekar uppåt, och Z-axeln, som är vinkelrät mot de andra två axlarna, anses vara pekande ut ur skärmen (figur 1).
Figur 1: Ett fysiskt system kan endast ha högst sex rörelseriktningar (DOF) eftersom det bara finns sex sätt på vilket det kan röra sig i ett 3D-utrymme: tre linjära och tre vinkelräta. (Bildkälla: Max Maxfield)
När det gäller en enhet som en smartphone finns det två typer av rörelser som är intressanta: linjär och vinkelrät. Vid en linjär rörelse kan systemet röra sig från sida till sida på X-axeln, upp och ner på Y-axeln och framåt och bakåt på Z-axeln. Vid en vinkelrät rörelse kan systemet vridas kring en eller flera av de tre axlarna.
I samband med rörelse hänvisar rörelseriktning till någon av de riktningar i vilka en oberoende rörelse kan inträffa. Baserat på detta kan ett fysiskt system endast ha högst sex rörelseriktningar (6DOF) eftersom det bara finns sex sätt på vilket det kan röra sig i ett 3D-utrymme (tre linjära och tre vinkelräta).
Uttrycket ”riktning” avser den fysiska positionen eller riktningen hos något i förhållande till något annat. När det gäller en smartphone avgör riktningen om telefonen ligger platt på baksidan, står upp på ena kanten (antingen i stående eller liggande läge) eller är någonstans däremellan.
Ett sätt att se på detta är att enhetens riktning kan specificeras av värdena för alla möjliga rörelseriktningar vid något tillfälle tX . Som jämförelse bestäms rörelsen för en anordning av skillnaderna mellan värdena för alla möjliga rörelseriktningar mellan tiderna t0 och t1 .
Sensorer som accelerometrar, gyroskop och magnetometrar finns med en, två eller tre axlar. En accelerometer med en axel, känner exempelvis bara av förändringar längs den axel den är justerad mot, en sensor med två axlar kommer att upptäcka förändringar på två av de tre axlarna och en sensor med tre axlar kommer att detektera förändringar på alla de tre axlarna.
Om en sensorplattform beskrivs som att den spårar fler än sex axlar, markerar detta att den har en högre grad av noggrannhet genom att spåra flera datapunkter längs (eller runt) X-, Y- och Z-axlarna. Ett exempel är en serie accelerometrar med 12 axlar som använder linjära accelerationsmätningar från 4 accelerometrar med 3 axlar.
Tyvärr är det vanligt att förväxla rörelseriktning med antalet axlar. Kombinationen av en accelerometer med tre axlar, ett gyroskop med tre axlar och en magnetometer med tre axlar kan beskrivas av vissa leverantörer som en sensor med nio rörelseriktningar (DOF), även om den mer korrekt bör beskrivas som en sensor med sex rörelseriktningar och nio axlar.
Sensorfusion
Förutom att mäta acceleration, mäter en accelerometer även gravitation. När det gäller exempelvis, en smartphone kan en accelerometer med tre axlar avgöra vilken riktning som är nedåt, även om användaren står still och enheten är orörlig.
En accelerometer med tre axlar kan även användas för att bestämma enhetens vertikala och horisontella läge, som kan använda denna information för att presentera skärmen i ett stående eller liggande läge. På egen hand kan accelerometern dock inte användas för att bestämma smartphonens läge i relation till jordens magnetfält. Denna funktion är nödvändig för uppgifter som planetarium-appar som gör att användaren kan identifiera och lokalisera stjärnor, planeter och konstellationer på natthimlen genom att helt enkelt peka enheten mot det intressanta området. I dessa fall krävs en magnetometer. Om din smartphone alltid placerades plant på ett bord räcker det med en magnetometer med en axel. Eftersom en smartphone kan användas i vilket läge som helst är det dock nödvändigt att använda en magnetometer med tre axlar.
Accelerometrar påverkas inte av det omgivande magnetfältet, men de påverkas av rörelse och vibrationer. Som jämförelse påverkas magnetometrar inte av rörelse och vibrationer i sig, men de kan påverkas av magnetiska material och elektromagnetiska fält i närheten.
Även om en accelerometer med tre axlar också kan användas för att härleda vridningsinformation, ger ett gyroskop med tre axlar mer exakta uppgifter angående vinkelräta rörelser. Gyroskopen fungerar bra när det gäller att mäta vridningshastighet och de påverkas inte av acceleration i linjär riktning eller av magnetfält. Gyroskop har dock en tendens att generera en liten "kvarvarande" vridningshastighet, även när de stannar. Detta kallas för ”nollpunktsdrift”. Problemet uppstår om användaren försöker bestämma en absolut vinkel med hjälp av gyroskopet, då det är nödvändigt att integrera vridningshastigheten för att erhålla vinkelpositionen. Problemet med integrering i detta scenario är att fel kan ackumuleras. Ett litet fel på endast 0,01 grader vid den första mätningen kan exempelvis växa till en hel grad efter 100 mätningar. Detta kallas för ”gyrodrift”.
Uttrycket ”sensorfusion” avser kombinationen av sensorinformation som härrör från olika källor så att den samlade informationen har mindre osäkerhet än vad som skulle vara möjligt om information från dessa källor användes individuellt.
I fallet med en sensormatris som innefattar en accelerometer med tre axlar, ett gyroskop med tre axlar och en magnetometer med tre axlar, kan information från accelerometern och magnetometern exempelvis användas för att avbryta gyrodriften. På samma sätt kan information från gyroskopet användas för att kompensera eventuella vibrationsinducerade störningar från accelerometern och störningar från magnetiskt material/fältinduktion från magnetometern.
Det medför att sensorfusionens utdata är noggrannare än noggrannheten för de individuella sensorerna.
Vi presenterar några representativa sensorer
Beroende på tillämpning kan konstruktören besluta sig för att bara använda en enda typ av rörelse-/riktningssensor i form av en accelerometer, gyroskop eller magnetometer.
En bra accelerometer att börja med är tilläggskortet 2019 från Adafruit, som innehåller en accelerometer med tre axlar och en 14-bitars analog-till-digitalomvandlare (ADC) (figur 2).
Figur 2: Tilläggskortet 2019 från Adafruit har en accelerometer med tre axlar som kan användas för att upptäcka rörelse, lutning och grundläggande riktning. (Bildkälla: Adafruit)
Sensorn med tre axlar och hög precision har ett brett intervall från ± 2 g till ± 8 g och kan användas för att detektera rörelse, lutning och grundläggande riktning. Sensorn behöver en strömförsörjning på 3,3 V, men tilläggskortet innehåller en regulator för 3,3 V och en nivåförskjutningskrets, som gör den säker för användning för effekt och logik som behöver 3 och 5 V. Kommunikationen mellan tilläggskortet och Arduino (eller någon annan mikrokontroller) sker via I2C.
Tilläggskortet Adafruit 1032 med gyroskopet L3GD20H med tre axlar frånSTMicroelectronics, är ett bra introduktionskort för tillämpningar som endast kräver en gyroskopisk sensor för att detektera vridnings- och vändningsrörelser. L3GD20H stöder både I2C- och SPI-gränssnitt till Arduino (eller någon annan mikrokontroller) och kan ställas in för ± 250, ± 500 eller ± 2000 grader per sekund för ett stort känslighetsområde. Även denna sensor behöver en strömförsörjning på 3,3 V, men tilläggskortet innehåller en regulator för 3,3 V och en nivåförskjutningskrets, som gör den säker för användning för effekt och logik som behöver 3 och 5 V.
På liknande sätt är tilläggskortet 4479 från Adafruit, som innehåller magnetometern LIS3MDL med tre axlar från STMicroelectronics, ett bra utvärderingsalternativ för tillämpningar som endast kräver en magnetisk sensor. LIS3MDL känner av ett intervall från ± 4 gauss (± 400 mikrotesla (µT)) till ± 16 gauss (± 1600 µT eller 1,6 millitesla (mT)). Kommunikationen mellan tilläggskortet och Arduino (eller någon annan mikrokontroller) sker via I2C. Även denna sensor behöver en strömförsörjning på 3,3 V, men tilläggskortet innehåller en regulator för 3,3 V och en nivåförskjutningskrets, som gör den säker för användning för effekt och logik som behöver 3 och 5 V.
Det är mycket vanligt att flera sensorer används i kombination med varandra. En accelerometer kan exempelvis användas tillsammans med ett gyroskop för att utföra uppgifter som registrering av rörelser i 3D och tröghetsmätning, det vill säga, att låta användaren bestämma hur ett objekt rör sig i ett 3D-utrymme. Ett exempel på en sådan kombination är tilläggskortet 4480 från Adafruit (figur 3) som innehåller sensorkretsen LSM6DS33 från STMicroelectronics.
Figur 3: Tilläggskortet 4480 från Adafruit innehåller accelerometern LSM6DS33TR med tre axlar och ett gyroskop med tre axlar som kan användas för att utföra uppgifter som registrering av rörelser i 3D och tröghetsmätning. (Bildkälla: Adafruit)
Accelerometern med tre axlar kan tillhandahålla information om vilken riktning som är riktad mot jorden genom att mäta gravitationen och hur snabbt kortet accelererar i 3D-rymden. Samtidigt kan gyroskopet med tre axlar mäta vridning och vändning. På samma sätt som övriga tilläggskorten som presenterats tidigare, så innehåller tilläggskortet 4480 en regulator för 3,3 V och en nivåförskjutningskrets, som gör den säker för användning för effekt och logik som behöver 3 och 5 V. Sensorns information är tillgänglig både via I2C- och SPI-gränssnitt, så att den kan användas med en Arduino (eller någon annan mikrokontroller) utan komplicerad hårdvarukonfiguration.
Ett annat exempel på ett tilläggskort med dubbla sensorer är1120 från Adafruit, som kombinerar en accelerometer med tre axlar och en magnetometer med tre axlar i form av sensorkretsen LSM303 från STMicroelectronics. Kommunikationen mellan mikrokontrollern och 1120 sker via ett I2C-gränssnitt och tilläggskortet innehåller en regulator för 3,3 V och en nivåförskjutningskrets, som gör den säker för användning för effekt och logik som behöver 3 och 5 V.
Vissa tillämpningar kräver användning av accelerometrar, gyroskop och magnetometrar. I sådana fall är tilläggskortet 3463 från Adafruit ett användbart introduktionskort med två sensorkretsar: ett gyroskop med tre axlar, en accelerometer med tre axlar och en magnetometer med tre axlar. Kommunikationen mellan tilläggskortet och mikrokontrollern implementeras via ett SPI-gränssnitt. Dessutom ingår en spänningsregulator för 3,3 V och nivåjusteringskretsar, som gör den säker för användning för effekt och logik som behöver 3 och 5 V.
En av fördelarna med tilläggskortet 3463 är att konstruktören har tillgång till rådata för de tre sensorern. En motsvarande nackdel är att användningen av denna sensor (manipulering och bearbetning av dess data) kräver cirka 15 kilobyte (Kbyte) av mikrokontrollerns flashminne och att den förbrukar många klockcykler.
Som ett alternativ, innehåller tilläggskortet 2472 från Adafruit, sensorkretsen BNO055 frånBosch . BNO055 innehåller en accelerometer med tre axlar, ett gyroskop med tre axlar och en magnetometer med tre axlar, allt presenterat i ett paket (figur 4).
Figur 4: Förutom en accelerometer med axlar, ett gyroskop med tre axlar och en magnetometer med tre axlar, innehåller sensorn BNO055 på tilläggskortet 2472 från Adafruit även en Arm Cortex-M0 processor som utför sensorfusionen. (Bildkälla: Adafruit)
BNO055 innehåller dessutom en 32-bitars Arm Cortex-M0 processor, som hämtar rådata från de tre sensorerna, utför en sofistikerad sensorfusion och förser konstruktörerna med bearbetad information i former de kan använda: kvaternioner, Eulervinklar och vektorer. Konstruktörer kan via I2C-gränssnittet på tilläggskortet 2472, mer specifikt, snabbt och enkelt komma åt följande:
- Absolut riktning (Eulervektor, 100 Hertz (Hz)): riktningsdata med tre axlar baserat på en 360 ° sfär.
- Absolut riktning (kvaternion, 100 Hz): utdata med fyra punkters kvaternion för mer exakt datahantering.
- Vinkelhastighetsvektor (100 Hz): Tre axlar ”vridningshastighet” i rad/s.
- Accelerationsvektor (100 Hz): Tre axlar acceleration (tyngdkraft + linjär rörelse) i meter per sekund i kvadrat (m/s2).
- Vektor för magnetfältets styrka (20 Hz): Tre axlar avkänning av magnetfält (i µT).
- Linjär accelerationsvektor (100 Hz): Tre axlar linjär accelerationsdata (acceleration minus gravitation) i m/s2 .
- Gravitationsvektor (100 Hz): Tre axlar gravitationsacceleration (minus eventuell rörelse) i m/s2 .
- Temperatur (1 Hz): Omgivningstemperatur i grader Celsius.
Om sensorfusionen utförs i kretsen frigörs huvudmikrokontrollerns minne och beräkningscykler, vilket är perfekt för konstruktörer som konstruerar billiga realtidssystem. Algoritmerna för sensorfusionen kan dessutom vara svåra och tidskrävande att bemästra. Om sensorfusionen utförs i kretsen kan systemutvecklare vara igång på några minuter, i motsats till dagar eller veckor om de implementerar algoritmer från grunden.
Slutsats
Många konstruktörer är intresserade av att integrera sensorer för rörelse och riktning i sina konstruktioner, men är ofta osäkra på var de ska börja. När det gäller konstruktörer som inte är vana att arbeta med dessa enheter, kan det vara utmanande att lära känna alla sensorer från olika tillverkare. Ett sätt att börja experimentera och skapa prototyper är att använda billiga, utvecklingskort för mikrokontroller med öppen källkod som Arduino, tillsammans med billiga tilläggskort för sensorer med öppen källkod från flera leverantörer.
Vidare 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.




