MEMS-Sensoren Mit Arduino Bewegungs- und Orientierungssensoren in Systeme integrieren

Von Rolf Horn *

Anbieter zum Thema

Entwickler müssen ihre Systeme zunehmend mit Orientierungs- und Bewegungsfunktionen ausstatten, sind aber unsicher, wo sie anfangen sollen. Ein Arduino könnte dabei helfen.

Arduino: Die preiswerten Boards eignen sich auch für industrielle Projekte.
Arduino: Die preiswerten Boards eignen sich auch für industrielle Projekte.
(Bild: Arduino.cc)

Sensoren auf der Basis von Halbleiter- (Festkörper-) und mikroelektromechanischen Systemtechnologien (MEMS) ermögllchen dank ihrer geringen Größe und der niedrigen Kosten den Einsatz von Bewegungs- und Orientierungssensoren in einer Vielzahl von Systemen, einschließlich Drohnen, Robotern, Smartphones und Tablet-Computern. Diese Sensoren werden auch in vorausschauenden Wartungssystemen für das Industrielle Internet der Dinge (IIoT) eingesetzt, die Daten für die Analyse mit Künstlicher Intelligenz (KI) und Maschinellem Lernen (ML) am Netzwerkrand bereitstellen.

Die wichtigsten Arten von MEMS-Sensoren, die zur Erkennung von Bewegung und Orientierung verwendet werden, sind Beschleunigungsmesser, Gyroskope, Magnetometer und verschiedene Kombinationen. Obwohl viele Entwickler daran interessiert sind, Bewegungs- und Orientierungssensoren in ihre Entwürfe zu integrieren, sind sie sich oft nicht sicher, wo sie anfangen sollen.

Eine mögliche Option stellt die Verwendung von Evaluierungs- und Entwicklungskits dar, die von IC-Anbietern als Unterstützung für ihre Lösungen angeboten werden. Geht man von einem guten Maß an Unterstützung aus, spricht absolut nichts gegen diesen Ansatz. Allerdings muss sich der Entwickler entweder darauf beschränken, nur die Sensoren eines einzigen Herstellers zu verwenden, oder er muss die Software-Tools mehrerer Sensorhersteller erlernen.

Alternativ können Entwickler, die es nicht gewohnt sind, mit Bewegungs- und Orientierungssensoren zu arbeiten, vom Experimentieren und Prototyping mit kostengünstigen Open-Source-Mikrocontroller-Entwicklungsboards von Arduino profitieren, zusammen mit seiner integrierten Entwicklungsumgebung (IDE), in Verbindung mit kostengünstigen Open-Source-Sensor-Breakout-Boards (BOBs), die Sensoren von verschiedenen Herstellern enthalten.

Um Entwicklern den Einstieg zu erleichtern, bietet dieser Artikel ein Glossar der Sensorterminologie und eine kurze Diskussion über die Rolle von Bewegungs- und Orientierungssensoren. Anschließend wird eine Auswahl solcher Sensor-BOBs von Adafruit und ihre Verwendung vorgestellt.

Glossar der Sensorterminologie

Zwei Begriffe, die häufig im Zusammenhang mit Bewegungs- und Orientierungssensoren verwendet werden, sind „Anzahl der Achsen“ und „Freiheitsgrade“ (DOF). Leider werden diese Begriffe oft synonym verwendet, was zu Verwirrung führen kann.

Im Allgemeinen kann der Begriff Achse verwendet werden, um die Dimensionalität der Daten zu beschreiben, die von einem System verwendet werden. Im Zusammenhang mit Bewegung und Orientierung gibt es drei Achsen von Interesse, X, Y und Z.

Bild 1: Ein physikalisches System kann immer nur maximal sechs Freiheitsgrade haben, weil es nur sechs Arten gibt, wie es sich im 3D-Raum bewegen kann: drei lineare und drei winklige.
Bild 1: Ein physikalisches System kann immer nur maximal sechs Freiheitsgrade haben, weil es nur sechs Arten gibt, wie es sich im 3D-Raum bewegen kann: drei lineare und drei winklige.
(Bild: Max Maxfield)

Die Art und Weise, in der diese Achsen visualisiert werden, hängt vom jeweiligen System ab. Bei einem Smartphone im Hochformat beispielsweise ist die X-Achse horizontal in Bezug auf den Bildschirm und zeigt nach rechts, die Y-Achse ist vertikal in Bezug auf den Bildschirm und zeigt nach oben, und die Z-Achse, die senkrecht zu den beiden anderen Achsen verläuft, gilt als aus dem Bildschirm herausweisend (Bild 1).

Im Hinblick auf ein Gerät wie ein Smartphone gibt es zwei Arten von Bewegungen, die von Interesse sind: lineare und Winkelbewegungen. Im Falle einer linearen Bewegung kann sich das System auf der X-Achse von Seite zu Seite, auf der Y-Achse nach oben und unten und auf der Z-Achse vorwärts und rückwärts bewegen. Im Falle einer Winkelbewegung kann sich das System um eine oder mehrere der drei Achsen drehen.

Im Zusammenhang mit Bewegung beziehen sich Freiheitsgrade auf jede der Richtungen, in denen unabhängige Bewegung auftreten kann. Auf dieser Grundlage kann ein physikalisches System immer nur ein Maximum von sechs Freiheitsgraden (6DOF) haben, weil es nur sechs Möglichkeiten gibt, sich im 3D-Raum zu bewegen (drei lineare und drei winklige).

Der Begriff „Orientierung“ bezieht sich auf die physische Position oder Richtung von etwas relativ zu etwas anderem. Im Falle eines Smartphones bestimmt die Orientierung, ob das Telefon flach auf dem Rücken liegt, auf einer Kante steht (entweder im Hoch- oder Querformat) oder irgendwo dazwischen.

Eine Möglichkeit der Interpretation ist, dass die Orientierung eines Geräts durch die Werte aller möglichen Freiheitsgrade zu einem bestimmten Zeitpunkt tX angegeben werden kann. Im Vergleich dazu wird die Bewegung eines Geräts durch die Unterschiede zwischen den Werten aller möglichen Freiheitsgrade zwischen den Zeiten t0 und t1 bestimmt.

Jetzt Newsletter abonnieren

Verpassen Sie nicht unsere besten Inhalte

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung

Sensoren wie Beschleunigungsmesser, Gyroskope und Magnetometer sind für eine, zwei oder drei Achsen erhältlich. Ein 1-Achsen-Beschleunigungsmesser erkennt beispielsweise nur Änderungen entlang derjenigen der drei Achsen, auf die er ausgerichtet ist; ein 2-Achsen-Sensor erkennt Änderungen auf zwei der drei Achsen; und ein 3-Achsen-Sensor erkennt Änderungen auf allen drei Achsen.

Wenn eine Sensorplattform als mehr als sechs Achsen verfolgend beschrieben wird, bedeutet dies, dass sie einen höheren Grad an Genauigkeit bietet, indem sie mehrere Datenpunkte entlang (oder um) die X-, Y- und Z-Achse verfolgt. Ein Beispiel ist eine 12-Achsen-Beschleunigungsmesser-Suite, die lineare Beschleunigungsmessungen von vier 3-Achsen-Beschleunigungsmessern verwendet.

Leider ist es üblich, Freiheitsgrade mit der Anzahl der Achsen zu verwechseln. Beispielsweise kann die Kombination aus einem 3-Achsen-Beschleunigungsmesser, 3-Achsen-Gyroskop und 3-Achsen-Magnetometer von einigen Anbietern als Sensor mit neun Freiheitsgraden (9DOF) beschrieben werden, obwohl sie korrekterweise als 9-Achsen-Sensor mit sechs Freiheitsgraden (6DOF) beschrieben werden sollte.

Sensorfusion

Ein Beschleunigungsmesser misst nicht nur die Beschleunigung, sondern auch die Schwerkraft. Im Falle eines Smartphones kann beispielsweise ein 3-Achsen-Beschleunigungsmesser feststellen, welche Richtung nach unten zeigt, selbst wenn der Benutzer stillsteht und das Gerät bewegungslos ist.

Ein 3-Achsen-Beschleunigungsmesser kann auch verwendet werden, um die vertikale und horizontale Ausrichtung des Geräts zu bestimmen, das diese Informationen nutzen kann, um seine Anzeige im Hoch- oder Querformat darzustellen. Der Beschleunigungsmesser allein kann jedoch nicht dazu verwendet werden, die Ausrichtung des Smartphones in Bezug auf das Erdmagnetfeld zu bestimmen. Diese Fähigkeit ist für Aufgaben wie Planetariumsapplikationen erforderlich, die es dem Benutzer ermöglichen, Sterne, Planeten und Sternbilder am Nachthimmel zu identifizieren und zu lokalisieren, indem das Gerät einfach auf den interessierenden Bereich gerichtet wird. In diesem Fall ist ein Magnetometer erforderlich. Würde das Smartphone immer flach auf einen Tisch gelegt, dann würde ein 1-Achsen-Magnetometer ausreichen. Da ein Smartphone jedoch in jeder beliebigen Ausrichtung verwendet werden kann, ist es notwendig, ein 3-Achsen-Magnetometer einzusetzen.

Beschleunigungsmesser werden nicht durch das umgebende Magnetfeld beeinflusst, aber sie werden durch Bewegung und Vibration beeinflusst. Im Vergleich dazu werden Magnetometer an sich nicht durch Bewegung und Vibration beeinflusst, aber sie können durch magnetische Materialien und elektromagnetische Felder in der Umgebung beeinflusst werden.

Obwohl ein 3-Achsen-Beschleunigungsmesser auch zur Ableitung von Rotationsdaten verwendet werden kann, liefert ein 3-Achsen-Gyroskop genauere Daten bezüglich des Drehimpulses. Gyroskope funktionieren gut, wenn es um die Messung der Rotationsgeschwindigkeit geht, und sie werden weder von der Beschleunigung in linearer Richtung noch von Magnetfeldern beeinflusst. Gyroskope neigen jedoch dazu, eine kleine „Rest“-Drehzahl auszugeben, selbst wenn sie sich nicht mehr bewegen. Dies wird als „Null-Drift-Offset“ bezeichnet.

Das Problem entsteht, wenn der Benutzer versucht, einen absoluten Winkel mit dem Gyroskop zu bestimmen. In diesem Fall ist es notwendig, die Drehgeschwindigkeit zu integrieren, um die Winkelposition zu erhalten. Das Problem bei der Integration in diesem Szenario ist, dass sich Fehler aufsummieren können. Ein kleiner Fehler von nur 0,01° bei der ersten Messung kann z.B. nach 100 Messungen zu einem vollen Grad anwachsen. Dies wird als „Kreisel-Drift“ bezeichnet.

Der Begriff „Sensorfusion“ bezieht sich auf die Kombination von sensorischen Daten, die aus unterschiedlichen Quellen stammen, so dass die resultierende Information eine geringere Unsicherheit aufweist, als es möglich wäre, wenn die Daten aus diesen Quellen einzeln verwendet würden.

Im Falle einer Sensoranordnung, die beispielsweise aus einem 3-Achsen-Beschleunigungsmesser, einem 3-Achsen-Gyroskop und einem 3-Achsen-Magnetometer besteht, können die Daten des Beschleunigungsmessers und des Magnetometers verwendet werden, um die Kreiseldrift aufzuheben. Daneben können die Daten des Gyroskops verwendet werden, um das Magnetometer beeinflussende schwingungsinduzierte Rauschen des Beschleunigungsmessers und das durch magnetische Materialien/Felder induzierte Rauschen zu kompensieren.

Das Ergebnis der Verwendung der Sensorfusion ist, dass die Genauigkeit der Ausgabe die Genauigkeit der einzelnen Sensoren übersteigt.

Vorstellung einiger repräsentativer Sensoren

Je nach Anwendung kann sich der Entwickler dafür entscheiden, nur einen einzigen Typ eines Bewegungs-/Orientierungssensors in Form eines Beschleunigungsmessers, Gyroskops oder Magnetometers zu verwenden. Ein guter Einstiegsbeschleunigungsmesser ist der BOB 2019 von Adafruit, der über einen 3-Achsen-Beschleunigungsmesser mit einem 14-Bit-Analog/Digital-Wandler (ADC) verfügt (Bild 2).

Bild 2: Das BOB 2019 von Adafruit verfügt über einen 3-Achsen-Beschleunigungsmesser, der zur Erkennung von Bewegung, Neigung und einfacher Orientierung verwendet werden kann.
Bild 2: Das BOB 2019 von Adafruit verfügt über einen 3-Achsen-Beschleunigungsmesser, der zur Erkennung von Bewegung, Neigung und einfacher Orientierung verwendet werden kann.
(Bild: Digi-KeyAdafruit)

Der hochpräzise 3-Achsen-Sensor bietet einen großen Bereich von ±2 bis ±8 g und kann zur Erkennung von Bewegung, Neigung und einfacher Orientierung verwendet werden. Der Sensor benötigt eine 3,3-V-Versorgung, aber der BOB enthält einen 3,3-V-Regler mit niedrigem Spannungseinbruch und eine Pegelwandlerschaltung, wodurch er sicher für den Einsatz mit 3- oder 5-V-Versorgung und Logik ist. Die Kommunikation zwischen dem BOB und dem Arduino (oder einem anderen Mikrocontroller) erfolgt über I2C.

Für Anwendungen, die nur einen Magnetsensor erfordern, ist das BOB 4479 von Adafruit mit dem 3-Achsen-Magnetometer LIS3MDL von STMicroelectronics ein gutes Evaluierungsboard. Der LIS3MDL kann Messbereiche von ±4 Gauß (±400 Mikrotesla (µT)) bis zu ±16 Gauß (±1600 µT oder 1,6 mT) erfassen. Die Kommunikation zwischen dem BOB und dem Arduino (oder einem anderen Mikrocontroller) erfolgt über I2C. Auch hier enthält das BOB einen 3,3-V-Regler und eine Pegelwandlerschaltung, die den Einsatz mit 3- oder 5-V-Stromversorgung und -Logik erlaubt.

Bild 3: Das BOB 4480 von Adafruit ist mit dem 3-Achsen-Beschleunigungsmesser LSM6DS33TR und einem 3-Achsen-Gyroskop ausgestattet, die für Aufgaben wie 3D-Bewegungserfassung und Trägheitsmessung eingesetzt werden können.
Bild 3: Das BOB 4480 von Adafruit ist mit dem 3-Achsen-Beschleunigungsmesser LSM6DS33TR und einem 3-Achsen-Gyroskop ausgestattet, die für Aufgaben wie 3D-Bewegungserfassung und Trägheitsmessung eingesetzt werden können.
(Bild: Adafruit)

Es ist sehr üblich, dass mehrere Sensoren in Verbindung miteinander verwendet werden. Zum Beispiel kann ein Beschleunigungsmesser in Verbindung mit einem Gyroskop verwendet werden, um Aufgaben wie 3D-Bewegungserfassung und Trägheitsmessung durchzuführen, d.h. um dem Benutzer zu ermöglichen, festzustellen, wie sich ein Objekt in einem 3D-Raum bewegt. Ein Beispiel für eine solche Kombination ist das BOB 4480 von Adafruit (Bild 3), das mit dem Sensorchip LSM6DS33 von STMicroelectronics ausgestattet ist.

Der 3-Achsen-Beschleunigungsmesser kann durch Messung der Schwerkraft Daten darüber liefern, welche Richtung zur Erde zeigt und wie schnell das Board im 3D-Raum beschleunigt wird. Währenddessen kann das 3-Achsen-Gyroskop Rotation und Verdrehung messen. Wie die anderen bereits vorgestellten Sensor-BOBs enthält auch das BOB 4480 einen 3,3-V-Regler und eine Schaltung zur Pegelwandlung, so dass es sicher mit 3- oder 5-V-Stromversorgung und -Logik betrieben werden kann. Außerdem kann auf die Sensordaten sowohl über I2C- als auch über SPI-Schnittstellen zugegriffen werden, so dass sie ohne komplizierte Hardware-Einrichtung mit einem Arduino (oder einem anderen Mikrocontroller) verwendet werden können.

Ein weiteres Beispiel für ein Dual-Sensor-BOB ist das 1120 von Adafruit, das die Kombination aus einem 3-Achsen-Beschleunigungsmesser und einem 3-Achsen-Magnetometer in Form eines LSM303-Sensorchips von STMicroelectronics aufweist. Die Kommunikation zwischen dem Mikrocontroller und dem 1120 erfolgt über eine I2C-Schnittstelle, und das BOB verfügt über einen 3,3-V-Regler und eine Pegelwandlerschaltung, so dass es sicher für den Einsatz mit 3- oder 5-V-Stromversorgung und -Logik geeignet ist.

Einige Anwendungen erfordern den Einsatz von Beschleunigungsmessern, Gyroskopen und Magnetometern. Für diesen Fall ist das Einstiegs-BOB 3463 von Adafruit mit zwei Sensorchips ausgestattet: einem 3-Achsen-Gyroskop und einem 3-Achsen-Beschleunigungsmesser mit einem 3-Achsen-Magnetometer. Die Kommunikation zwischen BOB und Mikrocontroller wird über eine SPI-Schnittstelle realisiert. Außerdem sind ein 3,3-V-Regler und eine Pegelwandlerschaltung enthalten, so dass es sicher mit 3- oder 5-V-Stromversorgung und -Logik betrieben werden kann.

Ein Vorteil des BOB 3463 ist, dass der Entwickler Zugriff auf die Rohdaten der drei Sensoren erhält. Ein entsprechender Nachteil ist, dass die Verwendung dieses Sensors (Manipulation und Verarbeitung seiner Daten) etwa 15 KByte des Flash-Speichers des Mikrocontrollers benötigt und viele Taktzyklen in Anspruch nimmt.

Bild 4: Zusätzlich zu einem 3-Achsen-Beschleunigungsmesser, 3-Achsen-Gyroskop und 3-Achsen-Magnetometer enthält der BNO055-Sensor auf dem BOB 2472 von Adafruit auch einen Arm-Cortex-M0-Prozessor, der die Sensorfusion durchführt.
Bild 4: Zusätzlich zu einem 3-Achsen-Beschleunigungsmesser, 3-Achsen-Gyroskop und 3-Achsen-Magnetometer enthält der BNO055-Sensor auf dem BOB 2472 von Adafruit auch einen Arm-Cortex-M0-Prozessor, der die Sensorfusion durchführt.
(Bild: Digi-KeyAdafruit)

Als Alternative bietet das BOB 2472 von Adafruit den Sensorchip BNO055 von Bosch. Der BNO055 umfasst einen 3-Achsen-Beschleunigungsmesser, ein 3-Achsen-Gyroskop und ein 3-Achsen-Magnetometer, die alle in einem einzigen Paket enthalten sind (Bild 4).

Darüber hinaus enthält das BNO055 auch einen 32-Bit-Arm-Cortex-M0-Prozessor, der die Rohdaten der drei Sensoren aufnimmt, eine ausgeklügelte Sensorfusion durchführt und den Entwicklern die verarbeiteten Informationen in Form von Quaternionen, Eulerwinkeln und Vektoren zur Verfügung stellt. Genauer gesagt können Entwickler über die I2C-Schnittstelle des BOB 2472 schnell und einfach auf Folgendes zugreifen:

  • Absolute Ausrichtung (Euler-Vektor, 100 Hz): Dreiachsige Orientierungsdaten basierend auf einer 360°-Kugel.
  • Absolute Ausrichtung (Quaternionen, 100 Hz): Vier-Punkt-Quaternionen-Ausgabe für eine genauere Datenmanipulation.
  • Winkelgeschwindigkeitsvektor (100 Hz): Drei-Achsen-„Rotationsgeschwindigkeit“ in rad/s.
  • Beschleunigungsvektor (100 Hz): Drei-Achsen-Beschleunigung (Schwerkraft + lineare Bewegung) in m/s2.
  • Magnetischer Feldstärkevektor (20 Hz): Drei-Achsen-Magnetfeldmessung (in µT).
  • Linearer Beschleunigungsvektor (100 Hz): Dreiachsige Daten der linearen Beschleunigung (Beschleunigung minus Erdbeschleunigung) in m/s2.
  • Schwerkraft-Vektor (100 Hz): Drei-Achsen-Gravitationsbeschleunigung (abzüglich jeder Bewegung) in m/s2.
  • Temperatur (1 Hz): Umgebungstemperatur in °C.

Die Durchführung der Sensorfusion auf dem Chip setzt Speicher- und Verarbeitungsressourcen des Hauptmikrocontrollers frei, was ideal für Entwickler ist, die kostengünstige Echtzeitsysteme entwickeln. Darüber hinaus können Sensorfusionsalgorithmen schwierig und zeitaufwändig zu beherrschen sein. Wenn die Sensorfusion auf dem Chip durchgeführt wird, können Systementwickler innerhalb von Minuten einsatzbereit sein, im Gegensatz zu Tagen oder Wochen, wenn sie Algorithmen von Grund auf neu implementieren müssen.

Diesen Beitrag lesen Sie auch in der Fachzeitschrift ELEKTRONIKPRAXIS Ausgabe 3/2021 (Download PDF)

* Rolf Horn ist Applikations-Ingenieur bei Digi-Key.

(ID:47062981)