lsm9ds1 — LSM9DS1 9-akselinen IMU¶
Ajuri ST:n LSM9DS1 iNEMO -inertiamoduulille I2C:n kautta. LSM9DS1 yhdistää 3-akselisen kiihtyvyysanturin, 3-akselisen gyroskoopin ja 3-akselisen magnetometrin yhteen koteloon; kiihtyvyysanturi ja gyroskooppi jakavat saman I2C-osoitteen, kun taas magnetometri vastaa toisessa osoitteessa. Tämä ajuri ottaa lisäksi käyttöön piirin 16 syvän gyro-/kiihtyvyysanturin FIFO:n, jotta viimeisimmät näytteet voidaan tyhjentää tehokkaasti metodin iter_accel_gyro() kautta.
Esimerkki:
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)
Luokat¶
- 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)¶
Luo
LSM9DS1-instanssin, varmentaa molempien alilaitteiden WHO_AM_I-rekisterit, määrittää kaikki kolme sensoria ja ottaa käyttöön kiihtyvyysanturin/gyron FIFO:n jatkuvassa tilassa.busMääritetty
machine.I2C-väylä, johon sensori on liitetty.address_imuKiihtyvyysanturin/gyroskoopin alilaitteen 7-bittinen I2C-osoite. Oletuksena
0x6B.address_magnetMagnetometrin alilaitteen 7-bittinen I2C-osoite. Oletuksena
0x1E.gyro_odrGyroskoopin lähtödatanopeus hertseinä. Täytyy olla yksi seuraavista:
0(pois),14.9,59.5,119,238,476tai952.gyro_scaleGyroskoopin täysasteikkoalue asteina sekunnissa. Täytyy olla yksi seuraavista:
245,500tai2000.accel_odrKiihtyvyysanturin lähtödatanopeus hertseinä. Sama arvojoukko kuin
gyro_odr.accel_scaleKiihtyvyysanturin täysasteikkoalue g-yksikköinä. Täytyy olla yksi seuraavista:
2,4,8tai16.magnet_odrMagnetometrin lähtödatanopeus hertseinä. Täytyy olla yksi seuraavista:
0.625,1.25,2.5,5,10,20,40tai80.magnet_scaleMagnetometrin täysasteikkoalue gausseina. Täytyy olla yksi seuraavista:
4,8,12tai16.
- calibrate_magnet(offset: tuple[float, float, float]) None¶
Kirjoittaa kova-rauta-poikkeamavektorin magnetometrin
OFFSET_REG_*_M-rekistereihin. Poikkeama annetaan samoissa yksiköissä kuin metodimagnet()palauttaa (gauss); jokainen komponentti muunnetaan raaoiksi LSB-arvoiksi käyttäen määritettyä magnetometrin asteikkoa ennen kirjoittamista.
- gyro_id() bytes¶
Palauttaa kiihtyvyysanturin/gyroskoopin alilaitteen yksitavuisen
WHO_AM_I-rekisterin arvon.
- accel() tuple[float, float, float]¶
Palauttaa kiihtyvyysvektorin
(x, y, z)standardiputoamiskiihtyvyyden yksikköinä (1 g = 9,81 m/s²).
- iter_accel_gyro() Iterator[tuple[tuple[float, float, float], tuple[float, float, float]]]¶
Generaattori, joka tuottaa
(gyro, accel)-monikon jokaiselle tällä hetkellä FIFO:ssa saatavilla olevalle näytteelle ja pysähtyy, kun FIFO on tyhjä. Jokaisella komponenttivektorilla on samat yksiköt kuin metodeillagyro()jaaccel()vastaavasti.