lsm6dsox — LSM6DSOX 6-akselinen IMU

Ajuri ST:n LSM6DSOX iNEMO 6-akseliselle inertiamittausyksikölle (3-akselinen kiihtyvyysanturi sekä 3-akselinen gyroskooppi) I2C:n tai SPI:n kautta. Perus-IMU-tulosteen lisäksi ajuri tarjoaa piirin sulautetut toiminnot: määritettävän askelmittarin (askellaskuri) sekä Machine Learning Coren (MLC), joka voidaan ohjelmoida ST:n Unico-GUI-työkalulla viedyillä UCF-tiedostoilla.

Esimerkki:

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)

Luokat

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)

Luo LSM6DSOX-instanssin. Väylätyyppi tunnistetaan automaattisesti: jos bus tarjoaa readfrom_mem-metodin, sitä käsitellään machine.I2C -objektina, muutoin sitä käsitellään machine.SPI -objektina ja cs on annettava. Piiri nollataan ohjelmallisesti, pyydetyt ODR ja asteikko ohjelmoidaan, ja MLC UCF -tiedosto ladataan, jos se on annettu.

bus

Joko määritetty machine.I2C- tai machine.SPI -väylä.

cs

SPI-tilassa käytettävä lohkonvalinta-machine.Pin. Vaaditaan, kun bus on SPI-instanssi, muutoin ohitetaan.

address

Laitteen 7-bittinen I2C-osoite. Oletuksena 0x6A; jotkin kortit kytkevät SDO-nastan ylös, jolloin valitaan 0x6B.

gyro_odr

Gyroskoopin lähtödatanopeus hertseinä. Täytyy olla yksi seuraavista: 0 (pois), 1.6, 3.33, 6.66, 12.5, 26, 52, 104, 208, 416 tai 888.

accel_odr

Kiihtyvyysanturin lähtödatanopeus hertseinä. Sama arvojoukko kuin gyro_odr.

gyro_scale

Gyroskoopin täysasteikkoalue asteina sekunnissa. Täytyy olla yksi seuraavista: 250, 500, 1000 tai 2000.

accel_scale

Kiihtyvyysanturin täysasteikkoalue g-yksikköinä. Täytyy olla yksi seuraavista: 2, 4, 8 tai 16.

ucf

Valinnainen polku ST Unico-GUI .ucf -rekisteridump-tiedostoon. Jos se annetaan, tiedosto jäsennetään ja sovelletaan MLC:hen luonnin aikana metodin load_mlc() avulla.

reset() None

Suorittaa ohjelmallisen nollauksen rekisterin CTRL3_C kautta ja estyy, kunnes nollausbitti tyhjenee. Nostaa OSError-poikkeuksen, jos laite ei palaa toimintaan kymmenellä uudelleenyrityksellä.

set_mem_bank(bank: int) None

Vaihtaa FUNC_CFG-rekisteripankin. Käytetään sisäisesti sulautettujen toimintojen ja sensorikeskittimen rekisterisivujen käyttöön; sovelluskoodi tarvitsee tätä harvoin.

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

Ottaa käyttöön tai poistaa käytöstä sulautettujen toimintojen lohkon. Kun enable on True, kaksitavuinen emb_ab-monikko kirjoitetaan rekistereihin EMB_FUNC_EN_A/EMB_FUNC_EN_B. Kun False, nykyiset arvot luetaan, MLC:n/askelmittarin käyttöönottobitit tyhjennetään ja aiemmat arvot palautetaan, jotta ne voidaan myöhemmin palauttaa.

load_mlc(ucf: str) None

Soveltaa MLC UCF -ohjelman tiedostosta polussa ucf. Ajuri käy tiedoston läpi rivi riviltä, soveltaa jokaisen Ac <reg> <val> -kirjoituksen, ottaa sitten käyttöön BDU:n, reitittää MLC-tapahtumat keskeytysnastaan 1 ja kytkee sulautetut toiminnot takaisin päälle.

mlc_output() bytes | None

Jos uusia MLC-tuloksia on saatavilla (MLC_STATUS-bitti asetettu), palauttaa kahdeksan rekisterin MLC0_SRC..MLC7_SRC sisällön tavumaisena objektina. Muutoin palauttaa None.

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

Määrittää sulautetun askelmittarin.

enable

Ottaa käyttöön tai poistaa käytöstä askeltunnistuksen sulautettujen toimintojen lohkossa.

debounce

Askelten värähtelynvaimennusarvo, joka kirjoitetaan rekisteriin PEDO_DEB_STEPS_CONF.

int1_enable

Jos True, reitittää askelmittarin tapahtumat INT1-nastaan.

int2_enable

Jos True, reitittää askelmittarin tapahtumat INT2-nastaan.

pedometer_reset() None

Nollaa askellaskurin takaisin nollaan.

steps() int

Palauttaa 16-bittisen askellaskurin nykyisen arvon.

gyro() tuple[float, float, float]

Palauttaa gyroskoopin vektorin (x, y, z) asteina sekunnissa.

accel() tuple[float, float, float]

Palauttaa kiihtyvyysvektorin (x, y, z) standardiputoamiskiihtyvyyden yksikköinä (1 g = 9,81 m/s²).