lsm9ds1 --- IMU 9-sumbu LSM9DS1¶
Driver untuk modul inersia iNEMO ST LSM9DS1 melalui I2C. LSM9DS1 menggabungkan akselerometer 3-sumbu, giroskop 3-sumbu, dan magnetometer 3-sumbu dalam satu paket; akselerometer dan giroskop berbagi alamat I2C sementara magnetometer merespons pada alamat kedua. Driver ini juga mengaktifkan FIFO giroskop/akselerasi 16-deep on-chip sehingga sampel terbaru dapat diambil secara efisien melalui iter_accel_gyro().
Contoh:
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)
Kelas¶
- 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)¶
Buat instans
LSM9DS1, verifikasi register WHO_AM_I dari kedua sub-perangkat, konfigurasikan ketiga sensor dan aktifkan FIFO akselerasi/giroskop dalam mode berkelanjutan.busBus
machine.I2Cyang telah dikonfigurasi tempat sensor terpasang.address_imuAlamat I2C 7-bit sub-perangkat akselerometer/giroskop. Default ke
0x6B.address_magnetAlamat I2C 7-bit sub-perangkat magnetometer. Default ke
0x1E.gyro_odrLaju data keluaran giroskop dalam Hz. Harus salah satu dari
0(mati),14.9,59.5,119,238,476atau952.gyro_scaleRentang skala penuh giroskop dalam derajat per detik. Harus salah satu dari
245,500atau2000.accel_odrLaju data keluaran akselerometer dalam Hz. Set nilai yang sama seperti
gyro_odr.accel_scaleRentang skala penuh akselerometer dalam g. Harus salah satu dari
2,4,8atau16.magnet_odrLaju data keluaran magnetometer dalam Hz. Harus salah satu dari
0.625,1.25,2.5,5,10,20,40atau80.magnet_scaleRentang skala penuh magnetometer dalam gauss. Harus salah satu dari
4,8,12atau16.
- calibrate_magnet(offset: tuple[float, float, float]) None¶
Tulis vektor offset hard-iron ke register
OFFSET_REG_*_Mmagnetometer. Offset diberikan dalam satuan yang sama seperti yang dikembalikan olehmagnet()(gauss); setiap komponen dikonversi ke LSB mentah menggunakan skala magnetometer yang dikonfigurasi sebelum ditulis.
- gyro_id() bytes¶
Kembalikan nilai register
WHO_AM_Isatu byte dari sub-perangkat akselerometer/giroskop.
- accel() tuple[float, float, float]¶
Kembalikan vektor akselerasi
(x, y, z)dalam satuan gravitasi standar (1 g = 9,81 m/s²).
- iter_accel_gyro() Iterator[tuple[tuple[float, float, float], tuple[float, float, float]]]¶
Generator yang menghasilkan tuple
(gyro, accel)untuk setiap sampel yang saat ini tersedia dalam FIFO dan berhenti setelah FIFO kosong. Setiap vektor komponen memiliki satuan yang sama sepertigyro()danaccel()masing-masing.