bmi270 — BMI270 6 eksenli IMU

Bosch BMI270 düşük güç tüketimli 6 eksenli ataletsel ölçüm birimi (3 eksenli ivmeölçer artı 3 eksenli jiroskop) için I2C üzerinden çalışan sürücü. Sürücü, yapıcıda istenen çıktı veri hızlarını ve tam ölçek aralıklarını yapılandırmadan önce eksiksiz BMI270 başlatma dizisini gerçekleştirir — yazılımsal sıfırlama, güç tasarrufunu devre dışı bırakma, yapılandırma bloğunun (blob) yüklenmesi ve durum doğrulaması.

Sınıf, isteğe bağlı olarak harici bir bmm150.BMM150 manyetometre örneğine bağlanabilir; böylece çağıranlar bir BMI270 + BMM150 çiftini magnet() yöntemi aracılığıyla tek bir 9 eksenli aygıt olarak ele alabilir.

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 bmi270 import BMI270

imu = BMI270(I2C(1, scl=Pin("P15"), sda=Pin("P14")))

while True:
    print("Accelerometer: x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}".format(*imu.accel()))
    print("Gyroscope:     x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}".format(*imu.gyro()))
    time.sleep_ms(100)

Sınıflar

class bmi270.BMI270(bus: machine.I2C, cs: machine.Pin | None = None, address: int = 0x68, gyro_odr: float = 100, gyro_scale: int = 2000, accel_odr: float = 100, accel_scale: int = 4, bmm_magnet: BMM150 | None = None)

Bir BMI270 örneği oluşturur ve eksiksiz yapılandırma yükleme başlatma dizisini çalıştırır. Yonga kimliği eşleşmezse veya yükleme dizisi başarısız olursa OSError hatası oluşturur.

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 0x68‘dir; bazı kartlar SDO pinini yüksek seviyeye bağlayarak 0x69 adresini seçer.

gyro_odr

Hz cinsinden jiroskop çıktı veri hızı. 0.78, 1.5, 3.1, 6.25, 12.5, 25, 50, 100, 200, 400, 800 veya 1200 değerlerinden biri olmalıdır.

gyro_scale

Saniyede derece cinsinden jiroskop tam ölçek aralığı. 125, 250, 500, 1000 veya 2000 değerlerinden biri olmalıdır.

accel_odr

Hz cinsinden ivmeölçer çıktı veri hızı. gyro_odr ile aynı değer kümesi.

accel_scale

g cinsinden ivmeölçer tam ölçek aralığı. 2, 4, 8 veya 16 değerlerinden biri olmalıdır.

bmm_magnet

İsteğe bağlı bmm150.BMM150 örneği. Sağlandığında, magnet() yöntemi ona devreder; aksi takdirde magnet() sıfır döndürür.

reset() None

BMI270 yazılımsal sıfırlama komutunu yayınlar. Bunu çağırdıktan sonra, aygıtın daha fazla kullanılmadan önce yeniden başlatılması gerekir.

gyro() tuple[float, float, float]

Jiroskop vektörünü (x, y, z) saniyede derece cinsinden, gyro_scale değerine göre ölçeklenmiş olarak döndürür.

accel() tuple[float, float, float]

İvme vektörünü (x, y, z) standart yerçekimi birimleri cinsinden (1 g = 9.81 m/s²), accel_scale değerine göre ölçeklenmiş olarak döndürür.

magnet() tuple[float, float, float]

Yapıcıda bir bmm_magnet sağlanmışsa, o aygıttan en son manyetometre okumasını döndürür. Aksi takdirde (0.0, 0.0, 0.0) döndürür.