lsm9ds1 — 9-осьовий IMU LSM9DS1¶
Драйвер для інерціального модуля iNEMO ST LSM9DS1 через I2C. LSM9DS1 поєднує в одному корпусі 3-осьовий акселерометр, 3-осьовий гіроскоп і 3-осьовий магнетометр; акселерометр і гіроскоп мають спільну I2C-адресу, тоді як магнетометр відповідає на другу адресу. Цей драйвер також вмикає вбудований FIFO глибиною 16 для гіроскопа/акселерометра, щоб можна було ефективно зчитувати останні зразки через iter_accel_gyro().
Приклад:
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)
Класи¶
- 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)¶
Створює екземпляр
LSM9DS1, перевіряє регістри WHO_AM_I обох підпристроїв, налаштовує всі три датчики та вмикає FIFO акселерометра/гіроскопа в безперервному режимі.busНалаштована шина
machine.I2C, до якої підключено датчик.address_imu7-бітна I2C-адреса підпристрою акселерометра/гіроскопа. За замовчуванням
0x6B.address_magnet7-бітна I2C-адреса підпристрою магнетометра. За замовчуванням
0x1E.gyro_odrЧастота виведення даних гіроскопа в Гц. Має бути одним із значень:
0(вимкнено),14.9,59.5,119,238,476або952.gyro_scaleДіапазон повної шкали гіроскопа в градусах на секунду. Має бути одним із значень:
245,500або2000.accel_odrЧастота виведення даних акселерометра в Гц. Той самий набір значень, що й у
gyro_odr.accel_scaleДіапазон повної шкали акселерометра в g. Має бути одним із значень:
2,4,8або16.magnet_odrЧастота виведення даних магнетометра в Гц. Має бути одним із значень:
0.625,1.25,2.5,5,10,20,40або80.magnet_scaleДіапазон повної шкали магнетометра в гаусах. Має бути одним із значень:
4,8,12або16.
- calibrate_magnet(offset: tuple[float, float, float]) None¶
Записує вектор зміщення жорсткого заліза до регістрів
OFFSET_REG_*_Mмагнетометра. Зміщення задається в тих самих одиницях, що іmagnet()(гауси); кожна компонента перетворюється на сирі LSB з використанням налаштованого масштабу магнетометра перед записом.
- gyro_id() bytes¶
Повертає однобайтове значення регістра
WHO_AM_Iпідпристрою акселерометра/гіроскопа.