lsm9ds1 — LSM9DS1 9-axlig IMU¶
Drivrutin för ST:s iNEMO tröghetsmodul LSM9DS1 över I2C. LSM9DS1 kombinerar en 3-axlig accelerometer, ett 3-axligt gyroskop och en 3-axlig magnetometer i ett enda paket; accelerometern och gyroskopet delar en I2C-adress medan magnetometern svarar på en andra adress. Denna drivrutin aktiverar även chipets 16 poster djupa FIFO för gyro/accel så att de senaste samplen kan tömmas effektivt via iter_accel_gyro().
Exempel:
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)
Klasser¶
- 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)¶
Skapar en
LSM9DS1-instans, verifierar WHO_AM_I-registren för båda delenheterna, konfigurerar alla tre sensorerna och aktiverar FIFO för accel/gyro i kontinuerligt läge.busEn konfigurerad
machine.I2C-buss som sensorn är ansluten till.address_imu7-bitars I2C-adress för accelerometer-/gyroskopdelenheten. Är som standard
0x6B.address_magnet7-bitars I2C-adress för magnetometerdelenheten. Är som standard
0x1E.gyro_odrGyroskopets utdatahastighet i Hz. Måste vara en av
0(av),14.9,59.5,119,238,476eller952.gyro_scaleGyroskopets fullskaleområde i grader per sekund. Måste vara en av
245,500eller2000.accel_odrAccelerometerns utdatahastighet i Hz. Samma uppsättning värden som
gyro_odr.accel_scaleAccelerometerns fullskaleområde i g. Måste vara en av
2,4,8eller16.magnet_odrMagnetometerns utdatahastighet i Hz. Måste vara en av
0.625,1.25,2.5,5,10,20,40eller80.magnet_scaleMagnetometerns fullskaleområde i gauss. Måste vara en av
4,8,12eller16.
- calibrate_magnet(offset: tuple[float, float, float]) None¶
Skriver en hård-järn-offsetvektor in i magnetometerns
OFFSET_REG_*_M-register. Offseten anges i samma enheter sommagnet()returnerar (gauss); varje komponent konverteras till råa LSB med den konfigurerade magnetometerskalan innan den skrivs.
- gyro_id() bytes¶
Returnerar enbytevärdet i registret
WHO_AM_Iför accelerometer-/gyroskopdelenheten.