bmm150 — BMM150 3-akselinen magnetometri

Ajuri Bosch BMM150 -3-akseliselle geomagneettiselle sensorille I2C-väylän kautta. Muodostuksen yhteydessä ajuri suorittaa laitteen pehmeän nollauksen, kytkee sen normaaliin toimintatilaan pyydetyllä ODR:llä ja lukee trim-rekisterit, joita Boschin kompensaatioyhtälöt käyttävät raakalukemien muuntamiseen kalibroiduiksi magneettikenttäarvoiksi.

Muista

Tämä ajuri ei tue SPI-tilaa; muun kuin I2C-väylän antaminen nostaa virheen ValueError.

Esimerkki:

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)

Luokat

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

Muodostaa BMM150-instanssin, suorittaa sirun pehmeän nollauksen, varmentaa sen sirutunnuksen, konfiguroi sen normaalitilaan taajuudella magnet_odr Hz ja lukee tehdasasetetut trim-rekisterit.

bus

Konfiguroitu machine.I2C -väylä, johon sensori on liitetty.

cs

Varattu SPI-tilaa varten. Täytyy jättää arvoon None; SPI:tä ei ole tällä hetkellä toteutettu, ja muun kuin I2C-väylän antaminen nostaa virheen ValueError.

address

Laitteen 7-bittinen I2C-osoite. Oletuksena 0x10.

magnet_odr

Magnetometrin ulostulodataaja hertseinä. Täytyy olla yksi seuraavista: 2, 6, 8, 10, 15, 20, 25 tai 30; mikä tahansa muu nostaa virheen ValueError.

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

Pollaa data-valmis-lipun ja palauttaa raa’at etumerkilliset (x, y, z, hall)-lukemat kokonaislukuina, joista ali-LSB-bitit on jo siirretty pois. Nostaa virheen OSError("Data not ready"), jos näytettä ei tule saataville kymmenen uudelleenyrityksen aikana.

magnet() tuple[float, float, float]

Lukee tuoreen näytteen magnet_raw()-metodin kautta ja palauttaa kompensoidun magneettikenttävektorin (x, y, z). Kompensointi käyttää muodostuksen yhteydessä luettuja trim-arvoja ja vastaa Boschin toimittamaa C-referenssiajuria.