lsm6dsox — IMU de 6 ejes LSM6DSOX¶
Controlador para la unidad de medición inercial iNEMO de 6 ejes LSM6DSOX de ST (acelerómetro de 3 ejes más giroscopio de 3 ejes) a través de I2C o SPI. Además de la salida básica de la IMU, el controlador expone las funciones embebidas del chip: un podómetro configurable (contador de pasos) y el Machine Learning Core (MLC), que puede programarse mediante archivos UCF exportados desde la herramienta Unico-GUI de ST.
Ejemplo:
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)
Clases¶
- 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)¶
Construye una instancia de
LSM6DSOX. El tipo de bus se detecta automáticamente: sibusexponereadfrom_memse trata como unmachine.I2C; de lo contrario se trata como unmachine.SPIy debe proporcionarsecs. El chip se reinicia por software, se programan la ODR y la escala solicitadas, y se carga un archivo UCF de MLC si se proporciona.busUn bus
machine.I2Comachine.SPIconfigurado.csmachine.Pinde selección de chip usado en modo SPI. Es obligatorio cuandobuses una instancia SPI; en caso contrario se ignora.addressDirección I2C de 7 bits del dispositivo. Su valor predeterminado es
0x6A; algunas placas fijan el pin SDO en alto, lo que selecciona0x6B.gyro_odrTasa de datos de salida del giroscopio en Hz. Debe ser uno de
0(apagado),1.6,3.33,6.66,12.5,26,52,104,208,416o888.accel_odrTasa de datos de salida del acelerómetro en Hz. El mismo conjunto de valores que
gyro_odr.gyro_scaleRango de escala completa del giroscopio en grados por segundo. Debe ser uno de
250,500,1000o2000.accel_scaleRango de escala completa del acelerómetro en g. Debe ser uno de
2,4,8o16.ucfRuta opcional a un archivo de volcado de registros
.ucfde ST Unico-GUI. Si se proporciona, el archivo se analiza y se aplica al MLC durante la construcción por medio deload_mlc().
- reset() None¶
Emite un reinicio por software mediante
CTRL3_Cy se bloquea hasta que se borra el bit de reinicio. LanzaOSErrorsi el dispositivo no vuelve dentro de diez reintentos.
- set_mem_bank(bank: int) None¶
Cambia el banco del registro FUNC_CFG. Se usa internamente para acceder a las páginas de registros de la función embebida y del sensor-hub; el código de aplicación rara vez lo necesita.
- set_embedded_functions(enable: bool, emb_ab: tuple[int, int] | None = None) tuple[int, int]¶
Habilita o deshabilita el bloque de funciones embebidas. Cuando
enableesTrue, la tupla de dos bytesemb_abse escribe enEMB_FUNC_EN_A/EMB_FUNC_EN_B. Cuando esFalse, se leen los valores actuales, se borran los bits de habilitación del MLC/podómetro y se devuelven los valores anteriores para que puedan restaurarse más tarde.
- load_mlc(ucf: str) None¶
Aplica un programa UCF de MLC desde el archivo en la ruta
ucf. El controlador recorre el archivo línea por línea, aplica cada escrituraAc <reg> <val>, luego habilita BDU, enruta los eventos del MLC al pin de interrupción 1 y vuelve a activar las funciones embebidas.
- mlc_output() bytes | None¶
Si hay nuevos resultados del MLC disponibles (bit
MLC_STATUSestablecido), devuelve el contenido de los ocho registrosMLC0_SRC..MLC7_SRCcomo un objeto similar a bytes. De lo contrario devuelveNone.
- pedometer_config(enable: bool = True, debounce: int = 10, int1_enable: bool = False, int2_enable: bool = False) None¶
Configura el podómetro embebido.
enableHabilita o deshabilita la detección de pasos en el bloque de funciones embebidas.
debounceValor de antirrebote de pasos escrito en
PEDO_DEB_STEPS_CONF.int1_enableSi es
True, enruta los eventos del podómetro al pinINT1.int2_enableSi es
True, enruta los eventos del podómetro al pinINT2.