bmm150 — BMM150 3-Achsen-Magnetometer

Treiber für den geomagnetischen 3-Achsen-Sensor Bosch BMM150 über I2C. Bei der Konstruktion führt der Treiber einen Soft-Reset des Geräts durch, schaltet es in den normalen Betriebsmodus bei der gewünschten ODR und liest die Trim-Register, die von den Bosch-Kompensationsgleichungen verwendet werden, um Rohwerte in kalibrierte Magnetfeldwerte umzurechnen.

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 bmm150 import BMM150

imu = BMM150(I2C(1, scl=Pin("P15"), sda=Pin("P14")))

while True:
    print("magnetometer: x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}".format(*imu.magnet()))
    time.sleep_ms(100)

Klassen

class bmm150.BMM150(bus: machine.I2C, cs: machine.Pin | None = None, address: int = 0x10, magnet_odr: int = 30)

Erzeugt eine BMM150-Instanz, führt einen Soft-Reset des Chips durch, überprüft dessen Chip-ID, konfiguriert ihn für den Normalmodus mit magnet_odr Hz und liest die werkseitigen Trim-Register.

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 0x10.

magnet_odr

Ausgabedatenrate des Magnetometers in Hz. Muss einer der Werte 2, 6, 8, 10, 15, 20, 25 oder 30 sein; alles andere löst ValueError aus.

magnet_raw() tuple[int, int, int, int]

Fragt das Data-Ready-Flag ab und gibt die rohen vorzeichenbehafteten Messwerte (x, y, z, hall) als Ganzzahlen zurück, wobei die Sub-LSB-Bits bereits herausgeschoben wurden. Löst OSError("Data not ready") aus, wenn innerhalb von zehn Wiederholungen kein Sample verfügbar wird.

magnet() tuple[float, float, float]

Liest über magnet_raw() ein neues Sample und gibt den kompensierten Magnetfeldvektor (x, y, z) zurück. Die Kompensation verwendet die bei der Konstruktion gelesenen Trim-Werte und entspricht dem von Bosch bereitgestellten C-Referenztreiber.