bmm150 — BMM150 3-axlig magnetometer

Drivrutin för Bosch BMM150 3-axliga geomagnetiska sensor över I2C. Vid konstruktion mjukåterställer drivrutinen enheten, växlar den till normalt driftläge vid den begärda ODR:n och läser trimregistren som används av Boschs kompensationsekvationer för att omvandla råa avläsningar till kalibrerade magnetfältsvärden.

Anteckning

SPI-läge stöds inte av denna drivrutin; att skicka en buss som inte är I2C ger upphov till ValueError.

Exempel:

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)

Klasser

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

Skapa en BMM150-instans, mjukåterställ chippet, verifiera dess chip-ID, konfigurera det för normalläge vid magnet_odr Hz och läs fabrikens trimregister.

bus

En konfigurerad machine.I2C-buss som sensorn är ansluten till.

cs

Reserverad för SPI-läge. Måste lämnas som None; SPI är för närvarande inte implementerat och att tillhandahålla en buss som inte är I2C ger upphov till ValueError.

address

7-bitars I2C-adress för enheten. Standardvärdet är 0x10.

magnet_odr

Magnetometerns utdatahastighet i Hz. Måste vara en av 2, 6, 8, 10, 15, 20, 25 eller 30; allt annat ger upphov till ValueError.

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

Avläs data-redo-flaggan och returnera de råa teckenförsedda avläsningarna (x, y, z, hall) som heltal, med sub-LSB-bitarna redan utskiftade. Ger upphov till OSError("Data not ready") om inget sampel blir tillgängligt inom tio försök.

magnet() tuple[float, float, float]

Läs ett nytt sampel via magnet_raw() och returnera den kompenserade magnetfältsvektorn (x, y, z). Kompensationen använder de trimvärden som lästes vid konstruktion och matchar referens-C-drivrutinen som tillhandahålls av Bosch.