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
LSM9DS1pé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.busEgy beállított
machine.I2Cbusz, amelyhez az érzékelő csatlakozik.address_imuA gyorsulásmérő/giroszkóp alegység 7 bites I2C-címe. Alapértelmezett értéke
0x6B.address_magnetA magnetométer alegység 7 bites I2C-címe. Alapértelmezett értéke
0x1E.gyro_odrA giroszkóp kimeneti adatsebessége Hz-ben. A következők egyikének kell lennie:
0(ki),14.9,59.5,119,238,476vagy952.gyro_scaleA giroszkóp teljes mérési tartománya fok/másodpercben. A következők egyikének kell lennie:
245,500vagy2000.accel_odrA gyorsulásmérő kimeneti adatsebessége Hz-ben. Ugyanaz az értékkészlet, mint a
gyro_odresetében.accel_scaleA gyorsulásmérő teljes mérési tartománya g-ben. A következők egyikének kell lennie:
2,4,8vagy16.magnet_odrA magnetométer kimeneti adatsebessége Hz-ben. A következők egyikének kell lennie:
0.625,1.25,2.5,5,10,20,40vagy80.magnet_scaleA magnetométer teljes mérési tartománya gaussban. A következők egyikének kell lennie:
4,8,12vagy16.
- calibrate_magnet(offset: tuple[float, float, float]) None¶
Egy lágyvas-eltolásvektort ír a magnetométer
OFFSET_REG_*_Mregisztereibe. Az eltolás ugyanazokban az egységekben van megadva, mint amit amagnet()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_Iregiszterének értékét.
- accel() tuple[float, float, float]¶
Visszaadja a gyorsulásvektort
(x, y, z)a standard gravitáció egységeiben (1 g = 9,81 m/s²).
- 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 agyro()és azaccel()egységeivel.