bmm150 --- مقياس مغناطيسي ثلاثي المحاور BMM150

مشغّل للمستشعر الجيومغناطيسي ثلاثي المحاور 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 Hz وقراءة سجلات الضبط الدقيق المصنعية.

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). يستخدم التعويض قيم الضبط الدقيق المقروءة عند الإنشاء ويطابق المشغّل المرجعي المكتوب بلغة C والمقدَّم من Bosch.