Filtre datos I2C
En Comunicación entre Circuitos Integrados (I2C, en sus siglas en inglés), un dispositivo maestro puede comunicarse hasta con 128 dispositivos esclavos. Cada esclavo es identificado por una única dirección y la transferencia de datos sucede en la línea de datos seriales (SDA, en sus siglas en inglés). La otra línea es la línea del reloj serie (SCL, en sus siglas en inglés). I2C también se conoce como la interfaz de dos hilos (TWI, en sus siglas en inglés).
En este ejemplo, el código se implementa en un Arduino Nano para obtener lecturas de acelerómetro y giroscopio de un sensor I2C MPU-6050. El ángulo de orientación del sensor puede ser calculado a partir de las lecturas de acelerómetro y giroscopio. Estos cálculos son inexactos porque el primero es ruidoso y el segundo se aleja durante el estado estacionario. Por lo tanto, también se implementa un filtro complementario que combina los dos valores. Los valores no filtrados y filtrados se enviarán de regreso a través del bus serie y se visualizarán.
La aceleración a lo largo de los ejes y , la temperatura y la velocidad angular a lo largo del eje son almacenados en dos bytes, cada uno empezando en la dirección 0x3D. La siguiente es la especificación para obtener estos 8 bytes.
La especificación de inicialización.
La dirección del MPU-6050 es 0x68. Aquí está su especificación completa.
La conversión para cada canal de entrada.
La especificación completa del microcontrolador.
Un bloque de prefiltro calcula el ángulo de los datos del acelerómetro en grados y también la velocidad angular en grados por segundo a partir de los datos del giroscopio.
Un filtro complementario toma las salidas del prefiltro y calcula un valor de ángulo filtrado.
Un integrador calcula el ángulo simplemente integrando la velocidad angular.
El modelo completo de sistemas.
Implemente el código.
Abra una conexión al Arduino Nano.
Envíe una tarea para leer los datos.
Analice y trace los datos.
Elimine la tarea y cierre la conexión al dispositivo.