bmm150 — Magnetómetro de 3 ejes BMM150

Controlador para el sensor geomagnético de 3 ejes Bosch BMM150 a través de I2C. Durante la construcción, el controlador reinicia el dispositivo por software, lo conmuta al modo de funcionamiento normal a la ODR solicitada y lee los registros de ajuste (trim) que utilizan las ecuaciones de compensación de Bosch para convertir las lecturas en bruto en valores calibrados de campo magnético.

Nota

Este controlador no admite el modo SPI; pasar un bus que no sea I2C genera un ValueError.

Ejemplo:

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)

Clases

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

Construye una instancia de BMM150, reinicia el chip por software, verifica su ID de chip, lo configura para el modo normal a magnet_odr Hz y lee los registros de ajuste de fábrica.

bus

Un bus machine.I2C configurado al que está conectado el sensor.

cs

Reservado para el modo SPI. Debe dejarse como None; SPI no está implementado actualmente y proporcionar un bus que no sea I2C genera un ValueError.

address

Dirección I2C de 7 bits del dispositivo. El valor predeterminado es 0x10.

magnet_odr

Tasa de datos de salida del magnetómetro en Hz. Debe ser uno de los siguientes valores: 2, 6, 8, 10, 15, 20, 25 o 30; cualquier otro valor genera un ValueError.

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

Consulta el indicador de datos listos y devuelve las lecturas en bruto con signo (x, y, z, hall) como enteros, con los bits sub-LSB ya desplazados. Genera OSError("Data not ready") si no hay ninguna muestra disponible dentro de diez reintentos.

magnet() tuple[float, float, float]

Lee una muestra nueva mediante magnet_raw() y devuelve el vector de campo magnético compensado (x, y, z). La compensación utiliza los valores de ajuste leídos durante la construcción y coincide con el controlador C de referencia proporcionado por Bosch.