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 mitmagnet_odrHz und liest die werkseitigen Trim-Register.busEin konfigurierter
machine.I2C-Bus, an den der Sensor angeschlossen ist.csReserviert für den SPI-Modus. Muss auf
Nonebelassen werden; SPI ist derzeit nicht implementiert und die Übergabe eines Nicht-I2C-Busses löstValueErroraus.address7-Bit-I2C-Adresse des Geräts. Standardwert ist
0x10.magnet_odrAusgabedatenrate des Magnetometers in Hz. Muss einer der Werte
2,6,8,10,15,20,25oder30sein; alles andere löstValueErroraus.
- 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östOSError("Data not ready")aus, wenn innerhalb von zehn Wiederholungen kein Sample verfügbar wird.