bmm150 — BMM150 מגנטומטר 3 צירים

מנהל התקן עבור החיישן הגאומגנטי בעל 3 הצירים Bosch BMM150 דרך I2C. בעת היצירה מנהל ההתקן מבצע איפוס רך להתקן, מעביר אותו למצב פעולה רגיל בקצב ה-ODR המבוקש, וקורא את אוגרי הכיול (trim) המשמשים את משוואות הפיצוי של 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 Hz וקורא את אוגרי הכיול (trim) של היצרן.

bus

אפיק machine.I2C מוגדר שאליו מחובר החיישן.

cs

שמור עבור מצב SPI. חייב להישאר None; SPI אינו מיושם כעת ואספקת אפיק שאינו I2C מעלה ValueError.

address

כתובת I2C בת 7 סיביות של ההתקן. ברירת המחדל היא 0x10.

magnet_odr

קצב נתוני הפלט של המגנטומטר ב-Hz. חייב להיות אחד מ-2, 6, 8, 10, 15, 20, 25 או 30; כל ערך אחר מעלה ValueError.

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

סוקר את דגל מוכנות-הנתונים ומחזיר את הקריאות הגולמיות עם הסימן (x, y, z, hall) כמספרים שלמים, כאשר סיביות תת-ה-LSB כבר הוסרו בהזזה. מעלה OSError("Data not ready") אם לא מתקבל דגם תוך עשרה ניסיונות חוזרים.

magnet() tuple[float, float, float]

קורא דגם טרי באמצעות magnet_raw() ומחזיר את וקטור השדה המגנטי המפוצה (x, y, z). הפיצוי משתמש בערכי הכיול (trim) שנקראו בעת היצירה ותואם את מנהל ההתקן הייחוס בשפת C המסופק על ידי Bosch.