Aan de slag met MEMS-gebaseerde bewegings- en oriëntatiesensorontwerpen met Arduino-breakborden

Door Clive "Max" Maxfield

Bijgedragen door De Noord-Amerikaanse redacteurs van DigiKey

Ontwerpers moeten hun systemen steeds meer voorzien van oriëntatie- en bewegingsmogelijkheden. Gelukkig zijn er sensoren op basis van vaste-stoftechnologie (halfgeleidertechnologie) en micro-elektromechanische systemen (MEMS) beschikbaar gekomen om hen daarbij te helpen. Door hun geringe afmetingen en lage kosten kunnen bewegings- en oriëntatiesensors worden toegepast in een breed scala van systemen, waaronder drones, robots en natuurlijk handheld producten zoals smartphones en tabletcomputers. Deze sensoren worden ook gebruikt in voorspellende onderhoudssystemen voor het Industrial Internet of Things (IIoT), waarbij gegevens worden geleverd voor analyse met behulp van kunstmatige intelligentie (AI) en machine learning (ML) aan de rand.

De belangrijkste soorten MEMS-sensors die worden gebruikt om beweging en oriëntatie te detecteren zijn versnellingsmeters, gyroscopen, magnetometers, en diverse combinaties. Hoewel veel ontwerpers geïnteresseerd zijn in het integreren van bewegings- en oriëntatiesensors in hun ontwerpen, weten zij vaak niet goed waar te beginnen.

Eén mogelijkheid is gebruik te maken van evaluatie- en ontwikkelingskits die door MEMS-sensorleveranciers ter ondersteuning van hun oplossingen worden geleverd. Aangenomen dat er goede ondersteuning wordt geleverd, is dat een prima aanpak. Het vereist echter wel dat de ontwerper zich ofwel beperkt tot het gebruik van de sensoren van één enkele leverancier, ofwel de software van meerdere leveranciers van sensors leert kennen.

Ontwerpers die niet gewend zijn om met bewegings- en oriëntatiesensors te werken, kunnen er ook baat bij hebben om te experimenteren en prototypes te maken met goedkope open source microcontroller ontwikkelborden van Arduino, samen met zijn enkele geïntegreerde ontwikkelingsomgeving (IDE), in combinatie met goedkope open source sensor breakoutborden (BOB's) die zijn voorzien van sensors van verschillende verkopers.

Om ontwerpers op weg te helpen, bevat dit artikel een verklarende woordenlijst van sensorterminologie en een korte bespreking van de rol van bewegings- en oriëntatiesensors. Vervolgens wordt een selectie van dergelijke sensor BOB's van Adafruit en hun gebruik voorgesteld.

Woordenlijst van sensorterminologie

Twee termen die gewoonlijk worden gebruikt wanneer wordt verwezen naar bewegings- en oriëntatiesensors zijn "aantal assen" en "vrijheidsgraden" (DOF). Helaas worden deze termen vaak als synoniemen gebruikt, wat tot verwarring kan leiden.

In het algemeen kan de term as (meervoud assen) worden gebruikt om de dimensionaliteit te beschrijven van de gegevens die door een systeem worden gebruikt. In de context van beweging en oriëntatie zijn er drie assen van belang, X, Y, en Z.

De manier waarop deze assen worden gevisualiseerd, hangt af van het systeem in kwestie. In het geval van een smartphone in staande positie, bijvoorbeeld, is de X-as horizontaal ten opzichte van het scherm en wijst hij naar rechts, is de Y-as verticaal ten opzichte van het scherm en wijst hij naar boven, en wordt de Z-as, die loodrecht op de andere twee assen staat, geacht buiten het scherm te wijzen (Afbeelding 1).

Het schema van een fysisch systeem kan nooit meer dan zes DOF hebbenAfbeelding 1: Een fysisch systeem kan nooit meer dan zes DOF hebben omdat het in de 3D-ruimte slechts op zes manieren kan bewegen: drie lineaire en drie hoekige. (Bron afbeelding: Max Maxfield)

Voor een toestel als een smartphone zijn er twee soorten bewegingen van belang: lineaire en hoekige. In het geval van een lineaire beweging kan het systeem van links naar rechts bewegen op de X-as, op en neer op de Y-as, en vooruit en achteruit op de Z-as. In het geval van een hoekbeweging kan het systeem om een of meer van de drie assen draaien.

In de context van beweging verwijst de DOF naar een van de richtingen waarin onafhankelijke beweging kan plaatsvinden. Op deze basis kan een fysisch systeem slechts een maximum van zes DOF (6DOF) hebben omdat het slechts op zes manieren in de 3D-ruimte kan bewegen (drie lineaire en drie hoekige).

De term "oriëntatie" verwijst naar de fysieke positie of richting van iets ten opzichte van iets anders. In het geval van een smartphone bepaalt de oriëntatie of de telefoon plat op zijn rug ligt, op één rand rechtop staat (in staande of liggende positie), of ergens daartussenin.

Een manier om dit te bekijken is dat de oriëntatie van een apparaat kan worden gespecificeerd door de waarden van alle mogelijke DOFs op een bepaald tijdstip tX. Ter vergelijking: de beweging van een apparaat wordt bepaald door de verschillen tussen de waarden van alle mogelijke DOF's tussen de tijdstippen t0 en t1.

Sensoren zoals versnellingsmeters, gyroscopen en magnetometers zijn verkrijgbaar met één, twee of drie assen. Een versnellingsmeter met 1 as detecteert bijvoorbeeld alleen veranderingen langs de drie assen waarop hij is uitgelijnd; een sensor met 2 assen detecteert veranderingen langs twee van de drie assen; en een sensor met 3 assen detecteert veranderingen langs alle drie de assen.

Indien van een sensorplatform wordt gezegd dat het meer dan zes assen volgt, geeft dit aan dat het een hogere mate van nauwkeurigheid biedt door meerdere gegevenspunten langs (of rond) de X-, Y- en Z-as te volgen. Een voorbeeld is een set versnellingsmeters met 12 assen die gebruik maken van lineaire versnellingsmetingen van vier versnellingsmeters met 3 assen.

Helaas is het gebruikelijk DOF te verwarren met het aantal assen. Zo kan de combinatie van een 3-assige versnellingsmeter, een 3-assige gyroscoop en een 3-assige magnetometer door sommige verkopers worden omschreven als een 9DOF-sensor, hoewel het correcter zou zijn deze te omschrijven als een 6DOF 9-assige sensor.

Sensorfusie

Een versnellingsmeter meet niet alleen de versnelling, maar ook de zwaartekracht. In het geval van een smartphone bijvoorbeeld kan een versnellingsmeter met 3 assen bepalen welke richting omlaag is, zelfs als de gebruiker stilstaat en het toestel onbeweeglijk is.

Een 3-assige versnellingsmeter kan ook worden gebruikt om de verticale en horizontale oriëntatie van het toestel te bepalen, dat deze informatie kan gebruiken om zijn display in portret- of landschapsmodus te presenteren. De versnellingsmeter alleen kan echter niet worden gebruikt om de oriëntatie van de smartphone ten opzichte van het magnetische veld van de aarde te bepalen. Dit vermogen is nodig voor taken zoals planetarium-apps waarmee de gebruiker sterren, planeten en sterrenbeelden aan de nachtelijke hemel kan identificeren en lokaliseren door het toestel gewoon naar het gewenste gebied te richten. In dit geval is een magnetometer vereist. Als de smartphone altijd plat op een tafel zou worden gelegd, zou een 1-assige magnetometer volstaan. Aangezien een smartphone echter in elke oriëntatie kan worden gebruikt, is het noodzakelijk een 3-assige magnetometer te gebruiken.

Versnellingsmeters worden niet beïnvloed door het omringende magnetische veld, maar wel door beweging en trillingen. Ter vergelijking: magnetometers worden niet per se beïnvloed door beweging en trilling, maar wel door magnetische materialen en elektromagnetische velden in de omgeving.

Hoewel een 3-assige versnellingsmeter ook kan worden gebruikt om rotatiegegevens af te leiden, levert een 3-assige gyroscoop nauwkeuriger gegevens betreffende het impulsmoment. Gyroscopen werken goed wanneer het erom gaat de draaisnelheid te meten, en zij worden niet beïnvloed door versnelling in een lineaire richting of door magnetische velden. Gyroscopen hebben echter de neiging een kleine "residuele" rotatiesnelheid te genereren, zelfs wanneer zij stationair worden. Dit staat bekend als "nul-drift-offset." Het probleem ontstaat als de gebruiker met behulp van de gyroscoop een absolute hoek wil bepalen; in dat geval moet de rotatiesnelheid worden geïntegreerd om de hoekpositie te verkrijgen. Het probleem met integratie in dit scenario is dat fouten zich kunnen opstapelen. Een kleine fout van slechts 0,01 graden bij de eerste meting kan bijvoorbeeld na 100 metingen uitgroeien tot een volledige graad. Dit staat bekend als "gyro drift."

De term "sensorfusie" verwijst naar het combineren van zintuiglijke gegevens uit verschillende bronnen op zodanige wijze dat de resulterende informatie minder onzekerheid bevat dan het geval zou zijn indien de gegevens uit die bronnen afzonderlijk zouden worden gebruikt.

In het geval van een sensor-array bestaande uit een 3-assige versnellingsmeter, 3-assige gyroscoop en 3-assige magnetometer, bijvoorbeeld, kunnen de gegevens van de versnellingsmeter en de magnetometer worden gebruikt om de gyrodrift te elimineren. Intussen kunnen de gegevens van de gyro worden gebruikt ter compensatie van eventuele door trillingen veroorzaakte ruis van de versnellingsmeter en door magnetisch materiaal/veld veroorzaakte ruis van de magnetometer.

Het resultaat van het gebruik van sensorfusie is dat de nauwkeurigheid van de output groter is dan de nauwkeurigheid van de afzonderlijke sensoren.

Introductie van enkele representatieve sensors

Afhankelijk van de toepassing kan de ontwerper besluiten slechts één type bewegings-/oriëntatiesensor te gebruiken in de vorm van een versnellingsmeter, gyroscoop of magnetometer.

Een goede inleidende versnellingsmeter is de 2019 BOB van Adafruit, die beschikt over een 3-assige versnellingsmeter met een 14-bits analoog-digitaal geconverteerd (ADC) (figuur 2).

Afbeelding van 2019 BOB van AdafruitAfbeelding 2: De 2019 BOB van Adafruit is voorzien van een 3-assige versnellingsmeter die kan worden gebruikt om beweging, kanteling en basisoriëntatie te detecteren. (Afbeelding: Adafruit)

De uiterst nauwkeurige 3-assige sensor heeft een groot bereik van ±2 g tot ±8 g en kan worden gebruikt om beweging, helling en basisoriëntatie te detecteren. De sensor vereist een voeding van 3,3 volt, maar de BOB bevat een low-dropout 3,3 volt regulator en een level shifting circuit, waardoor hij veilig kan worden gebruikt met 3 volt of 5 volt voeding en logica. Communicatie tussen de BOB en de Arduino (of een andere microcontroller) wordt uitgevoerd met behulp van I2C.

Voor toepassingen die alleen een gyroscopische sensor nodig hebben om draaiende en draaiende bewegingen te detecteren, is een goed introductiebord Adafruit's 1032 BOB met de L3GD20H 3-assige gyroscoop van STMicroelectronics. De L3GD20H ondersteunt zowel I2C- als SPI-interfaces naar de Arduino (of een andere microcontroller) en kan worden ingesteld op een schaal van ±250, ±500, of ±2000 graden per seconde voor een groot bereik aan gevoeligheid. Ook hier heeft de sensor een 3,3 volt voeding nodig, maar de BOB bevat een 3,3 volt regulator en schakeling voor niveauverschuiving, zodat hij kan worden gebruikt met zowel 3 volt als 5 volt voeding en logica.

Evenzo, voor toepassingen die alleen een magnetische sensor vereisen, is een goede evaluatie optie de 4479 BOB van Adafruit, die de LIS3MDL 3-assige magnetometer van STMicroelectronics bevat. De LIS3MDL kan bereiken waarnemen van ±4 gauss (±400 microtesla (µT)) tot ±16 gauss (±1600 µT of 1,6 millitesla (mT)). Communicatie tussen de BOB en de Arduino (of een andere microcontroller) wordt uitgevoerd met behulp van I2C. Ook hier is de BOB voorzien van een 3,3 volt regulator en level shifting schakeling waardoor hij veilig is voor gebruik met 3 volt of 5 volt voeding en logica.

Het is heel gebruikelijk dat meerdere sensors in combinatie met elkaar worden gebruikt. Een versnellingsmeter kan bijvoorbeeld worden gebruikt in combinatie met een gyroscoop om taken uit te voeren als 3D-bewegingsregistratie en traagheidsmeting; dat wil zeggen, om de gebruiker in staat te stellen te bepalen hoe een voorwerp zich in een 3D-ruimte beweegt. Een voorbeeld van zo'n combo is Adafruit's 4480 BOB (Afbeelding 3), die de LSM6DS33-sensorchip van STMicroelectronics bevat.

Afbeelding van 4480 BOB van AdafruitAfbeelding 3: De 4480 BOB van Adafruit is uitgerust met de LSM6DS33TR 3-assige versnellingsmeter en een 3-assige gyroscoop die kunnen worden gebruikt om taken uit te voeren zoals 3D motion capture en traagheidsmeting. (Afbeelding: Adafruit)

De 3-assige versnellingsmeter kan gegevens verschaffen over de richting van de aarde door de zwaartekracht te meten, en hoe snel het bord versnelt in 3D-ruimte. Ondertussen kan de 3-assige gyroscoop draaiing en verdraaiing meten. Net als bij de andere sensor-BOB's die eerder zijn gepresenteerd, is de 4480 BOB voorzien van een 3,3 volt regulator en level shifting circuits, waardoor hij veilig kan worden gebruikt met 3 volt of 5 volt voeding en logica. De sensorgegevens zijn toegankelijk via zowel I2C- als SPI-interfaces, zodat hij kan worden gebruikt met een Arduino (of andere microcontroller) zonder ingewikkelde hardware-instellingen.

Een ander voorbeeld van een dual-sensor BOB is de 1120 van Adafruit, die de combinatie van een 3-assige versnellingsmeter en een 3-assige magnetometer in de vorm van een LSM303-sensorchip van STMicroelectronics. De communicatie tussen de microcontroller en de 1120 verloopt via een I2C-interface, en de BOB bevat een 3,3 volt regulator en level shifting circuits, waardoor hij veilig kan worden gebruikt met 3 volt of 5 volt voeding en logica.

Sommige toepassingen vereisen het gebruik van versnellingsmeters, gyroscopen en magnetometers. In dit geval is een nuttige inleidende BOB de 3463 van Adafruit, die twee sensor chips bevat: een 3-assige gyroscoop, en een 3-assige versnellingsmeter met een 3-assige magnetometer. De communicatie tussen de BOB en de microcontroller verloopt via een SPI-interface. Ook een 3,3 volt regulator en level shifting circuits zijn inbegrepen, waardoor het veilig is voor gebruik met 3 volt of 5 volt voeding en logica.

Een voordeel van de 3463 BOB is dat de ontwerper onbewerkte toegang heeft tot de gegevens van de drie sensoren. Een nadeel hiervan is dat het gebruik van deze sensor (manipulatie en verwerking van de gegevens) ongeveer 15 kilobyte (Kbyte) van het flashgeheugen van de microcontroller zal vergen en veel klokcycli zal vergen.

Als alternatief heeft Adafruit's 2472 BOB een BNO055-sensorchip van Bosch. De BNO055 omvat een 3-assige versnellingsmeter, een 3-assige gyroscoop en een 3-assige magnetometer, allemaal in één enkel pakket (Afbeelding 4).

Afbeelding van BNO055-sensor op Adafruit's 2472 BOBAfbeelding 4: Naast een 3-assige versnellingsmeter, 3-assige gyroscoop en 3-assige magnetometer, bevat de BNO055 sensor op Adafruit's 2472 BOB ook een Arm Cortex-M0 processor die de sensorfusie uitvoert. (Afbeelding: Adafruit)

Bovendien bevat de BNO055 ook een 32-bit Arm Cortex-M0-processor, die de ruwe gegevens van de drie sensoren opneemt, een gesofisticeerde sensorfusie uitvoert en de ontwerpers verwerkte informatie bezorgt in vormen die ze kunnen gebruiken: quaternionen, Euler hoeken en vectors. Meer specifiek kunnen ontwerpers via de I2C-interface van de 2472 BOB snel en gemakkelijk toegang krijgen tot het volgende:

  • Absolute oriëntatie(Euler Vector, 100 Hertz (Hz)): Drie-assige oriëntatiegegevens gebaseerd op een bol van 360°.
  • Absolute oriëntatie(Quatenrion, 100 Hz): Vierpunts quaternionuitvoer voor nauwkeurigere gegevensmanipulatie.
  • Hoeksnelheidsvector(100 Hz): Drie-as van "rotatiesnelheid" in rad/s.
  • Versnellingsvector (100 Hz): Drie-as versnelling (zwaartekracht + lineaire beweging) in meter per seconde in het kwadraat (m/s2).
  • Vector van de magnetische veldsterkte(20 Hz): Drie-assige magnetische velddetectie (in µT).
  • Lineaire versnellingsvector(100 Hz): Drieassige lineaire versnellingsgegevens (versnelling min zwaartekracht) in m/s2.
  • Zwaartekrachtvector(100 Hz): Drie-as gravitatieversnelling (zonder beweging) in m/s2.
  • Temperatuur(1 Hz): Omgevingstemperatuur in graden Celsius.

Doordat de sensorfusie op de chip wordt uitgevoerd, komen het geheugen en de rekencycli van de hoofdmicrocontroller vrij, wat ideaal is voor ontwerpers die goedkope, real-time systemen maken. Bovendien kan het moeilijk en tijdrovend zijn om algoritmen voor sensorfusie onder de knie te krijgen. Doordat de sensorfusie op de chip wordt uitgevoerd, kunnen systeemontwikkelaars binnen enkele minuten aan de slag, in plaats van dagen of weken als ze algoritmen van de grond af aan moeten implementeren.

Conclusie

Veel ontwerpers willen bewegings- en oriëntatiesensors in hun ontwerpen opnemen, maar weten niet goed waar te beginnen. Voor ontwerpers die niet gewend zijn met deze toestellen te werken, kan het een uitdaging zijn vertrouwd te raken met sensoren van verschillende fabrikanten. Een manier om te beginnen met experimenteren en prototypes te maken is het gebruik van goedkope, open-source microcontroller ontwikkelborden zoals de Arduino, samen met goedkope open-source sensor BOBs met sensors van verschillende leveranciers.

Verder lezen:

  1. Gebruik Arduino BOB's om snel sensors en randapparatuur te evalueren
  2. Het IoT, IIoT en AIoT, en waarom zij de toekomst van industriële automatisering zijn
  3. Breng op eenvoudige wijze kunstmatige intelligentie in elk industrieel systeem
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.

Achtergrondinformatie over deze auteur

Image of Max Maxfield

Clive "Max" Maxfield

Clive "Max" Maxfield received his BSc in Control Engineering in 1980 from Sheffield Hallam University, England and began his career as a designer of central processing units (CPUs) for mainframe computers. Over the years, Max has designed everything from silicon chips to circuit boards and from brainwave amplifiers to steampunk Prognostication Engines (don't ask). He has also been at the forefront of Electronic Design Automation (EDA) for more than 30 years.

Max is the author and/or co-author of a number of books, including Designus Maximus Unleashed (banned in Alabama), Bebop to the Boolean Boogie (An Unconventional Guide to Electronics), EDA: Where Electronics Begins, FPGAs: Instant Access, and How Computers Do Math. Check out his “Max’s Cool Beans” blog.

Over deze uitgever

De Noord-Amerikaanse redacteurs van DigiKey