MPU-6050 (GY-521) mit Arduino auslesen: Gyroskop & Beschleunigungssensor Tutorial
Willst du wissen, wie stark dein Roboter geneigt ist oder ob ein Paket während des Transports umgekippt ist? Der GY-521 mit MPU-6050-Chip liefert dir Gyroskop- und Beschleunigungsdaten in Echtzeit – für unter 3 €. In diesem Tutorial verkabelst du den Sensor per I2C, liest ihn aus und bekommst drei konkrete Projektideen.
Was ist der MPU-6050?
Der MPU-6050 ist eine sogenannte IMU (Inertial Measurement Unit) – ein Chip, der ein 3-Achsen-Gyroskop (misst Drehgeschwindigkeit) und einen 3-Achsen-Beschleunigungssensor (misst lineare Beschleunigung inkl. Erdanziehungskraft) in einem Gehäuse vereint. Auf dem GY-521-Breakout-Board ist zusätzlich ein Spannungsregler verbaut, sodass das Modul sowohl mit 3,3V als auch mit 5V betrieben werden kann.
Kommuniziert wird über I2C – du brauchst also nur zwei Datenleitungen (SDA, SCL) statt vieler einzelner Analogpins. Genau das macht den MPU-6050 zum Standard-Baustein in Drohnen, Segways, Balance-Robotern, Fitness-Trackern und Gimbal-Stabilisierungen.
Was du für dieses Tutorial brauchst
| Bauteil | Menge | ca. Preis | Link |
|---|---|---|---|
| GY-521 MPU-6050 Modul | 1x | ab 2,99 € | Zum Produkt |
| UNO R3 oder Nano V3 Board | 1x | ab 2,99 € | Zum Produkt |
| Breadboard 400 Kontakte | 1x | ab 3,49 € | Zum Produkt |
Alle Jumper-Kabel und weiteres Zubehör findest du in unserer Kategorie Verbindung & Kabel.
Schaltungsaufbau: MPU-6050 per I2C anschließen
| GY-521 Pin | UNO R3 / Nano Pin | Funktion |
|---|---|---|
| VCC | 5V (oder 3.3V) | Spannungsversorgung |
| GND | GND | Masse |
| SCL | A5 | I2C-Takt (Clock) |
| SDA | A4 | I2C-Daten |
Auf einem ESP32 nutzt du stattdessen standardmäßig GPIO 22 für SCL und GPIO 21 für SDA. Die Pins XDA, XCL und INT bleiben für dieses Grundprojekt unbeschaltet.
Bibliothek installieren
Öffne in der Arduino IDE Sketch → Bibliothek einbinden → Bibliotheken verwalten und installiere „Adafruit MPU6050". Die IDE installiert automatisch die benötigten Abhängigkeiten „Adafruit Unified Sensor" und „Adafruit BusIO" mit.
Der Code
#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>
Adafruit_MPU6050 mpu;
void setup() {
Serial.begin(115200);
while (!Serial) delay(10);
if (!mpu.begin()) {
Serial.println("MPU6050 nicht gefunden! Verkabelung pruefen.");
while (1) delay(10);
}
mpu.setAccelerometerRange(MPU6050_RANGE_8_G);
mpu.setGyroRange(MPU6050_RANGE_500_DEG);
mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);
Serial.println("MPU6050 bereit.");
delay(100);
}
void loop() {
sensors_event_t a, g, temp;
mpu.getEvent(&a, &g, &temp);
Serial.print("Beschleunigung X/Y/Z: ");
Serial.print(a.acceleration.x); Serial.print(", ");
Serial.print(a.acceleration.y); Serial.print(", ");
Serial.print(a.acceleration.z); Serial.println(" m/s^2");
Serial.print("Gyroskop X/Y/Z: ");
Serial.print(g.gyro.x); Serial.print(", ");
Serial.print(g.gyro.y); Serial.print(", ");
Serial.print(g.gyro.z); Serial.println(" rad/s");
delay(200);
}
So funktioniert's
mpu.getEvent() liest in einem Aufruf gleichzeitig Beschleunigung, Drehrate und Chiptemperatur aus. Die Beschleunigungswerte werden in m/s² ausgegeben (die Erdanziehung sorgt im Ruhezustand für ca. 9,81 auf der Z-Achse), die Gyroskopwerte in rad/s. Mit setAccelerometerRange() und setGyroRange() stellst du die Empfindlichkeit ein – kleinere Messbereiche liefern feinere Auflösung, größere vertragen heftigere Bewegungen ohne „Clipping".
Praxisprojekte mit dem MPU-6050
🌞 Neigungssensor für Solarmodule: Miss den Neigungswinkel deiner PV-Anlage und steuere per Servo die optimale Ausrichtung zur Sonne.
📦 Sturz- und Erschütterungsalarm: Erkenne per Beschleunigungsspitze, ob ein Paket während des Transports gestürzt oder zu hart abgesetzt wurde – ideal in Kombination mit einem Relais oder Buzzer als Warnsignal.
🤖 Balance-Roboter: Der MPU-6050 ist der Kern jedes selbstbalancierenden Zweirad-Roboters. Kombiniere ihn mit unserem Schrittmotor-Tutorial, um Motoren regelbasiert gegenzusteuern.
Häufige Fehler
⚠️ Sensor nicht gefunden: Meist liegt es an vertauschten SDA/SCL-Leitungen oder fehlender Masseverbindung. Prüfe außerdem, ob ein zweites I2C-Gerät an derselben Adresse (Standard: 0x68) hängt.
⚠️ Werte driften über Zeit: MPU-6050-Sensoren haben eine kleine Nullpunkt-Abweichung (Bias). Für präzise Anwendungen solltest du beim Start eine kurze Kalibrierungsroutine durchlaufen lassen, die den Ruhewert misst und abzieht.
⚠️ Instabile Werte bei schnellen Bewegungen: Erhöhe den Messbereich mit setAccelerometerRange(MPU6050_RANGE_16_G), wenn die Werte bei starken Erschütterungen „einfrieren" oder unrealistisch wirken.
🔧 Alles für dein IMU-Projekt
Vom Sensor bis zum passenden Board – bei makeroo findest du alles aus einer Hand.
- Sensoren & Module – GY-521, GY-530 und mehr Bewegungs- und Positionssensoren
- Mikrocontroller-Boards – UNO R3, Nano V3, ESP32 und mehr
Mehr Grundlagen zu I2C-Sensoren findest du in unserem Arduino UNO R3 Einsteiger-Tutorial.
Fazit
Der MPU-6050 ist einer der vielseitigsten Sensoren im Maker-Kosmos: günstig, einfach per I2C anzuschließen und Grundlage für alles von Neigungsmessung bis Balance-Robotik. Mit der Adafruit-Bibliothek hast du in wenigen Minuten deine ersten Bewegungsdaten auf dem Serial Monitor – der Rest ist Kreativität.