lsm9ds1 — LSM9DS1 9 tengelyes IMU

Illesztőprogram az ST LSM9DS1 iNEMO inerciális modulhoz I2C-n keresztül. Az LSM9DS1 egyetlen tokban egyesíti a 3 tengelyes gyorsulásmérőt, a 3 tengelyes giroszkópot és a 3 tengelyes magnetométert; a gyorsulásmérő és a giroszkóp egy I2C-címen osztozik, míg a magnetométer egy második címen válaszol. Ez az illesztőprogram emellett engedélyezi a chipen lévő 16 mély giroszkóp/gyorsulásmérő FIFO-t, hogy a legutóbbi mintákat hatékonyan ki lehessen üríteni az iter_accel_gyro() révén.

Példa:

import time
from machine import Pin, I2C
from lsm9ds1 import LSM9DS1

imu = LSM9DS1(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("Magnetometer:  x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}".format(*imu.magnet()))
    print("Gyroscope:     x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}".format(*imu.gyro()))
    time.sleep_ms(100)

Osztályok

class lsm9ds1.LSM9DS1(bus: machine.I2C, address_imu: int = 0x6B, address_magnet: int = 0x1E, gyro_odr: float = 952, gyro_scale: int = 245, accel_odr: float = 952, accel_scale: int = 4, magnet_odr: int = 80, magnet_scale: int = 4)

Létrehoz egy LSM9DS1 példányt, ellenőrzi mindkét alegység WHO_AM_I regisztereit, konfigurálja mind a három érzékelőt, és folyamatos módban engedélyezi a gyorsulásmérő/giroszkóp FIFO-t.

bus

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

address_imu

A gyorsulásmérő/giroszkóp alegység 7 bites I2C-címe. Alapértelmezett értéke 0x6B.

address_magnet

A magnetométer alegység 7 bites I2C-címe. Alapértelmezett értéke 0x1E.

gyro_odr

A giroszkóp kimeneti adatsebessége Hz-ben. A következők egyikének kell lennie: 0 (ki), 14.9, 59.5, 119, 238, 476 vagy 952.

gyro_scale

A giroszkóp teljes mérési tartománya fok/másodpercben. A következők egyikének kell lennie: 245, 500 vagy 2000.

accel_odr

A gyorsulásmérő kimeneti adatsebessége Hz-ben. Ugyanaz az értékkészlet, mint a gyro_odr esetében.

accel_scale

A gyorsulásmérő teljes mérési tartománya g-ben. A következők egyikének kell lennie: 2, 4, 8 vagy 16.

magnet_odr

A magnetométer kimeneti adatsebessége Hz-ben. A következők egyikének kell lennie: 0.625, 1.25, 2.5, 5, 10, 20, 40 vagy 80.

magnet_scale

A magnetométer teljes mérési tartománya gaussban. A következők egyikének kell lennie: 4, 8, 12 vagy 16.

calibrate_magnet(offset: tuple[float, float, float]) None

Egy lágyvas-eltolásvektort ír a magnetométer OFFSET_REG_*_M regisztereibe. Az eltolás ugyanazokban az egységekben van megadva, mint amit a magnet() visszaad (gauss); minden összetevő a beállított magnetométer-skála használatával nyers LSB-vé alakul, mielőtt kiírásra kerül.

gyro_id() bytes

Visszaadja a gyorsulásmérő/giroszkóp alegység egybájtos WHO_AM_I regiszterének értékét.

magent_id() bytes

Visszaadja a magnetométer alegység egybájtos WHO_AM_I regiszterének értékét.

gyro() tuple[float, float, float]

Visszaadja a giroszkóp (x, y, z) vektorát fok/másodpercben.

accel() tuple[float, float, float]

Visszaadja a gyorsulásvektort (x, y, z) a standard gravitáció egységeiben (1 g = 9,81 m/s²).

magnet() tuple[float, float, float]

Visszaadja a mágnesesmező-vektort (x, y, z) gaussban.

iter_accel_gyro() Iterator[tuple[tuple[float, float, float], tuple[float, float, float]]]

Generátor, amely minden, jelenleg a FIFO-ban elérhető mintához egy (gyro, accel) rendezett párt ad ki, és leáll, amint a FIFO kiürül. Az egyes összetevővektorok egységei rendre megegyeznek a gyro() és az accel() egységeivel.