bmm150 — BMM150 3 eksenli manyetometre

Bosch BMM150 3 eksenli jeomanyetik sensör için I2C üzerinden çalışan sürücü. Yapıcıda sürücü, aygıtı yazılımsal olarak sıfırlar, istenen ODR’de normal çalışma moduna geçirir ve ham okumaları kalibre edilmiş manyetik alan değerlerine dönüştürmek için Bosch telafi denklemlerinin kullandığı düzeltme yazmaçlarını okur.

Not

SPI modu bu sürücü tarafından desteklenmez; I2C olmayan bir veri yolu geçirmek ValueError hatası oluşturur.

Örnek:

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)

Sınıflar

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

Bir BMM150 örneği oluşturur, yongayı yazılımsal olarak sıfırlar, yonga kimliğini doğrular, magnet_odr Hz değerinde normal mod için yapılandırır ve fabrika düzeltme yazmaçlarını okur.

bus

Sensörün bağlı olduğu, yapılandırılmış bir machine.I2C veri yolu.

cs

SPI modu için ayrılmıştır. None olarak bırakılmalıdır; SPI şu anda uygulanmamıştır ve I2C olmayan bir veri yolu sağlamak ValueError hatası oluşturur.

address

Aygıtın 7 bitlik I2C adresi. Varsayılan değer 0x10‘dur.

magnet_odr

Hz cinsinden manyetometre çıktı veri hızı. 2, 6, 8, 10, 15, 20, 25 veya 30 değerlerinden biri olmalıdır; başka herhangi bir değer ValueError hatası oluşturur.

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

Veri-hazır bayrağını yoklar ve ham işaretli (x, y, z, hall) okumalarını, alt-LSB bitleri zaten kaydırılarak çıkarılmış halde tam sayı olarak döndürür. On deneme içinde hiçbir örnek hazır olmazsa OSError("Data not ready") hatası oluşturur.

magnet() tuple[float, float, float]

magnet_raw() aracılığıyla yeni bir örnek okur ve telafi edilmiş manyetik alan vektörünü (x, y, z) döndürür. Telafi, yapıcıda okunan düzeltme değerlerini kullanır ve Bosch tarafından sağlanan referans C sürücüsüyle eşleşir.