bmi270 — BMI270 6-akselinen IMU

Ajuri Bosch BMI270 -pienitehoiselle 6-akseliselle inertiamittausyksikölle (3-akselinen kiihtyvyysanturi ja 3-akselinen gyroskooppi) I2C-väylän kautta. Ajuri suorittaa täyden BMI270-alustussekvenssin muodostuksen yhteydessä — pehmeä nollaus, virransäästön poiskytkentä, konfiguraatio-blobin lataus ja tilan varmennus — ennen kuin se asettaa pyydetyt ulostulodataajat ja täysasteikkoalueet.

Luokka voidaan valinnaisesti liittää ulkoiseen bmm150.BMM150-magnetometri-instanssiin, jolloin kutsujat voivat käsitellä BMI270 + BMM150 -paria yhtenä 9-akselisena laitteena magnet()-metodin kautta.

Muista

Tämä ajuri ei tue SPI-tilaa; muun kuin I2C-väylän antaminen nostaa virheen ValueError.

Esimerkki:

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)

Luokat

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)

Muodostaa BMI270-instanssin ja suorittaa täyden konfiguraation latausalustussekvenssin. Nostaa virheen OSError, jos sirun tunnus ei täsmää tai jos latausekvenssi epäonnistuu.

bus

Konfiguroitu machine.I2C -väylä, johon sensori on liitetty.

cs

Varattu SPI-tilaa varten. Täytyy jättää arvoon None; SPI:tä ei ole tällä hetkellä toteutettu, ja muun kuin I2C-väylän antaminen nostaa virheen ValueError.

address

Laitteen 7-bittinen I2C-osoite. Oletuksena 0x68; jotkin kortit kytkevät SDO-nastan ylös, mikä valitsee osoitteen 0x69.

gyro_odr

Gyroskoopin ulostulodataaja hertseinä. Täytyy olla yksi seuraavista: 0.78, 1.5, 3.1, 6.25, 12.5, 25, 50, 100, 200, 400, 800 tai 1200.

gyro_scale

Gyroskoopin täysasteikkoalue asteina sekunnissa. Täytyy olla yksi seuraavista: 125, 250, 500, 1000 tai 2000.

accel_odr

Kiihtyvyysanturin ulostulodataaja hertseinä. Sama arvojoukko kuin gyro_odr.

accel_scale

Kiihtyvyysanturin täysasteikkoalue g-yksiköissä. Täytyy olla yksi seuraavista: 2, 4, 8 tai 16.

bmm_magnet

Valinnainen bmm150.BMM150-instanssi. Kun se annetaan, magnet()-metodi delegoi sille; muutoin magnet() palauttaa nollia.

reset() None

Lähettää BMI270:n pehmeän nollauskomennon. Tämän kutsumisen jälkeen laite täytyy alustaa uudelleen ennen jatkokäyttöä.

gyro() tuple[float, float, float]

Palauttaa gyroskoopin vektorin (x, y, z) asteina sekunnissa, skaalattuna gyro_scale-arvon mukaisesti.

accel() tuple[float, float, float]

Palauttaa kiihtyvyysvektorin (x, y, z) standardipainovoiman yksiköissä (1 g = 9.81 m/s²), skaalattuna accel_scale-arvon mukaisesti.

magnet() tuple[float, float, float]

Jos muodostuksen yhteydessä annettiin bmm_magnet, palauttaa viimeisimmän magnetometrilukeman kyseiseltä laitteelta. Muutoin palauttaa (0.0, 0.0, 0.0).