6.3 - 6-Achsen-Bewegungsverfolgung¶
Der MPU-6050 ist ein 6-Achsen-Bewegungsverfolgungsgerät, das einen 3-Achsen-Gyroskop mit einem 3-Achsen-Beschleunigungsmesser kombiniert.
Ein Beschleunigungsmesser ist ein Instrument, das die Eigengeschwindigkeitsänderung misst. Ein in Ruhe auf der Erdoberfläche liegender Beschleunigungsmesser würde beispielsweise eine Beschleunigung durch die Erdanziehungskraft von etwa g ≈ 9,81 m/s² in Richtung der Erdoberfläche messen.
Beschleunigungsmesser haben zahlreiche Anwendungen in Industrie und Wissenschaft. Beispiele hierfür sind Trägheitsnavigationssysteme für Flugzeuge und Raketen, Systeme zur Ausrichtung von Bildern auf Tablets und Digitalkameras und so weiter.
Gyroskope werden verwendet, um die Ausrichtung und Winkelgeschwindigkeit eines Geräts oder Systems zu messen. Einsatzgebiete für Gyroskope sind unter anderem Anti-Roll-Systeme und Airbags in Automobilen, Bewegungserfassungssysteme für Smart-Geräte, Lageregelungssysteme für Drohnen und mehr.
Erforderliche Komponenten
Für dieses Projekt benötigen wir folgende Komponenten.
Es ist definitiv praktisch, ein komplettes Kit zu kaufen. Hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
KAUF-LINK |
---|---|---|
Kepler-Kit |
450+ |
Sie können die Komponenten auch einzeln über die untenstehenden Links erwerben.
SN |
KOMPONENTENBESCHREIBUNG |
MENGE |
KAUF-LINK |
---|---|---|---|
1 |
1 |
||
2 |
Micro-USB-Kabel |
1 |
|
3 |
1 |
||
4 |
Mehrere |
||
5 |
1 |
Schaltplan
Verkabelung
Code
Bemerkung
Sie können die Datei
6.3_6axis_motion_tracking.ino
im Verzeichniskepler-kit-main/arduino/6.3_6axis_motion_tracking
öffnen.Oder kopieren Sie diesen Code in die Arduino IDE.
Vergessen Sie nicht, das Board (Raspberry Pi Pico) und den entsprechenden Port auszuwählen, bevor Sie auf die Hochladen-Taste klicken.
Die Bibliothek
Adafruit_MPU6050
wird hier verwendet. Bitte beziehen Sie sich auf Bibliotheken hinzufügen, um sie zur Arduino IDE hinzuzufügen.
Nach dem Ausführen des Programms können Sie die Werte des 3-Achsen-Beschleunigungsmessers und des 3-Achsen-Gyroskops in der Ausgabe sehen. Wenn Sie den MPU6050 zufällig drehen, werden diese Werte entsprechend variieren. Um die Änderungen besser verfolgen zu können, können Sie eine der Ausgabezeilen auskommentieren und sich auf einen anderen Datensatz konzentrieren.
Wie funktioniert es?
Erzeugen Sie ein MPU6050
-Objekt.
#include <Adafruit_MPU6050.h>
#include <Wire.h>
Adafruit_MPU6050 mpu;
Initialisieren Sie den MPU6050 und konfigurieren Sie seine Genauigkeit.
void setup(void) {
Serial.begin(115200);
while (!Serial)
delay(10); // will pause Zero, Leonardo, etc until serial console opens
Serial.println("Adafruit MPU6050 test!");
// Try to initialize!
if (!mpu.begin()) {
Serial.println("Failed to find MPU6050 chip");
while (1) {
delay(10);
}
}
Serial.println("MPU6050 Found!");
// Set range
mpu.setAccelerometerRange(MPU6050_RANGE_8_G);
mpu.setGyroRange(MPU6050_RANGE_500_DEG);
mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);
Serial.println("");
delay(100);
}
Erfassen Sie neue Sensorevents mit den dazugehörigen Messwerten.
sensors_event_t a, g, temp;
mpu.getEvent(&a, &g, &temp);
Im Anschluss können Sie Echtzeit-Werte für Beschleunigung und Winkelgeschwindigkeit aus den Daten a.acceleration.x
, a.acceleration.y
, a.acceleration.z
, g.gyro.x
, g.gyro.y
, g.gyro.z
ablesen.
Serial.print("Acceleration X: ");
Serial.print(a.acceleration.x);
Serial.print(", Y: ");
Serial.print(a.acceleration.y);
Serial.print(", Z: ");
Serial.print(a.acceleration.z);
Serial.println(" m/s^2");
Serial.print("Rotation X: ");
Serial.print(g.gyro.x);
Serial.print(", Y: ");
Serial.print(g.gyro.y);
Serial.print(", Z: ");
Serial.print(g.gyro.z);
Serial.println(" rad/s");