Datos personales

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

domingo, 7 de febrero de 2016

Robot Balancín, Tutorial. I Parte

Nueva versión de Robot Balancin CLICK AQUÍ para verla!

La primera vez que vi un robot balancín quedé fascinado ante semejante artefacto, aquel video mostraba un robot bastante estable, pero por supuesto llegaron a mi mente muchas preguntas lógicas, ¿como "sentía" su inclinación? ¿como se calculaba la fuerza con la que reaccionaban las llantas? ¿como se estabiliza ante una perturbación? y es que para nosotros el equilibrio en nuestros cuerpos es natural, ni siquiera hay que pensar en ello, pero nuestros cerebros hacen el trabajo de forma inconsciente, en el presente tutorial tratare de despejar las dudas que alguna vez me intrigaron y de paso les mostrare las técnicas que a grandes rasgos les ayudarán a montar su propio robot de este tipo, cabe aclarar que se requieren de ciertos conocimientos técnicos sobre electrónica o programación que asumiré ustedes ya conocen, de cualquier forma Internet es un lugar vasto en donde seguramente encontrarán las respuestas a las pequeñas problemáticas que podrían surgir, habiendo dicho esto, comencemos...





La mecánica de un robot de este tipo es relativamente sencilla y requiere de por lo menos los siguientes componentes físicos:
1 chasis, (de cualquier material ligero)
2 motores dc con reducción (1:50 o aproximado),
1 microcontrolador(en este caso un ATMEGA328p o un Arduino UNO)
1 Giroscopio/acelerómetro (usaremos el MPU6050),
1 controlador de motores(L298n),
2 Baterías (de preferencia de litio, una de 5v y una de 12v. a por lo menos 2000ma)

* y los siguientes componentes opcionales:
encoders (para cada motor)
1 modulo Bluetooth HC-05
mucha paciencia y algo de tiempo libre


El funcionamiento:
Básicamente el robot lucha por mantenerse en vertical, cuando el sensor detecta una variación en el ángulo ideal, el cual llamaremos Setpoint, los motores reaccionan moviéndose hacia esa dirección evitando la caída (el principio básico de un péndulo invertido),  para lograrlo se implementará un control PID (Proporcional Integral Derivativo) que determinara la salida PWM de los motores.



Encoders
Los encoders juegan un papel muy importante en cuanto la estabilización del robot y son necesarios para controlarlo vía bluetooth, aunque se puede prescindir de ellos si lo único que se busca es mantenerlo en posición vertical.



Ángulos y el Filtro de Kalman.
Para algunos de ustedes es bien sabido que para usar el sensor MPU6050 se requiere "procesar" la información en crudo que entrega el giroscopio y transformarla en una señal limpia y estable, lo suficientemente estable para medir 1 grado de giro con precisión, para esto vamos a implementar el Filtro de Kalman, el cual es un modelo matemático, bastante robusto que calcula en base a los datos del sensor, la velocidad angular y aceleracion con gran precisión, el filtro de Kalman es bastante complejo y no profundizaremos en ese tema durante este tutorial, pero en caso que quieran conocer más sobre este fascinante tema les recomiendo leerse estos post.(en inglés)



Chasis.
En internet se encuentran todo tipo de formas y tamaños de balancines, para éste en particular lo único que hay que considerar es: tener una estructura de 2 o más niveles para la electrónica, no debe ser demasiado alto lo mejor es que el diámetro de sus ruedas sea 1/3 de la altura del robot, las baterías deben quedar en la parte de abajo, el material a usarse debe ser lo más ligero y resistente posible, yo use madera y vinil, pero el diseño definitivo quedará a cargo del lector.



Electrónica.
Para facilitar las cosas y en vista de que todo el mundo tiene un Arduino Uno, yo decidí usar esta plataforma para desarrollar el proyecto.

Código.
El Código está disponible en este enlace.

Librerías necesarias: Libreria PWM, Libreria DigitalWriteFast

Esta publicación se irá actualizando, estén pendientes
siguiente parte


Nueva versión de Robot Balancin CLICK AQUÍ para verla!



17 comentarios:

  1. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  2. Me gusta mucho podrias oasarme los planos

    ResponderEliminar
  3. Hola, cuando lo construi no hice ningún plano así que no los tengo, solo sigue las recomendaciones que doy en el.post

    ResponderEliminar
  4. Hola, cuando descargue el código me descarga 4, estuve mirando y creo que el que tengo que usar es el "BalanXedBot". Descargue las 2 librerias y todo, pero me tira un error en i2cRead. Me podrías ayudar con esto? es una librería que debo descargar también? Gracias

    ResponderEliminar
    Respuestas
    1. hola, es un código de varias pestañas, debes abrirlo en una carpeta llamada BalanXedBot, se supone que al descomprimir la carpeta completa no deberías tener problemas para abrir el código completo

      Eliminar
    2. Te hago una pregunta, si yo no uso encoders, tendria que modificar el codigo o puedo usar el mismo?

      Eliminar
  5. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  6. Hola, me podrias ayudar con el tema los motores? No me queda muy claro. Cuántos RPM necesito? Cuánto torque? Algo así podría funcionar? http://articulo.mercadolibre.com.ar/MLA-609351045-motor-dc-3v-a-6v-caja-reductora-rueda-goma-arduino-nubbeo-_JM (este tiene una reduccion de 48:1
    Gracias!

    ResponderEliminar
  7. Hola,
    ¿Me pueden ayudar para el cableado

    Puede enviarme el diagrama de cableado?

    Gracias

    ResponderEliminar
  8. oye amigo, utilizas el 7414 un smitch trigger ?

    ResponderEliminar
  9. Oye me podrías ayudar con el tema del Bluetooth?

    ResponderEliminar
  10. disculpe amigo que tipo de encoder usaste para este proyecto

    ResponderEliminar
  11. Hola disculpa amigo .Esta muy bueno tu idea pero yo tengo una pregunta:
    Que desventaja tiene este prototipo si no uso el encoder óptico? Muchas gracias

    ResponderEliminar
  12. Amigo en que linea de la programación se colocan los valores obtenidos de la calibración del MPU6050

    ResponderEliminar
  13. Prodrian ayudarme con unos valores para ki kd kp ... no se como estabilizarlo ... gracias

    ResponderEliminar
  14. Compa excelente trabajo, por ahora estoy en la mini CNC y me está costando trabajo cuando termine ese me prendo con este.

    ResponderEliminar
  15. amigo tendras la pogramacion aun ?

    ResponderEliminar