bmm150 — 3-osiowy magnetometr BMM150

Sterownik dla 3-osiowego sensora geomagnetycznego Bosch BMM150 komunikującego się przez I2C. Podczas tworzenia obiektu sterownik wykonuje miękki reset urządzenia, przełącza je w normalny tryb pracy z żądanym ODR oraz odczytuje rejestry kalibracyjne (trim) używane przez równania kompensacyjne Bosch do przeliczania surowych odczytów na skalibrowane wartości pola magnetycznego.

Informacja

Tryb SPI nie jest obsługiwany przez ten sterownik; przekazanie magistrali innej niż I2C powoduje zgłoszenie ValueError.

Przykład:

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)

Klasy

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

Tworzy instancję BMM150, wykonuje miękki reset układu, weryfikuje jego identyfikator, konfiguruje go w tryb normalny z częstotliwością magnet_odr Hz i odczytuje fabryczne rejestry kalibracyjne (trim).

bus

Skonfigurowana magistrala machine.I2C, do której podłączony jest sensor.

cs

Zarezerwowane dla trybu SPI. Musi pozostać ustawione na None; SPI nie jest obecnie zaimplementowane, a podanie magistrali innej niż I2C powoduje zgłoszenie ValueError.

address

7-bitowy adres I2C urządzenia. Domyślnie 0x10.

magnet_odr

Częstotliwość danych wyjściowych magnetometru w Hz. Musi być jedną z wartości 2, 6, 8, 10, 15, 20, 25 lub 30; każda inna wartość powoduje zgłoszenie ValueError.

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

Odpytuje flagę gotowości danych i zwraca surowe odczyty ze znakiem (x, y, z, hall) jako liczby całkowite, z już wysuniętymi bitami sub-LSB. Zgłasza OSError("Data not ready"), jeśli w ciągu dziesięciu prób nie pojawi się żadna próbka.

magnet() tuple[float, float, float]

Odczytuje świeżą próbkę za pomocą magnet_raw() i zwraca skompensowany wektor pola magnetycznego (x, y, z). Kompensacja wykorzystuje wartości kalibracyjne (trim) odczytane podczas tworzenia obiektu i odpowiada referencyjnemu sterownikowi w języku C dostarczonemu przez Bosch.