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+ |
Die Komponenten können auch einzeln über die folgenden Links bezogen werden:
SN |
KOMPONENTE |
MENGE |
LINK |
---|---|---|---|
1 |
1 |
||
2 |
Micro-USB-Kabel |
1 |
|
3 |
1 |
||
4 |
Mehrere |
||
5 |
1 |
Schaltplan
Verkabelung
Code
Bemerkung
Öffnen Sie die Datei
6.3_6axis_motion_tracking.py
im Verzeichniskepler-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
undvector3d.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)