lsm9ds1 — LSM9DS1 9-osni IMU¶
Upravljački program za ST LSM9DS1 iNEMO inercijalni modul putem I2C. LSM9DS1 kombinira 3-osni akcelerometar, 3-osni žiroskop i 3-osni magnetometar u jednom kućištu; akcelerometar i žiroskop dijele I2C adresu, dok magnetometar odgovara na drugoj adresi. Ovaj upravljački program također omogućuje 16-mjesni žiro/akcel FIFO na čipu tako da se najnoviji uzorci mogu učinkovito isprazniti putem iter_accel_gyro().
Primjer:
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)
Klase¶
- 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)¶
Konstruira
LSM9DS1instancu, provjerava WHO_AM_I registre oba poduređaja, konfigurira sva tri senzora i omogućuje akcel/žiro FIFO u kontinuiranom načinu rada.busKonfigurirana
machine.I2Csabirnica na koju je senzor priključen.address_imu7-bitna I2C adresa poduređaja akcelerometar/žiroskop. Zadano
0x6B.address_magnet7-bitna I2C adresa poduređaja magnetometra. Zadano
0x1E.gyro_odrBrzina izlaznih podataka žiroskopa u Hz. Mora biti jedna od
0(isključeno),14.9,59.5,119,238,476ili952.gyro_scaleRaspon pune skale žiroskopa u stupnjevima po sekundi. Mora biti jedan od
245,500ili2000.accel_odrBrzina izlaznih podataka akcelerometra u Hz. Isti skup vrijednosti kao
gyro_odr.accel_scaleRaspon pune skale akcelerometra u g. Mora biti jedan od
2,4,8ili16.magnet_odrBrzina izlaznih podataka magnetometra u Hz. Mora biti jedna od
0.625,1.25,2.5,5,10,20,40ili80.magnet_scaleRaspon pune skale magnetometra u gausima. Mora biti jedan od
4,8,12ili16.
- calibrate_magnet(offset: tuple[float, float, float]) None¶
Zapisuje vektor pomaka tvrdog željeza (hard-iron) u registre
OFFSET_REG_*_Mmagnetometra. Pomak je zadan u istim jedinicama koje vraćamagnet()(gaus); svaka se komponenta pretvara u sirove LSB-ove pomoću konfigurirane skale magnetometra prije zapisivanja.