bmi270 — BMI270 6-Achsen-IMU

Treiber für die stromsparende 6-Achsen-Trägheitsmesseinheit Bosch BMI270 (3-Achsen-Beschleunigungssensor plus 3-Achsen-Gyroskop) über I2C. Der Treiber führt bei der Konstruktion die vollständige BMI270-Initialisierungssequenz aus — Soft-Reset, Deaktivierung des Stromsparmodus, Hochladen des Konfigurations-Blobs und Statusprüfung — bevor er die gewünschten Ausgabedatenraten und Vollbereiche konfiguriert.

Die Klasse kann optional mit einer externen bmm150.BMM150-Magnetometer-Instanz verknüpft werden, sodass Aufrufer ein BMI270-+-BMM150-Paar über die Methode magnet() als ein einziges 9-Achsen-Gerät behandeln können.

Bemerkung

Der SPI-Modus wird von diesem Treiber nicht unterstützt; die Übergabe eines Nicht-I2C-Busses löst ValueError aus.

Beispiel:

import time
from machine import Pin, I2C
from bmi270 import BMI270

imu = BMI270(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("Gyroscope:     x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}".format(*imu.gyro()))
    time.sleep_ms(100)

Klassen

class bmi270.BMI270(bus: machine.I2C, cs: machine.Pin | None = None, address: int = 0x68, gyro_odr: float = 100, gyro_scale: int = 2000, accel_odr: float = 100, accel_scale: int = 4, bmm_magnet: BMM150 | None = None)

Erzeugt eine BMI270-Instanz und führt die vollständige Initialisierungssequenz zum Laden der Konfiguration aus. Löst OSError aus, wenn die Chip-ID nicht übereinstimmt oder die Ladesequenz fehlschlägt.

bus

Ein konfigurierter machine.I2C-Bus, an den der Sensor angeschlossen ist.

cs

Reserviert für den SPI-Modus. Muss auf None belassen werden; SPI ist derzeit nicht implementiert und die Übergabe eines Nicht-I2C-Busses löst ValueError aus.

address

7-Bit-I2C-Adresse des Geräts. Standardwert ist 0x68; einige Boards legen den SDO-Pin auf High, wodurch 0x69 ausgewählt wird.

gyro_odr

Ausgabedatenrate des Gyroskops in Hz. Muss einer der Werte 0.78, 1.5, 3.1, 6.25, 12.5, 25, 50, 100, 200, 400, 800 oder 1200 sein.

gyro_scale

Vollbereich des Gyroskops in Grad pro Sekunde. Muss einer der Werte 125, 250, 500, 1000 oder 2000 sein.

accel_odr

Ausgabedatenrate des Beschleunigungssensors in Hz. Gleiche Wertemenge wie gyro_odr.

accel_scale

Vollbereich des Beschleunigungssensors in g. Muss einer der Werte 2, 4, 8 oder 16 sein.

bmm_magnet

Optionale bmm150.BMM150-Instanz. Wenn angegeben, delegiert die Methode magnet() an diese; andernfalls gibt magnet() Nullen zurück.

reset() None

Sendet den BMI270-Soft-Reset-Befehl. Nach dem Aufruf muss das Gerät vor der weiteren Nutzung neu initialisiert werden.

gyro() tuple[float, float, float]

Gibt den Gyroskop-Vektor (x, y, z) in Grad pro Sekunde zurück, skaliert entsprechend gyro_scale.

accel() tuple[float, float, float]

Gibt den Beschleunigungsvektor (x, y, z) in Einheiten der Standardgravitation (1 g = 9,81 m/s²) zurück, skaliert entsprechend accel_scale.

magnet() tuple[float, float, float]

Wenn bei der Konstruktion ein bmm_magnet angegeben wurde, wird der neueste Magnetometer-Messwert von diesem Gerät zurückgegeben. Andernfalls wird (0.0, 0.0, 0.0) zurückgegeben.