lsm9ds1 — 9-osiowa jednostka IMU LSM9DS1¶
Sterownik do modułu inercyjnego ST LSM9DS1 iNEMO przez I2C. LSM9DS1 łączy 3-osiowy akcelerometr, 3-osiowy żyroskop i 3-osiowy magnetometr w jednej obudowie; akcelerometr i żyroskop współdzielą adres I2C, podczas gdy magnetometr odpowiada pod drugim adresem. Ten sterownik włącza również wbudowaną 16-elementową kolejkę FIFO żyroskopu/akcelerometru, dzięki czemu najnowsze próbki mogą być efektywnie pobierane przez iter_accel_gyro().
Przykład:
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)
Klasy¶
- 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)¶
Tworzy instancję
LSM9DS1, weryfikuje rejestry WHO_AM_I obu podurządzeń, konfiguruje wszystkie trzy sensory i włącza kolejkę FIFO akcelerometru/żyroskopu w trybie ciągłym.busSkonfigurowana magistrala
machine.I2C, do której podłączony jest sensor.address_imu7-bitowy adres I2C podurządzenia akcelerometr/żyroskop. Domyślnie
0x6B.address_magnet7-bitowy adres I2C podurządzenia magnetometru. Domyślnie
0x1E.gyro_odrCzęstotliwość danych wyjściowych żyroskopu w Hz. Musi być jedną z wartości:
0(wyłączony),14.9,59.5,119,238,476lub952.gyro_scalePełnoskalowy zakres żyroskopu w stopniach na sekundę. Musi być jedną z wartości:
245,500lub2000.accel_odrCzęstotliwość danych wyjściowych akcelerometru w Hz. Ten sam zestaw wartości co
gyro_odr.accel_scalePełnoskalowy zakres akcelerometru w g. Musi być jedną z wartości:
2,4,8lub16.magnet_odrCzęstotliwość danych wyjściowych magnetometru w Hz. Musi być jedną z wartości:
0.625,1.25,2.5,5,10,20,40lub80.magnet_scalePełnoskalowy zakres magnetometru w gausach. Musi być jedną z wartości:
4,8,12lub16.
- calibrate_magnet(offset: tuple[float, float, float]) None¶
Zapisuje wektor przesunięcia twardego żelaza (hard-iron) do rejestrów
OFFSET_REG_*_Mmagnetometru. Przesunięcie podaje się w tych samych jednostkach, które zwracamagnet()(gausy); każda składowa jest przeliczana na surowe LSB przy użyciu skonfigurowanej skali magnetometru przed zapisem.
- accel() tuple[float, float, float]¶
Zwraca wektor przyspieszenia
(x, y, z)w jednostkach standardowego przyspieszenia ziemskiego (1 g = 9,81 m/s²).
- iter_accel_gyro() Iterator[tuple[tuple[float, float, float], tuple[float, float, float]]]¶
Generator, który zwraca krotki
(gyro, accel)dla każdej próbki aktualnie dostępnej w kolejce FIFO i zatrzymuje się, gdy kolejka FIFO jest pusta. Każdy wektor składowych ma te same jednostki co odpowiedniogyro()iaccel().