6.3 6-Achsen-Bewegungsverfolgung

Der MPU-6050 ist ein 6-Achsen-Sensor, der einen 3-Achsen-Gyroskop und einen 3-Achsen-Beschleunigungsmesser kombiniert.

Ein Beschleunigungsmesser ist ein Instrument zur Messung der Eigenbeschleunigung. Ein am Erdboden ruhender Beschleunigungsmesser misst beispielsweise eine Beschleunigung in Richtung der Erdanziehung von etwa g ≈ 9.81 m/s2.

Beschleunigungsmesser finden in Industrie und Wissenschaft vielfältige Anwendung, beispielsweise in Trägheitsnavigationssystemen für Flugzeuge und Raketen, zur Bilddarstellung in Tablets und Digitalkameras und vieles mehr.

Gyroskope dienen der Messung der Orientierung und der Winkelgeschwindigkeit eines Geräts. Einsatzgebiete für Gyroskope umfassen Anti-Kipp- und Airbagsysteme für Automobile, Bewegungssensoren für intelligente Geräte, Lagestabilisierungssysteme für Drohnen und vieles mehr.

Erforderliche Komponenten

Für dieses Projekt benötigen wir folgende Bauteile.

Ein komplettes Kit zu erwerben, ist natürlich praktisch. Hier ist der Link:

Bezeichnung

KOMPONENTEN IM KIT

LINK

Kepler-Kit

450+

Kepler Kit

Die Komponenten können auch einzeln über die folgenden Links bezogen werden:

SN

KOMPONENTE

MENGE

LINK

1

Raspberry Pi Pico W

1

BUY

2

Micro-USB-Kabel

1

3

Steckbrett

1

BUY

4

Jumperkabel

Mehrere

BUY

5

MPU6050 Modul

1

Schaltplan

sch_mpu6050

Verkabelung

wiring_mpu6050

Code

Bemerkung

  • Öffnen Sie die Datei 6.3_6axis_motion_tracking.py im Verzeichnis kepler-kit-main/micropython oder kopieren Sie den Code in Thonny. Dann klicken Sie auf „Aktuelles Skript ausführen“ oder drücken Sie einfach F5.

  • Wählen Sie im rechten unteren Eck den „MicroPython (Raspberry Pi Pico)“-Interpreter.

  • Für detaillierte Anleitungen siehe Code direkt öffnen und ausführen.

  • Hier benötigen Sie die Bibliotheken imu.py und vector3d.py. Stellen Sie sicher, dass diese auf dem Pico W hochgeladen wurden. Eine detaillierte Anleitung finden Sie unter 1.4 Bibliotheken auf den Pico hochladen.

from imu import MPU6050
from machine import I2C, Pin
import time

i2c = I2C(1, sda=Pin(6), scl=Pin(7), freq=400000)
mpu = MPU6050(i2c)

while True:
    print("x: %s, y: %s, z: %s"%(mpu.accel.x, mpu.accel.y, mpu.accel.z))
    time.sleep(0.1)
    print("A: %s, B: %s, Y: %s"%(mpu.gyro.x, mpu.gyro.y, mpu.gyro.z))
    time.sleep(0.1)

Nach dem Ausführen des Programms sehen Sie die Werte des 3-Achsen-Beschleunigungsmessers und des 3-Achsen-Gyroskops in der Ausgabe rotieren. Drehen Sie den MPU6050 beliebig, und Sie werden feststellen, dass sich die Werte entsprechend ändern. Um die Änderungen besser erkennen zu können, können Sie eine der Ausgabelinien auskommentieren und sich auf einen Datensatz konzentrieren.

Die Einheit des Beschleunigungswerts ist „m/s²“ und die Einheit des Gyroskopwerts ist „°/s“.

Wie funktioniert es?

In der imu-Bibliothek haben wir die relevanten Funktionen in der Klasse MPU6050 integriert. Der MPU6050 ist ein I2C-Modul und erfordert für die Initialisierung definierte I2C-Pins.

from imu import MPU6050
from machine import I2C, Pin

i2c = I2C(1, sda=Pin(6), scl=Pin(7), freq=400000)
mpu = MPU6050(i2c)

In der Folge können Sie Echtzeit-Beschleunigungs- und Winkelgeschwindigkeitswerte in mpu.accel.x, mpu.accel.y, mpu.accel.z, mpu.gyro.x, mpu.gyro.y, mpu.gyro.z abrufen.

while True:
    print("x: %s, y: %s, z: %s"%(mpu.accel.x, mpu.accel.y, mpu.accel.z))
    time.sleep(0.1)
    print("A: %s, B: %s, Y: %s"%(mpu.gyro.x, mpu.gyro.y, mpu.gyro.z))
    time.sleep(0.1)