lsm9ds1 — IMU de 9 eixos LSM9DS1¶
Driver para o módulo inercial ST LSM9DS1 iNEMO via I2C. O LSM9DS1 combina um acelerômetro de 3 eixos, um giroscópio de 3 eixos e um magnetômetro de 3 eixos em um único encapsulamento; o acelerômetro e o giroscópio compartilham um endereço I2C enquanto o magnetômetro responde em um segundo endereço. Este driver também habilita a FIFO de giroscópio/acelerômetro de 16 posições no chip para que as amostras mais recentes possam ser drenadas de forma eficiente através de iter_accel_gyro().
Exemplo:
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)¶
Constrói uma instância de
LSM9DS1, verifica os registradores WHO_AM_I de ambos os subdispositivos, configura os três sensores e habilita a FIFO de acelerômetro/giroscópio em modo contínuo.busUm barramento
machine.I2Cconfigurado ao qual o sensor está conectado.address_imuEndereço I2C de 7 bits do subdispositivo acelerômetro/giroscópio. O padrão é
0x6B.address_magnetEndereço I2C de 7 bits do subdispositivo magnetômetro. O padrão é
0x1E.gyro_odrTaxa de dados de saída do giroscópio em Hz. Deve ser um de
0(desligado),14.9,59.5,119,238,476ou952.gyro_scaleFaixa de fundo de escala do giroscópio em graus por segundo. Deve ser um de
245,500ou2000.accel_odrTaxa de dados de saída do acelerômetro em Hz. Mesmo conjunto de valores de
gyro_odr.accel_scaleFaixa de fundo de escala do acelerômetro em g. Deve ser um de
2,4,8ou16.magnet_odrTaxa de dados de saída do magnetômetro em Hz. Deve ser um de
0.625,1.25,2.5,5,10,20,40ou80.magnet_scaleFaixa de fundo de escala do magnetômetro em gauss. Deve ser um de
4,8,12ou16.
- calibrate_magnet(offset: tuple[float, float, float]) None¶
Escreve um vetor de offset hard-iron nos registradores
OFFSET_REG_*_Mdo magnetômetro. O offset é dado nas mesmas unidades quemagnet()retorna (gauss); cada componente é convertido para LSBs brutos usando a escala configurada do magnetômetro antes de ser escrito.
- gyro_id() bytes¶
Retorna o valor de um byte do registrador
WHO_AM_Ido subdispositivo acelerômetro/giroscópio.
- magent_id() bytes¶
Retorna o valor de um byte do registrador
WHO_AM_Ido subdispositivo magnetômetro.