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, програмно скидає чіп, перевіряє його ідентифікатор, налаштовує нормальний режим роботи з частотою magnet_odr Гц і зчитує заводські калібрувальні регістри.

bus

Налаштована шина machine.I2C, до якої підключено датчик.

cs

Зарезервовано для SPI-режиму. Має залишатися None; SPI наразі не реалізовано, і передача не-I2C шини викликає ValueError.

address

7-бітна I2C-адреса пристрою. За замовчуванням 0x10.

magnet_odr

Частота вихідних даних магнетометра в Гц. Має бути одним із значень: 2, 6, 8, 10, 15, 20, 25 або 30; будь-яке інше значення викликає ValueError.

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

Опитує прапорець готовності даних і повертає сирі знакові показання (x, y, z, hall) у вигляді цілих чисел із вже зсунутими підменшими бітами. Викидає OSError("Data not ready"), якщо зразок не з’являється протягом десяти спроб.

magnet() tuple[float, float, float]

Зчитує новий зразок за допомогою magnet_raw() і повертає компенсований вектор магнітного поля (x, y, z). Компенсація використовує калібрувальні значення, зчитані під час ініціалізації, і відповідає референсному C-драйверу від Bosch.