Gyroskope dienen dazu, Positionsveränderungen wahrzunehmen. Dafür war früher eine recht aufwendige und teure Apparatur erforderlich, heute übernimmt das ein winziger Chip für wenige Euro.
Lage- und Beschleunigungssensoren lassen sich aus dem heutigen Leben gar nicht mehr wegdenken. Es ist uns oft gar nicht bewusst, wie viele der Geräte, mit denen wir täglich in Berührung kommen, über solche Messfühler verfügen. So steuern entsprechende Sensortypen etwa das ESP (Elektronisches Stabilitätsprogramm) oder den Airbag in Ihrem Auto maßgeblich mit. Auch in Kombination mit dem RasPi lassen sie sich nutzen, etwa in Form des 3-Achsen-Lage- und Beschleunigungssensors MPU6050.
Technische Daten
Der MPU6050 kommt in einem für Bastler schwer zu verlötenden QFN-Package. Alternativ gibt es ein fertiges Modul [1], bei dem die wichtigsten Kontakte schon herausführen (Abbildung 1).

Abbildung 1: Pinbelegung und Achsen des MPU6050. Die im Workshop verwendete Variante befindet sich bereits auf einer beschrifteten Platine.
Der Chip meldet sich am I2C-Bus über die Adresse 0x68h oder 0x69h, je nachdem ob der ADD-Anschluss auf 0 Volt oder auf 3,3 Volt liegt. Das 52 Seiten umfassende Datenblatt [2] beschreibt zwar vieles, lässt aber ausgerechnet die Register des Chips aus. Diese finden sich in einem anderen Dokument [3] mit zusätzlich 46 Seiten. Die Tabelle “Wichtige Register” zeigt eine Übersicht über die interessantesten davon.
Der Chip misst Lage und Beschleunigungswerte mit einer Genauigkeit von 16 Bit, verwendet intern jedoch 8-Bit-Register. Für exakte Messwerte muss man also zwei Register einlesen. Der Chip erzeugt die Werte intern analog und stellt sie über separate A/D-Wandler in den Registern bereit. Zusätzlich enthält der MPU6050 noch einen Temperatursensor, der sich ebenfalls mit einer Genauigkeit von 16 Bit auslesen lässt. Die Lagesensoren sind ab Werk kalibriert.
Der MPU6050 eignet sich für eine ganze Reihe von Anwendungsgebieten, wie etwa zur Lage- und Gestenerkennung in Game-Controllern, Mobiltelefonen oder Technikspielzeug (Drohnen, Roboter), zur Ergänzung von Navigationssystemen, als Sensor im Fitnessbereich oder um bei Kameras das Verwackeln von Bildern und Videos zu verhindern.
Wichtige Register
|
Register |
Funktion |
|---|---|
|
Beschleunigung |
|
|
|
X-Achse High-Byte |
|
|
X-Achse Low-Byte |
|
|
Y-Achse High-Byte |
|
|
Y-Achse Low-Byte |
|
|
Z-Achse High-Byte |
|
|
Z-Achse Low-Byte |
|
Temperatur |
|
|
|
High-Byte |
|
|
Low-Byte |
|
Lage |
|
|
|
X-Achse High-Byte |
|
|
X-Achse Low-Byte |
|
|
Y-Achse High-Byte |
|
|
Y-Achse Low-Byte |
|
|
Z-Achse High-Byte |
|
|
Z-Achse Low-Byte |
|
sonstiges |
|
|
|
Energiemanagement |
Testaufbau
Die Art des Sensors erzwingt einen beweglichen Testaufbau, sonst erhalten Sie ziemlich konstante Messwerte. Der Aufbau aus Abbildung 2 lässt in dieser Hinsicht zu wünschen übrig, genügt aber für erste Versuche. Der Einsatz flexiblerer Leitungen wäre besser. Ein Schaltplan erübrigt sich, da man den Sensor ohne zusätzliche Bauelemente mit dem RasPi verbinden kann. Die Tabelle “Verdrahtung” zeigt, welche Anschlüsse Sie mit welchen Pins des GPIO verbinden müssen.

Abbildung 2: Der Testaufbau nutzt ein etwas schwer zu bewegendes Flachbandkabel, was die Bewegungsfreiheit des Sensors einschränkt.
Verdrahtung
|
MPU6050 |
GPIO |
|---|---|
|
VCC1 |
3,3V |
|
GND9 |
GND |
|
SCL5 |
SCL |
|
SDA3 |
SCA |
Aus Teil 9 [4] dieser Reihe (auch auf der Heft-DVD) wissen Sie, wie Sie mithilfe des Pakets i2c-tools eine funktionierende I2C-Testumgebung aufbauen. Dieser Artikel greift auf das darin beschriebene Setup zurück. Mit dem Kommando i2cdetect -y 1 prüfen Sie, ob der Aufbau einwandfrei funktioniert. Der MPU6050 meldet sich unter der Adresse 0x68h am I2C-Bus.
Für einen ersten Test wecken Sie den Chip aus dem Schlafmodus, indem Sie den Wert 0x00h ins Statusregister 0x6Bh schreiben (Listing 1). Danach lesen Sie das High-Byte des Sensors für die X-Achse aus. Die Werte sollten sich ändern, sobald Sie den Sensor um die X-Achse (siehe Aufdruck auf dem Modul) drehen.
Listing 1
$ i2cset -y 1 0x68 0x6b 0x00 $ watch -n 0.5 'i2cget -y 1 0x68 0x44'
Testprogramm
Für erste Tests genügt zwar das Kommandozeilenprogramm, doch um alle Sensorwerte gleichzeitig gut zu sehen, eignet sich eine kleine GTK-Anwendung besser. Das Testprogramm soll die Werte aller sieben Sensoren des MPU6050 übersichtlich anzeigen und alle 0,1 Sekunden aktualisieren. Das in C geschriebene, schnelle GTK+ (siehe Kasten “GTK+ installieren”) bietet dafür die passende Lösung.






