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_odrHz i odczytuje fabryczne rejestry kalibracyjne (trim).busSkonfigurowana magistrala
machine.I2C, do której podłączony jest sensor.csZarezerwowane dla trybu SPI. Musi pozostać ustawione na
None; SPI nie jest obecnie zaimplementowane, a podanie magistrali innej niż I2C powoduje zgłoszenieValueError.address7-bitowy adres I2C urządzenia. Domyślnie
0x10.magnet_odrCzęstotliwość danych wyjściowych magnetometru w Hz. Musi być jedną z wartości
2,6,8,10,15,20,25lub30; każda inna wartość powoduje zgłoszenieValueError.
- 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łaszaOSError("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.