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.

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.

Zurück zum Blog