lsm9ds1 --- وحدة قياس بالقصور الذاتي LSM9DS1 تساعية المحاور¶
مُشغِّل لوحدة iNEMO بالقصور الذاتي من ST من طراز LSM9DS1 عبر I2C. يجمع LSM9DS1 بين مقياس تسارع ثلاثي المحاور وجيروسكوب ثلاثي المحاور ومقياس مغناطيسية ثلاثي المحاور في حزمة واحدة؛ يتشارك مقياس التسارع والجيروسكوب عنوان 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_imuعنوان I2C ذو 7 بتات للجهاز الفرعي لمقياس التسارع/الجيروسكوب. قيمته الافتراضية
0x6B.address_magnetعنوان I2C ذو 7 بتات للجهاز الفرعي لمقياس المغناطيسية. قيمته الافتراضية
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()(الغاوس)؛ ويُحوَّل كل مكوّن إلى بتات أقل أهمية خام باستخدام مقياس مقياس المغناطيسية المُعَدّ قبل كتابته.