Datos personales

Mi foto
Algun dia, las maquinas también tendrán sueños...

jueves, 11 de febrero de 2016

Robot Balancin IV: El sensor MPU6050.

Veamos a grandes rasgos el funcionamiento del sensor MPU6050, un pequeño módulo de aproximadamente 2x2x0.2 cm. que nos entrega datos sobre el ángulo de rotación y aceleración que aplicamos sobre él, este chip nos proporciona mediciones cuyo funcionamiento se basa en el efecto coriolis, , aquí es donde se nos dificultan un poco las cosas, el sensor se comunica con Arduino a través del protocolo I2C, este protocolo utiliza un bus de datos serie para enviar y recibir información entre los procesadores atmega328p el MPU6050, los datos llegan "crudos" y llenos de ruido electrónico, el sensor detecta cualquier movimiento/aceleración y esto genera gran cantidad de errores

Rojo: Medición con ruido electrónico   Azul: medición ideal


En la grafica podemos observar en rojo los datos sin procesar y
en azul los datos filtrados, nuestro trabajo será implementar un programa para filtrar todo ese ruido y obtener el ángulo más preciso posible, para lograrlo usaremos los algoritmos basados en el Filtro de Kalman.

El Filtro de Kalman.

como su nombre nos indica, el filtro de kalman es una colección de algoritmos diseñado en este caso para obtener una medición angular limpia y con la menor cantidad de ruido posible, el filtro de Kalman es bastante complejo y se ha usado en infinidad de aplicaciones, que van desde la navegación GPS hasta el lanzamiento de cohetes espaciales

fórmula del filtro de Kalman



Por su complejidad, en el presente tutorial solo veremos por la superficie su funcionamiento, cabe mencionar que el código utilizado fue tomado del increíble trabajo realizado por Kristian Lauszus del cual hablaremos con más detalle en una futura publicación.

Conexión.
El sensor solo necesita 4 líneas para funcionar: datos (SDA), reloj (SCL), y por ultimo, se alimenta de 3.3 - 5v.

una vez obtenido el ángulo sin interferencias será momento de aplicarlo a un control PID
hasta la próxima!  

7 comentarios:

  1. He bajado todos los archivos, librerías y código, pero al compilar me da errores. Utilizo el IDE 1.5.8

    ResponderEliminar
    Respuestas
    1. Hola amigo, es necesario que actualices tu IDE de arduino, porque las versiones anteriores no leen la librería I2C que es la comunicaión.

      Eliminar
  2. Cual seria la modificacion en el codigo si no utilizo encoder y bluetooth

    ResponderEliminar
  3. Si quiero usar el Bluetooth solo lo configuro y ya?

    ResponderEliminar
  4. como hallo la funcion de transferencia

    ResponderEliminar
  5. amigo esa programacion es utilizando el bluethooth

    ResponderEliminar
  6. cuales serian sus aplicaciones para un robot balancin?

    ResponderEliminar