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.

bus

Määritetty machine.I2C -väylä, johon sensori on liitetty.

address_imu

Kiihtyvyysanturin/gyroskoopin alilaitteen 7-bittinen I2C-osoite. Oletuksena 0x6B.

address_magnet

Magnetometrin alilaitteen 7-bittinen I2C-osoite. Oletuksena 0x1E.

gyro_odr

Gyroskoopin lähtödatanopeus hertseinä. Täytyy olla yksi seuraavista: 0 (pois), 14.9, 59.5, 119, 238, 476 tai 952.

gyro_scale

Gyroskoopin täysasteikkoalue asteina sekunnissa. Täytyy olla yksi seuraavista: 245, 500 tai 2000.

accel_odr

Kiihtyvyysanturin lähtödatanopeus hertseinä. Sama arvojoukko kuin gyro_odr.

accel_scale

Kiihtyvyysanturin täysasteikkoalue g-yksikköinä. Täytyy olla yksi seuraavista: 2, 4, 8 tai 16.

magnet_odr

Magnetometrin lähtödatanopeus hertseinä. Täytyy olla yksi seuraavista: 0.625, 1.25, 2.5, 5, 10, 20, 40 tai 80.

magnet_scale

Magnetometrin täysasteikkoalue gausseina. Täytyy olla yksi seuraavista: 4, 8, 12 tai 16.

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

Kirjoittaa kova-rauta-poikkeamavektorin magnetometrin OFFSET_REG_*_M -rekistereihin. Poikkeama annetaan samoissa yksiköissä kuin metodi magnet() 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.

magent_id() bytes

Palauttaa magnetometrin alilaitteen yksitavuisen WHO_AM_I -rekisterin arvon.

gyro() tuple[float, float, float]

Palauttaa gyroskoopin vektorin (x, y, z) asteina sekunnissa.

accel() tuple[float, float, float]

Palauttaa kiihtyvyysvektorin (x, y, z) standardiputoamiskiihtyvyyden yksikköinä (1 g = 9,81 m/s²).

magnet() tuple[float, float, float]

Palauttaa magneettikenttävektorin (x, y, z) gausseina.

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 metodeilla gyro() ja accel() vastaavasti.