Wie man das MPU-6050 Beschleunigungs- und Gyroskopmodul verwendet

Wie man das MPU-6050 Beschleunigungs- und Gyroskopmodul verwendet

Der MPU-6050 ist ein vielseitiger Sensor, der einen 3-Achsen-Beschleunigungssensor und ein 3-Achsen-Gyroskop in einem Gehäuse kombiniert. In diesem Tutorial werden wir untersuchen, wie man dieses Modul mit einem Arduino verbindet, um Beschleunigung und Winkelgeschwindigkeit zu messen. Das Ergebnis ist ein einfaches Programm, das Echtzeitdaten vom Sensor anzeigt und es Ihnen ermöglicht, sowohl die Beschleunigung als auch die Orientierung Ihres Geräts zu überwachen.

Wenn Sie dieser Anleitung folgen, lernen Sie, wie Sie die Hardware einrichten, die Komponenten korrekt verkabeln und den notwendigen Code schreiben, um den MPU-6050 zum Laufen zu bringen. Dies verschafft Ihnen eine Grundlage für weitere Projekte, die Bewegungserfassung und Orientierungserkennung betreffen. Zur zusätzlichen Klarheit sollten Sie sich das Video ansehen, das dieses Tutorial begleitet (im Video bei 00:00).

Hardware erklärt

Die Hauptkomponente in diesem Projekt ist der MPU-6050-Sensor, der sowohl Beschleunigungs- als auch Gyroskopdaten liefert. Der Beschleunigungssensor misst die lineare Beschleunigung entlang der X-, Y- und Z-Achsen, während das Gyroskop die Drehgeschwindigkeiten um dieselben Achsen misst. Diese Kombination macht den MPU-6050 zu einer ausgezeichneten Wahl für Anwendungen, die Bewegungsverfolgung erfordern.

Zusätzlich verwendet das Modul eine I2C-Schnittstelle für die Kommunikation, die die Verbindungen vereinfacht und es ermöglicht, mehrere Geräte am selben Bus anzuschließen. Der Sensor wird über den VCC-Pin mit Strom versorgt, der typischerweise eine Spannung zwischen 3,3 V und 5 V benötigt. GND ist mit der gemeinsamen Masse des Arduino-Boards verbunden.

Details zum Datenblatt

HerstellerInvenSense
TeilenummerMPU-6050
Logik-/I/O-Spannung3.3 - 5 V
Versorgungsspannung3,3–5 V
Ausgangsstrom (pro Kanal)...
Spitzenstrom (pro Kanal)...
Hinweise zur PWM-Frequenz...
Eingangslogikschwellen...
Spannungsabfall / RDS(on)/ Sättigung...
Thermische Grenzwerte...
PaketQFN
Notizen / Varianten...

  • Verbinden Sie den VCC-Pin mit 3,3 V oder 5 V.
  • Verbinden Sie den GND-Pin mit Masse.
  • Verwenden Sie I2C-Kommunikation über SDA (Daten) und SCL (Takt).
  • Stellen Sie sicher, dass Pull-up-Widerstände an den SDA- und SCL-Leitungen vorhanden sind.
  • Überprüfen Sie die Spannungswerte, um eine Beschädigung des Sensors zu vermeiden.

Verdrahtungsanleitung

arduino_wiring_MPU-6050

Um den MPU-6050 mit Ihrem Arduino zu verkabeln, verbinden Sie zunächst den VCC-Pin des MPU-6050 mit dem 5V-Pin des Arduino. Anschließend verbinden Sie den GND-Pin des MPU-6050 mit einem der GND-Pins des Arduino. Für die I2C-Kommunikation verbinden Sie den SDA-Pin des MPU-6050 mit dem A4-Pin des Arduino und den SCL-Pin mit dem A5-Pin. Stellen Sie sicher, dass Ihr Arduino für die I2C-Kommunikation konfiguriert ist, indem Sie die entsprechenden Bibliotheken in Ihrem Code einbinden.

Überprüfen Sie Ihre Verbindungen noch einmal, bevor Sie das System mit Strom versorgen. Wenn Sie ein Steckbrett (Breadboard) verwenden, stellen Sie sicher, dass die Verbindungen fest sitzen und keine Kurzschlüsse vorliegen. Wenn das Modul nicht wie erwartet reagiert, prüfen Sie die Verkabelung und die I2C‑Adresse des MPU‑6050 in Ihrem Code.

Codebeispiele und Schritt-für-Schritt-Anleitung

Der folgende Codeausschnitt initialisiert den MPU-6050 und beginnt, Daten von ihm zu lesen. Die wichtigsten Bezeichner umfassenmpu6050, die Instanz der MPU6050-Klasse, undtimer, das verwendet wird, um den Zeitpunkt der Datenausgabe zu steuern.

MPU6050 mpu6050(Wire);
long timer = 0;

void setup() {
  Serial.begin(9600);
  Wire.begin();
  mpu6050.begin();
  mpu6050.calcGyroOffsets(true);
}

In dieser Setup-Funktion initialisieren wir die serielle Kommunikation und den MPU-6050-Sensor. Dasmpu6050.calcGyroOffsets(true)Der Aufruf ist entscheidend, da er die Gyroskop-Offsets kalibriert und so genaue Messwerte gewährleistet.

In der loop-Funktion aktualisieren wir kontinuierlich die Sensordaten und geben sie im seriellen Monitor aus. Der folgende Codeausschnitt zeigt, wie man die Temperatur- und Beschleunigungsdaten liest und ausgibt:

if(millis() - timer > 1000){
  Serial.print("temp : ");Serial.println(mpu6050.getTemp());
  Serial.print("accX : ");Serial.print(mpu6050.getAccX());
  Serial.print("\taccY : ");Serial.print(mpu6050.getAccY());
  Serial.print("\taccZ : ");Serial.println(mpu6050.getAccZ());
}

Dieser Block prüft, ob seit der letzten Ausgabe eine Sekunde vergangen ist. Anschließend liest er die Temperatur- und Beschleunigungswerte vom MPU-6050 aus und gibt sie auf dem seriellen Monitor aus. Sie können beobachten, wie sich diese Werte in Echtzeit aktualisieren.

Demonstration / Was Sie erwartet

Sobald alles verkabelt ist und der Code hochgeladen wurde, können Sie erwarten, dass die Temperatur- und Beschleunigungsdaten jede Sekunde im seriellen Monitor ausgegeben werden. Wenn Sie das MPU-6050 kippen oder bewegen, sollten sich die Beschleunigungswerte entsprechend ändern. Achten Sie darauf, dass falsche Verkabelung oder unzureichende Stromversorgung zu fehlerhaften Messwerten oder sogar dazu führen können, dass gar keine Daten angezeigt werden (im Video bei 01:30).

Bilder

arduino_wiring_MPU-6050
arduino_wiring_MPU-6050
MPU-6050-module-1
MPU-6050-module-1
MPU-6050-module-2
MPU-6050-module-2
MPU-6050-module-schematic
MPU-6050-module-schematic
MPU-6050-module-1
MPU-6050-module-1
116-Arduino code for the MPU-6050 accelerometer and gyroscope sensor (all data)
Sprache: C++
117-Arduino code for an MPU-6050 accelerometer and gyroscope sensor (just angle)
Sprache: C++
Kopiert!

Dinge, die Sie vielleicht brauchen

Ressourcen & Referenzen

Dateien📁

Arduino-Bibliotheken (zip)