lsm9ds1 — LSM9DS1 9-Achsen-IMU¶
Treiber für das ST LSM9DS1 iNEMO-Trägheitsmodul über I2C. Der LSM9DS1 vereint einen 3-Achsen-Beschleunigungssensor, ein 3-Achsen-Gyroskop und ein 3-Achsen-Magnetometer in einem einzigen Gehäuse; Beschleunigungssensor und Gyroskop teilen sich eine I2C-Adresse, während das Magnetometer auf eine zweite Adresse reagiert. Dieser Treiber aktiviert außerdem die On-Chip-FIFO mit 16 Einträgen für Gyro/Accel, sodass die jüngsten Proben effizient über iter_accel_gyro() abgerufen werden können.
Beispiel:
import time
from machine import Pin, I2C
from lsm9ds1 import LSM9DS1
imu = LSM9DS1(I2C(1, scl=Pin("P15"), sda=Pin("P14")))
while True:
print("Accelerometer: x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}".format(*imu.accel()))
print("Magnetometer: x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}".format(*imu.magnet()))
print("Gyroscope: x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}".format(*imu.gyro()))
time.sleep_ms(100)
Klassen¶
- class lsm9ds1.LSM9DS1(bus: machine.I2C, address_imu: int = 0x6B, address_magnet: int = 0x1E, gyro_odr: float = 952, gyro_scale: int = 245, accel_odr: float = 952, accel_scale: int = 4, magnet_odr: int = 80, magnet_scale: int = 4)¶
Erstellt eine
LSM9DS1-Instanz, überprüft die WHO_AM_I-Register beider Teilgeräte, konfiguriert alle drei Sensoren und aktiviert die Accel/Gyro-FIFO im kontinuierlichen Modus.busEin konfigurierter
machine.I2C-Bus, an den der Sensor angeschlossen ist.address_imu7-Bit-I2C-Adresse des Beschleunigungssensor-/Gyroskop-Teilgeräts. Standardmäßig
0x6B.address_magnet7-Bit-I2C-Adresse des Magnetometer-Teilgeräts. Standardmäßig
0x1E.gyro_odrAusgabedatenrate des Gyroskops in Hz. Muss einer der Werte
0(aus),14.9,59.5,119,238,476oder952sein.gyro_scaleVollausschlagsbereich des Gyroskops in Grad pro Sekunde. Muss einer der Werte
245,500oder2000sein.accel_odrAusgabedatenrate des Beschleunigungssensors in Hz. Gleiche Wertemenge wie
gyro_odr.accel_scaleVollausschlagsbereich des Beschleunigungssensors in g. Muss einer der Werte
2,4,8oder16sein.magnet_odrAusgabedatenrate des Magnetometers in Hz. Muss einer der Werte
0.625,1.25,2.5,5,10,20,40oder80sein.magnet_scaleVollausschlagsbereich des Magnetometers in Gauss. Muss einer der Werte
4,8,12oder16sein.
- calibrate_magnet(offset: tuple[float, float, float]) None¶
Schreibt einen Hard-Iron-Offset-Vektor in die
OFFSET_REG_*_M-Register des Magnetometers. Der Offset wird in denselben Einheiten angegeben, diemagnet()zurückgibt (Gauss); jede Komponente wird unter Verwendung der konfigurierten Magnetometer-Skala in rohe LSBs umgerechnet, bevor sie geschrieben wird.
- gyro_id() bytes¶
Gibt den Ein-Byte-Wert des
WHO_AM_I-Registers des Beschleunigungssensor-/Gyroskop-Teilgeräts zurück.
- magent_id() bytes¶
Gibt den Ein-Byte-Wert des
WHO_AM_I-Registers des Magnetometer-Teilgeräts zurück.