Estoy tratando de usar un acelerómetro / giro de 6 ejes LSM6DS33 como una ayuda de navegación inercial, participando en la fusión de sensores. El problema es que la aplicación tiene una gran cantidad de vibraciones y los datos del acelerómetro son bastante ruidosos. Necesito alrededor de 25 muestras de acelerómetro por segundo, así que para obtener una señal más suave, he habilitado el filtro de paso bajo analógico en el BW más bajo = 50Hz y el ODR del acelerómetro es de 104 Hz; Promedio 4 muestras manualmente mientras las leo para obtener una ODR equivalente de 26 Hz con menos aliasing.
Esto es mejor que antes (cuando no hubo un paso bajo y a 52 Hz ODR), pero todavía hay algo de ruido (alrededor de 0,1 g de pico a pico, medido en una plataforma vibratoria que vibra a ~ 65 Hz) Presente en las muestras promediadas resultantes. Verifiqué que al aumentar el ODR del acelerómetro a 208 Hz se reduce aún más el ruido (aliasing). 416Hz lo reduce aún más (0.025g p-p). Pero eso requiere más tráfico I²C y tiempo de CPU, por lo que aumentar la ODR será prohibitivo.
Mi pregunta es: ¿es posible configurar el LSM6DS33 para muestrear el acelerómetro a 833 Hz, promediar cada 8 muestras y colocar los resultados en el FIFO (equivalente a 104 ODR)? ¿O dicho de otra manera, para obtener un BW de filtrado de paso bajo equivalente a menos de 50 Hz, idealmente alrededor de 12 Hz?
Como referencia, mi configuración actual es:
CTRL1_XL = 0x4F; // acc setup - > 104 Hz, 8 g de escala completa, 50 Hz de ancho de banda
CTRL2_G = 0x4C; // configuración de giro - > 104 Hz, escala completa 2000 dps
CTRL3_C = 0x44; // configurar el bit BDU (actualización de datos de bloque) alto
CTRL4_C = 0x81; // habilitar el límite de longitud FIFO; XL_BW_SCAL_ODR = 1
... (y también algún código no relacionado para configurar el FIFO).