bmm150 --- BMM150 3軸磁力計

Bosch BMM150 3軸地磁気センサーをI2C経由で制御するためのドライバです。コンストラクション時に、ドライバはデバイスをソフトリセットし、指定されたODRで通常動作モードに切り替えてから、生の測定値を較正済みの磁界値に変換するためにBoschの補正方程式で使用されるトリムレジスタを読み取ります。

注釈

このドライバはSPIモードをサポートしていません。I2C以外のバスを渡すと ValueError が発生します。

例:

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)

クラス

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

BMM150 インスタンスを生成し、チップをソフトリセットし、そのチップIDを検証し、magnet_odr Hzで通常モードに設定して、工場出荷時のトリムレジスタを読み取ります。

bus

センサーが接続されている、設定済みの machine.I2C バスです。

cs

SPIモード用に予約されています。None のままにしておく必要があります。SPIは現在実装されておらず、I2C以外のバスを渡すと ValueError が発生します。

address

デバイスの7ビットI2Cアドレスです。デフォルトは 0x10 です。

magnet_odr

磁力計の出力データレート(Hz)です。2681015202530 のいずれかである必要があります。それ以外の値を指定すると ValueError が発生します。

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

データレディフラグをポーリングし、サブLSBビットをすでにシフトアウトした状態で、生の符号付き (x, y, z, hall) 測定値を整数として返します。10回の再試行以内にサンプルが利用可能にならない場合は OSError("Data not ready") が発生します。

magnet() tuple[float, float, float]

magnet_raw() を介して新しいサンプルを読み取り、補正済みの磁界ベクトル (x, y, z) を返します。補正にはコンストラクション時に読み取られたトリム値を使用し、Boschが提供する参照Cドライバと一致します。