lsm9ds1 — 9osá IMU LSM9DS1¶
Ovladač pro inerciální modul ST LSM9DS1 iNEMO přes I2C. LSM9DS1 kombinuje 3osý akcelerometr, 3osý gyroskop a 3osý magnetometr v jediném pouzdře; akcelerometr a gyroskop sdílejí jednu I2C adresu, zatímco magnetometr reaguje na druhé adrese. Tento ovladač také povoluje 16místnou FIFO gyroskopu/akcelerometru na čipu, aby bylo možné nejnovější vzorky efektivně odebrat přes iter_accel_gyro().
Příklad:
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)
Třídy¶
- 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)¶
Vytvoří instanci
LSM9DS1, ověří registry WHO_AM_I obou podzařízení, nakonfiguruje všechny tři senzory a povolí FIFO akcelerometru/gyroskopu v nepřetržitém režimu.busNakonfigurovaná sběrnice
machine.I2C, k níž je senzor připojen.address_imu7bitová I2C adresa podzařízení akcelerometru/gyroskopu. Výchozí hodnota je
0x6B.address_magnet7bitová I2C adresa podzařízení magnetometru. Výchozí hodnota je
0x1E.gyro_odrVýstupní datová rychlost gyroskopu v Hz. Musí být jedna z hodnot
0(vypnuto),14.9,59.5,119,238,476nebo952.gyro_scalePlný rozsah gyroskopu ve stupních za sekundu. Musí být jedna z hodnot
245,500nebo2000.accel_odrVýstupní datová rychlost akcelerometru v Hz. Stejná sada hodnot jako
gyro_odr.accel_scalePlný rozsah akcelerometru v g. Musí být jedna z hodnot
2,4,8nebo16.magnet_odrVýstupní datová rychlost magnetometru v Hz. Musí být jedna z hodnot
0.625,1.25,2.5,5,10,20,40nebo80.magnet_scalePlný rozsah magnetometru v gaussech. Musí být jedna z hodnot
4,8,12nebo16.
- calibrate_magnet(offset: tuple[float, float, float]) None¶
Zapíše vektor hard-iron offsetu do registrů
OFFSET_REG_*_Mmagnetometru. Offset se zadává ve stejných jednotkách, jaké vracímagnet()(gauss); každá složka se před zápisem převede na surové LSB pomocí nakonfigurovaného měřítka magnetometru.