bmm150 — BMM150 3osý magnetometr

Ovladač pro 3osý geomagnetický senzor Bosch BMM150 přes I2C. Při vytvoření instance ovladač provede softwarový reset zařízení, přepne jej do normálního provozního režimu na požadované ODR a načte trimovací registry používané kompenzačními rovnicemi Bosch k převodu surových údajů na kalibrované hodnoty magnetického pole.

Poznámka

Tento ovladač nepodporuje režim SPI; předání sběrnice, která není I2C, vyvolá ValueError.

Příklad:

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)

Třídy

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

Vytvoří instanci BMM150, provede softwarový reset čipu, ověří jeho ID čipu, nakonfiguruje jej pro normální režim na magnet_odr Hz a načte tovární trimovací registry.

bus

Nakonfigurovaná sběrnice machine.I2C, ke které je senzor připojen.

cs

Vyhrazeno pro režim SPI. Musí zůstat jako None; SPI není v současnosti implementováno a předání sběrnice, která není I2C, vyvolá ValueError.

address

7bitová I2C adresa zařízení. Výchozí hodnota je 0x10.

magnet_odr

Výstupní datová rychlost magnetometru v Hz. Musí být jedna z hodnot 2, 6, 8, 10, 15, 20, 25 nebo 30; cokoli jiného vyvolá ValueError.

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

Dotáže se na příznak připravenosti dat a vrátí surové údaje (x, y, z, hall) se znaménkem jako celá čísla, přičemž bity pod úrovní LSB jsou již odsunuty. Vyvolá OSError("Data not ready"), pokud se během deseti pokusů nezpřístupní žádný vzorek.

magnet() tuple[float, float, float]

Načte nový vzorek pomocí magnet_raw() a vrátí kompenzovaný vektor magnetického pole (x, y, z). Kompenzace používá trimovací hodnoty načtené při vytvoření instance a odpovídá referenčnímu ovladači v jazyce C dodávanému společností Bosch.