lsm9ds1 — IMU 9 axes LSM9DS1¶
Pilote pour le module inertiel ST LSM9DS1 iNEMO via I2C. Le LSM9DS1 combine un accéléromètre 3 axes, un gyroscope 3 axes et un magnétomètre 3 axes dans un seul boîtier ; l’accéléromètre et le gyroscope partagent une adresse I2C tandis que le magnétomètre répond sur une seconde adresse. Ce pilote active également la FIFO gyroscope/accéléromètre de 16 niveaux de la puce afin que les échantillons les plus récents puissent être vidés efficacement via iter_accel_gyro().
Exemple
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)
Classes¶
- 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)¶
Construit une instance
LSM9DS1, vérifie les registres WHO_AM_I des deux sous-composants, configure les trois capteurs et active la FIFO accéléromètre/gyroscope en mode continu.busUn bus
machine.I2Cconfiguré auquel le capteur est connecté.address_imuAdresse I2C 7 bits du sous-composant accéléromètre/gyroscope. Vaut par défaut
0x6B.address_magnetAdresse I2C 7 bits du sous-composant magnétomètre. Vaut par défaut
0x1E.gyro_odrDébit de données en sortie du gyroscope en Hz. Doit être l’une des valeurs
0(désactivé),14.9,59.5,119,238,476ou952.gyro_scalePlage pleine échelle du gyroscope en degrés par seconde. Doit être l’une des valeurs
245,500ou2000.accel_odrDébit de données en sortie de l’accéléromètre en Hz. Même ensemble de valeurs que
gyro_odr.accel_scalePlage pleine échelle de l’accéléromètre en g. Doit être l’une des valeurs
2,4,8ou16.magnet_odrDébit de données en sortie du magnétomètre en Hz. Doit être l’une des valeurs
0.625,1.25,2.5,5,10,20,40ou80.magnet_scalePlage pleine échelle du magnétomètre en gauss. Doit être l’une des valeurs
4,8,12ou16.
- calibrate_magnet(offset: tuple[float, float, float]) None¶
Écrit un vecteur de décalage de fer dur (hard-iron) dans les registres
OFFSET_REG_*_Mdu magnétomètre. Le décalage est donné dans les mêmes unités que celles renvoyées parmagnet()(gauss) ; chaque composante est convertie en LSB bruts à l’aide de l’échelle configurée du magnétomètre avant d’être écrite.
- gyro_id() bytes¶
Renvoie la valeur du registre
WHO_AM_Id’un octet du sous-composant accéléromètre/gyroscope.
- magent_id() bytes¶
Renvoie la valeur du registre
WHO_AM_Id’un octet du sous-composant magnétomètre.
- accel() tuple[float, float, float]¶
Renvoie le vecteur d’accélération
(x, y, z)en unités de gravité standard (1 g = 9,81 m/s²).
- iter_accel_gyro() Iterator[tuple[tuple[float, float, float], tuple[float, float, float]]]¶
Générateur qui produit des tuples
(gyro, accel)pour chaque échantillon actuellement disponible dans la FIFO et s’arrête une fois la FIFO vide. Chaque vecteur de composante a les mêmes unités quegyro()etaccel()respectivement.