bmm150 — BMM150 3-assige magnetometer

Driver voor de Bosch BMM150 3-assige geomagnetische sensor via I2C. Bij constructie voert de driver een soft reset van het apparaat uit, schakelt het over naar de normale bedrijfsmodus op de gevraagde ODR, en leest de trim-registers die door de Bosch-compensatievergelijkingen worden gebruikt om ruwe metingen om te zetten naar gekalibreerde magnetische-veldwaarden.

Notitie

De SPI-modus wordt niet ondersteund door deze driver; het doorgeven van een niet-I2C-bus veroorzaakt een ValueError.

Voorbeeld:

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)

Construeer een BMM150-instantie, voer een soft reset van de chip uit, verifieer de chip-ID, configureer deze voor de normale modus op magnet_odr Hz en lees de fabrieks-trim-registers.

bus

Een geconfigureerde machine.I2C-bus waarop de sensor is aangesloten.

cs

Gereserveerd voor de SPI-modus. Moet als None worden gelaten; SPI is momenteel niet geïmplementeerd en het opgeven van een niet-I2C-bus veroorzaakt een ValueError.

address

7-bits I2C-adres van het apparaat. Standaard 0x10.

magnet_odr

Uitvoerdatasnelheid van de magnetometer in Hz. Moet een van de volgende zijn: 2, 6, 8, 10, 15, 20, 25 of 30; alles anders veroorzaakt een ValueError.

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

Peil de data-ready-vlag en retourneer de ruwe signed (x, y, z, hall)-metingen als gehele getallen, met de sub-LSB-bits er al uitgeschoven. Veroorzaakt een OSError("Data not ready") als er binnen tien pogingen geen sample beschikbaar komt.

magnet() tuple[float, float, float]

Lees een nieuw sample via magnet_raw() en retourneer de gecompenseerde magnetische-veldvector (x, y, z). De compensatie gebruikt de trim-waarden die bij constructie zijn gelezen en komt overeen met de referentie-C-driver die door Bosch wordt geleverd.