lsm9ds1 --- IMU 9 trục LSM9DS1¶
Driver cho mô-đun quán tính ST LSM9DS1 iNEMO qua I2C. LSM9DS1 kết hợp gia tốc kế 3 trục, con quay hồi chuyển 3 trục và từ kế 3 trục trong một gói duy nhất; gia tốc kế và con quay hồi chuyển dùng chung một địa chỉ I2C trong khi từ kế phản hồi trên một địa chỉ thứ hai. Driver này còn bật FIFO 16 mẫu của gyro/accel trên chip để các mẫu gần nhất có thể được lấy ra hiệu quả qua iter_accel_gyro().
Ví dụ:
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)
Lớp¶
- 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)¶
Khởi tạo một thực thể
LSM9DS1, xác minh các thanh ghi WHO_AM_I của cả hai thiết bị con, cấu hình cả ba cảm biến và bật FIFO accel/gyro ở chế độ liên tục.busMột bus
machine.I2Cđã được cấu hình mà cảm biến được kết nối vào.address_imuĐịa chỉ I2C 7-bit của thiết bị con gia tốc kế/con quay hồi chuyển. Mặc định là
0x6B.address_magnetĐịa chỉ I2C 7-bit của thiết bị con từ kế. Mặc định là
0x1E.gyro_odrTốc độ dữ liệu đầu ra của con quay hồi chuyển tính bằng Hz. Phải là một trong các giá trị
0(tắt),14.9,59.5,119,238,476hoặc952.gyro_scalePhạm vi đo toàn thang của con quay hồi chuyển tính bằng độ-trên-giây. Phải là một trong các giá trị
245,500hoặc2000.accel_odrTốc độ dữ liệu đầu ra của gia tốc kế tính bằng Hz. Cùng tập hợp giá trị như
gyro_odr.accel_scalePhạm vi đo toàn thang của gia tốc kế tính bằng g. Phải là một trong các giá trị
2,4,8hoặc16.magnet_odrTốc độ dữ liệu đầu ra của từ kế tính bằng Hz. Phải là một trong các giá trị
0.625,1.25,2.5,5,10,20,40hoặc80.magnet_scalePhạm vi đo toàn thang của từ kế tính bằng gauss. Phải là một trong các giá trị
4,8,12hoặc16.
- calibrate_magnet(offset: tuple[float, float, float]) None¶
Ghi một vector offset sắt cứng vào các thanh ghi
OFFSET_REG_*_Mcủa từ kế. Offset được cho theo cùng đơn vị màmagnet()trả về (gauss); mỗi thành phần được chuyển đổi sang LSB thô bằng thang đo từ kế đã cấu hình trước khi ghi.
- gyro_id() bytes¶
Trả về giá trị thanh ghi
WHO_AM_Imột byte của thiết bị con gia tốc kế/con quay hồi chuyển.
- gyro() tuple[float, float, float]¶
Trả về vector con quay hồi chuyển
(x, y, z)tính bằng độ trên giây.