lsm6dsox — LSM6DSOX 6 eksenli IMU

ST LSM6DSOX iNEMO 6 eksenli atalet ölçüm birimi (3 eksenli ivmeölçer artı 3 eksenli jiroskop) için I2C veya SPI üzerinden sürücü. Temel IMU çıktısına ek olarak, sürücü çip üzerindeki gömülü fonksiyonları sunar: yapılandırılabilir bir adımölçer (adım sayacı) ve ST’nin Unico-GUI aracından dışa aktarılan UCF dosyaları aracılığıyla programlanabilen Machine Learning Core (MLC).

Örnek:

import time
from machine import I2C
from lsm6dsox import LSM6DSOX

# Use the I2C bus the LSM6DSOX is wired to on your board.
lsm = LSM6DSOX(I2C(1))

# SPI alternative (replace cs= with your board's chip-select pin):
# from machine import SPI, Pin
# lsm = LSM6DSOX(SPI(1), cs=Pin("CS"))

while True:
    print("Accelerometer: x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}".format(*lsm.accel()))
    print("Gyroscope:     x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}".format(*lsm.gyro()))
    time.sleep_ms(100)

Sınıflar

class lsm6dsox.LSM6DSOX(bus: machine.I2C | machine.SPI, cs: machine.Pin | None = None, address: int = 0x6A, gyro_odr: float = 104, accel_odr: float = 104, gyro_scale: int = 2000, accel_scale: int = 4, ucf: str | None = None)

Bir LSM6DSOX örneği oluşturur. Veri yolu türü otomatik olarak algılanır: bus readfrom_mem sunuyorsa bir machine.I2C olarak ele alınır, aksi takdirde bir machine.SPI olarak ele alınır ve cs sağlanmalıdır. Çip yazılımsal olarak sıfırlanır, istenen ODR ve ölçek programlanır ve sağlanmışsa bir MLC UCF dosyası yüklenir.

bus

Yapılandırılmış bir machine.I2C veya machine.SPI veri yolu.

cs

SPI modunda kullanılan çip seçimi machine.Pin. bus bir SPI örneği olduğunda gereklidir, aksi takdirde yok sayılır.

address

Cihazın 7 bitlik I2C adresi. Varsayılan olarak 0x6A değerini alır; bazı kartlar 0x6B adresini seçen SDO pinini yüksek seviyeye sabitler.

gyro_odr

Jiroskop çıktı verisi hızı, Hz cinsinden. Şunlardan biri olmalıdır: 0 (kapalı), 1.6, 3.33, 6.66, 12.5, 26, 52, 104, 208, 416 veya 888.

accel_odr

İvmeölçer çıktı verisi hızı, Hz cinsinden. gyro_odr ile aynı değer kümesi.

gyro_scale

Jiroskop tam ölçek aralığı, derece/saniye cinsinden. Şunlardan biri olmalıdır: 250, 500, 1000 veya 2000.

accel_scale

İvmeölçer tam ölçek aralığı, g cinsinden. Şunlardan biri olmalıdır: 2, 4, 8 veya 16.

ucf

Bir ST Unico-GUI .ucf yazmaç dökümü dosyasına isteğe bağlı yol. Sağlanırsa dosya ayrıştırılır ve oluşturma sırasında load_mlc() aracılığıyla MLC’ye uygulanır.

reset() None

CTRL3_C aracılığıyla bir yazılımsal sıfırlama yayınlar ve sıfırlama biti temizlenene kadar bloke eder. Cihaz on yeniden denemede geri gelmezse OSError yükseltir.

set_mem_bank(bank: int) None

FUNC_CFG yazmaç bankasını değiştirir. Gömülü fonksiyon ve sensör hub yazmaç sayfalarına erişmek için dahili olarak kullanılır; uygulama kodu tarafından nadiren gereklidir.

set_embedded_functions(enable: bool, emb_ab: tuple[int, int] | None = None) tuple[int, int]

Gömülü fonksiyon bloğunu etkinleştirir veya devre dışı bırakır. enable True olduğunda iki baytlık emb_ab demeti EMB_FUNC_EN_A/EMB_FUNC_EN_B yazmaçlarına yazılır. False olduğunda geçerli değerler okunur, MLC/adımölçer etkinleştirme bitleri temizlenir ve daha sonra geri yüklenebilmeleri için önceki değerler döndürülür.

load_mlc(ucf: str) None

ucf yolundaki dosyadan bir MLC UCF programı uygular. Sürücü dosyada satır satır ilerler, her Ac <reg> <val> yazma işlemini uygular, ardından BDU’yu etkinleştirir, MLC olaylarını kesme pini 1’e yönlendirir ve gömülü fonksiyonları tekrar açar.

mlc_output() bytes | None

Yeni MLC sonuçları mevcutsa (MLC_STATUS biti ayarlıysa), sekiz MLC0_SRC..MLC7_SRC yazmacının içeriğini bayt benzeri bir nesne olarak döndürür. Aksi takdirde None döndürür.

pedometer_config(enable: bool = True, debounce: int = 10, int1_enable: bool = False, int2_enable: bool = False) None

Gömülü adımölçeri yapılandırır.

enable

Gömülü fonksiyon bloğunda adım algılamayı etkinleştirir veya devre dışı bırakır.

debounce

PEDO_DEB_STEPS_CONF yazmacına yazılan adım sıçrama önleme değeri.

int1_enable

True ise, adımölçer olaylarını INT1 pinine yönlendirir.

int2_enable

True ise, adımölçer olaylarını INT2 pinine yönlendirir.

pedometer_reset() None

Adım sayacını tekrar sıfıra sıfırlar.

steps() int

16 bitlik adım sayacının geçerli değerini döndürür.

gyro() tuple[float, float, float]

Jiroskop vektörünü (x, y, z) saniyede derece cinsinden döndürür.

accel() tuple[float, float, float]

İvme vektörünü (x, y, z) standart yerçekimi birimleri cinsinden döndürür (1 g = 9,81 m/s²).