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!
Este comentario ha sido eliminado por el autor.
ResponderEliminarMe gusta mucho podrias oasarme los planos
ResponderEliminarHola, cuando lo construi no hice ningún plano así que no los tengo, solo sigue las recomendaciones que doy en el.post
ResponderEliminarHola, 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
ResponderEliminarhola, 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
EliminarTe hago una pregunta, si yo no uso encoders, tendria que modificar el codigo o puedo usar el mismo?
EliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarHola, 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
ResponderEliminarGracias!
Hola,
ResponderEliminar¿Me pueden ayudar para el cableado
Puede enviarme el diagrama de cableado?
Gracias
oye amigo, utilizas el 7414 un smitch trigger ?
ResponderEliminarOye me podrías ayudar con el tema del Bluetooth?
ResponderEliminardisculpe amigo que tipo de encoder usaste para este proyecto
ResponderEliminarHola disculpa amigo .Esta muy bueno tu idea pero yo tengo una pregunta:
ResponderEliminarQue desventaja tiene este prototipo si no uso el encoder óptico? Muchas gracias
Amigo en que linea de la programación se colocan los valores obtenidos de la calibración del MPU6050
ResponderEliminarProdrian ayudarme con unos valores para ki kd kp ... no se como estabilizarlo ... gracias
ResponderEliminarCompa excelente trabajo, por ahora estoy en la mini CNC y me está costando trabajo cuando termine ese me prendo con este.
ResponderEliminaramigo tendras la pogramacion aun ?
ResponderEliminar