bmm150 — 3-осевой магнитометр BMM150

Драйвер для 3-осевого геомагнитного датчика Bosch BMM150 через 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.