bmi270 — BMI270 6 tengelyes IMU

Illesztőprogram a Bosch BMI270 kis fogyasztású, 6 tengelyes inerciális mérőegységhez (3 tengelyes gyorsulásmérő és 3 tengelyes giroszkóp) I2C felett. Az illesztőprogram a teljes BMI270 inicializálási sorozatot elvégzi a példányosításkor — szoftveres újraindítás, az energiatakarékos üzemmód letiltása, a konfigurációs adatblokk feltöltése és az állapot ellenőrzése —, mielőtt beállítaná a kért kimeneti adatsebességeket és teljes mérési tartományokat.

Az osztály opcionálisan összekapcsolható egy külső bmm150.BMM150 magnetométer-példánnyal, így a hívók a BMI270 + BMM150 párt egyetlen 9 tengelyes eszközként kezelhetik a magnet() metóduson keresztül.

Megjegyzés

Az SPI módot ez az illesztőprogram nem támogatja; nem I2C busz átadása ValueError hibát vált ki.

Példa:

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)

Osztályok

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)

Létrehoz egy BMI270 példányt, és lefuttatja a teljes konfigurációbetöltő inicializálási sorozatot. OSError hibát vált ki, ha a chip azonosítója nem egyezik, vagy ha a betöltési sorozat sikertelen.

bus

Egy beállított machine.I2C busz, amelyhez az érzékelő csatlakozik.

cs

Az SPI módhoz fenntartva. None értéken kell hagyni; az SPI jelenleg nincs implementálva, és nem I2C busz átadása ValueError hibát vált ki.

address

Az eszköz 7 bites I2C címe. Alapértelmezett értéke 0x68; egyes panelek az SDO lábat magas szintre húzzák, ami a 0x69 címet választja.

gyro_odr

A giroszkóp kimeneti adatsebessége Hz-ben. A következő értékek egyike lehet: 0.78, 1.5, 3.1, 6.25, 12.5, 25, 50, 100, 200, 400, 800 vagy 1200.

gyro_scale

A giroszkóp teljes mérési tartománya fok/másodpercben. A következő értékek egyike lehet: 125, 250, 500, 1000 vagy 2000.

accel_odr

A gyorsulásmérő kimeneti adatsebessége Hz-ben. Ugyanazok az értékek lehetnek, mint a gyro_odr esetében.

accel_scale

A gyorsulásmérő teljes mérési tartománya g-ben. A következő értékek egyike lehet: 2, 4, 8 vagy 16.

bmm_magnet

Opcionális bmm150.BMM150 példány. Ha meg van adva, a magnet() metódus ehhez delegál; egyébként a magnet() nullákat ad vissza.

reset() None

Kiadja a BMI270 szoftveres újraindítási parancsát. A meghívása után az eszközt újra kell inicializálni a további használat előtt.

gyro() tuple[float, float, float]

Visszaadja a giroszkóp (x, y, z) vektorát fok/másodpercben, a gyro_scale szerint skálázva.

accel() tuple[float, float, float]

Visszaadja a gyorsulásvektort (x, y, z) a standard nehézségi gyorsulás egységeiben (1 g = 9.81 m/s²), a accel_scale szerint skálázva.

magnet() tuple[float, float, float]

Ha a példányosításkor megadtak egy bmm_magnet értéket, visszaadja az adott eszköz legutóbbi magnetométer-leolvasását. Egyébként a (0.0, 0.0, 0.0) értéket adja vissza.