bmm150 --- Từ kế 3 trục BMM150

Driver cho cảm biến địa từ 3 trục Bosch BMM150 qua I2C. Khi khởi tạo, driver đặt lại mềm thiết bị, chuyển sang chế độ hoạt động thông thường ở ODR theo yêu cầu, và đọc các thanh ghi trim được dùng trong phương trình bù Bosch để chuyển đổi kết quả đọc thô thành giá trị từ trường đã hiệu chuẩn.

Ghi chú

Chế độ SPI không được driver này hỗ trợ; truyền bus không phải I2C sẽ báo lỗi ValueError.

Ví dụ:

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)

Các lớp

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

Khởi tạo một thể hiện BMM150, đặt lại mềm chip, xác minh ID chip, cấu hình ở chế độ thông thường tại magnet_odr Hz và đọc các thanh ghi trim của nhà máy.

bus

Bus machine.I2C đã được cấu hình mà cảm biến kết nối vào.

cs

Dành riêng cho chế độ SPI. Phải để là None; SPI hiện chưa được triển khai và truyền bus không phải I2C sẽ báo lỗi ValueError.

address

Địa chỉ I2C 7 bit của thiết bị. Mặc định là 0x10.

magnet_odr

Tốc độ dữ liệu đầu ra của từ kế theo Hz. Phải là một trong các giá trị 2, 6, 8, 10, 15, 20, 25 hoặc 30; giá trị khác sẽ báo lỗi ValueError.

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

Kiểm tra cờ sẵn sàng dữ liệu và trả về các kết quả đọc (x, y, z, hall) thô dạng số nguyên có dấu, với các bit dưới LSB đã được dịch ra. Báo lỗi OSError("Data not ready") nếu không có mẫu nào sẵn sàng trong vòng mười lần thử lại.

magnet() tuple[float, float, float]

Đọc một mẫu mới thông qua magnet_raw() và trả về vector từ trường đã bù (x, y, z). Việc bù sử dụng các giá trị trim đọc khi khởi tạo và phù hợp với driver C tham chiếu do Bosch cung cấp.