bmm150 — BMM150 3-osni magnetometar

Upravljački program za Bosch BMM150 3-osni geomagnetski senzor putem I2C. Pri stvaranju upravljački program izvodi meki reset uređaja, prebacuje ga u normalni način rada pri traženoj ODR i čita trim registre koje koriste Boschove jednadžbe kompenzacije za pretvaranje sirovih očitanja u kalibrirane vrijednosti magnetskog polja.

Napomena

Ovaj upravljački program ne podržava SPI način rada; prosljeđivanje sabirnice koja nije I2C izaziva ValueError.

Primjer:

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)

Klase

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

Stvara instancu BMM150, izvodi meki reset čipa, provjerava njegov ID, konfigurira ga za normalni način rada pri magnet_odr Hz i čita tvorničke trim registre.

bus

Konfigurirana machine.I2C sabirnica na koju je senzor priključen.

cs

Rezervirano za SPI način rada. Mora ostati None; SPI trenutno nije implementiran, a navođenje sabirnice koja nije I2C izaziva ValueError.

address

7-bitna I2C adresa uređaja. Zadana vrijednost je 0x10.

magnet_odr

Brzina izlaznih podataka magnetometra u Hz. Mora biti jedna od 2, 6, 8, 10, 15, 20, 25 ili 30; bilo što drugo izaziva ValueError.

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

Provjerava zastavicu spremnosti podataka i vraća sirova predznačena očitanja (x, y, z, hall) kao cijele brojeve, s već izbačenim pod-LSB bitovima. Izaziva OSError("Data not ready") ako nijedan uzorak ne postane dostupan unutar deset pokušaja.

magnet() tuple[float, float, float]

Čita svježi uzorak putem magnet_raw() i vraća kompenzirani vektor magnetskog polja (x, y, z). Kompenzacija koristi trim vrijednosti pročitane pri stvaranju i podudara se s referentnim C upravljačkim programom koji isporučuje Bosch.