Datos personales

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

lunes, 8 de febrero de 2016

Robot Balancín II: Motorreductores y Encoders.

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

Cuando comencé con este proyecto me tomo algo de tiempo encontrar unos motorreductores con encoder óptico integrado de 2 canales(para medir la dirección del robot es necesario 2 canales por motor), los motores polulu eran una opción pero estan algo caros así que mejor opte por buscar otras opciones,  finalmente me encontré con los motores Namiki 11201755, (costo aproximado 10$*) estos motores soportan 12v. y hasta 1A. e incluyen encoder de 2 canales, pero me enfrentaba con un nuevo problema, el torque era demasiado alto, los motores mencionados trabajan un torque de 150:1,



pines correspondientes al encoder


Para el robot balancín este torque es demasiado alto y por lo tanto, su respuesta muy lenta, es importante mencionar que necesitamos motores con un torque no demasiado alto, aunque tampoco muy bajo, cuando el robot recibe una perturbación externa y se inclina hacia un lado la respuesta del motor debe ser rápida, pero no tan rápida como para generar demasiada inercia, ya que esto lo desestabilizaría, probe con varios motorreductores incluyendo los clásicos amarillos:

estos motores tienen un torque de aproximadamente 60:1 (aunque no todos tienen el mismo torque, es preciso verificar eso), con ellos la respuesta del robot mejoro considerablemente, aunque el motor deja mucho que desear, solo trabaja a 5v. y no son de muy buena calidad, al final "fusione" ambos motorreductores y el resultado fue este:  

con "super glue"  fue fácil

Ahora ya tenía los motorreductores ideales para el proyecto,  para medir la velocidad, distancia recorrida y ángulo del robot es necesario hacer uso de los encoder e interrupciones externas en Arduino, ¿y que son esas pequeñas tarjetas blancas? la señal del encoder óptico no es suficientemente alta como para que arduino la considere un nivel lógico alto, así que es preciso darles un poco de potencia, para eso tuve que implementar este pequeño circuito:

esto se debe repetir por cada canal 

A su salida nos encontramos con una señal limpia de casi 5v. suficiente para generar las interrupciones externas en la tarjeta Arduino, este circuito se debe hacer para cada canal, es decir, debe haber 4 iguales, 1 por cada canal.

Por último les dejo el esquema hacia las conecciones de Arduino:


Ya que en Internet existen muchos tutoriales sobre interrupciones externas y como usarlas no veo necesario explicarlas aquí, aun asi les dejo algunas referencias en donde se explora a detalle su funcionamiento. 

https://www.arduino.cc/en/Reference/AttachInterrupt
http://www.educachip.com/como-y-por-que-usar-las-interrupciones-en-arduino/



                                                                                                               *precio en dolar americano

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


25 comentarios:

  1. hola muy bueno tu trabajo
    tengo una cosulta sobre tu proyecto ojala me puedas ayudar gracias .

    ResponderEliminar
    Respuestas
    1. perdon por la tardanza, no habia visto tu comentario, cuál era la duda?

      Eliminar
  2. hola amigo q gran trabajo, una preguntica. es necesario utlizar los encoders para hacer que el robot cumpla una rutina determinada? agradesco tu respuesta

    ResponderEliminar
    Respuestas
    1. Hola, No es necesario si sólo buscas mantenerlo en vertical, no podrías controlarlo ni desplazarlo via bluethooth ya que mi código toma los datos de los encoder para saber que rueda mover, y además sería más inestable porque el control PID se ayuda de los encoders, pero en teoría podrías mantenerlo en equilibrio sin encoders, sería más difícil claro

      Eliminar
  3. hello , i wanna say that this is a really nice project and i want to ask you if you could share the code and the schematic with me and maybe send it at ahmedmerzoug7@gmail.com and thank you

    ResponderEliminar
    Respuestas
    1. sure, all you need are in this blog, just look all post about "robot balancin" you will need the translator, this is the first one http://elxedelectronics.blogspot.com/2016/02/robot-balancin-tutorial.html

      Eliminar
  4. Lo primero gran trabajo, me esta ayudando mucho para montar mi propio robot, pero tengo una pequeña duda. Al conectar los sensores de los encoders veo en el diagrama que conectas los dos canales de cada a uno a los pines 2, 3, 4 y 5 y a su vez en el código tienes otra variable para cada encoder que van al 0 y 1 respectivamente. Mi pregunta es ¿cual es esta conexion? Yo tengo sensores de 1 canal ya que es lo que mas a mano tenia y solo tengo la salida de datos, la de alimentación y la de tierra y no se que es lo que controlas con esa variable, si el encendido del sensor o que. Un saludo y de nuevo gran trabajo

    ResponderEliminar
    Respuestas
    1. hola, las variables para las interrupciones 0 y 1 no van a los pines 0 y 1, recuerda que las interrupciones están en los pines 2 y 3, por lo tanto esa variable de interrupciones 0 y 1 son las mismas que están en los pines 2 y 3, si no te queda claro lee las fuentes que deje en esta publicacion hacia otros artículos sobre interrupciones

      Eliminar
  5. Hola, probablemente el motor que tu tengas no trabaja como este y por eso no te funciono, aquí te dejo una pagina que tiene otro arreglo muy parecido al mio que funciona igual, espero te sirva http://digitronways.blogspot.mx/2015/05/encoder-motor-fauhaber-2342l-012cpr.html?m=1

    ResponderEliminar
  6. Hola! como es que funciona ese encoder? como lo podria fabricar con elementos sencillos? Espectacular tu trabajo

    ResponderEliminar
    Respuestas
    1. Hola, el funcionamiento del encoder es muy sencillo, el eje del motor mueve una pieza parecida a un disco pero con ranuras, el disco se ubica entre 2 fototransistores de un lado y 2 leds infrarrojos del otro, mientras el disco gire las aberturas dejaran pasar la luz infrarroja y esa luz la recibirá el fototransistor, el circuito conectado amplifica la señal y la convierte en un 1 lógico para Arduino (5v.) el arduino hace el conteo de las pulsaciones y con eso se puede determinar la distancia y velocidad de las llantas, podrías fabricar tu mismo unos encoders pero no te lo recomiendo si no tienes experiencia en estas cosas ya que tiene su dificultad, si armas el circuito que pongo arriba funcionaria con cualquier fototransistor y led infrarrojo, los mouse de computadora antiguos (los que funcionaban sin luz y tenían una bolita) tienen 2 enconder muy parecidos a estos, podrías sacarlos de ahí

      Eliminar
  7. Reductores de Velocidad, Motorreductores - Tisa Transmisiones – www.tisatransmisiones.com.ar
    Venta de Reductores de Velocidad y Motorreductores, linea moderna en Aluminio A Sin Fin y Corona; somos fabricantes y contamos con catálogo nacional e internacional.

    http://tisatransmisiones.com.ar/reductores-de-velocidad-y-motorreductores.html
    Tags: reductores velocidad, motorreductores, reductores

    ResponderEliminar
  8. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
    Respuestas
    1. sí, solo que no imaginaba bien como habías acoplado un motor al reductor del otro pero ya investigue bien como es el motor namiki y ya lo entendí.
      Solo una pregunta más, como cuanto cuestan una baterias como las que usaste?

      Eliminar
    2. Ok, bueno pues como dice la publicación lo que hice fue desarmar parte del motoreductor y luego acoplar el motor con encoder a los otros engranes, fue un poco difícil pero al final resulto, las baterías me costaron 80 pesos MXN, si vives en otro país que no sea México eso es como 6 dólares americanos, no estan muy caras pero también necesitas un cargador que cuesta como 120 pesos, y si las compras te recomiendo hacerlo en tiendas de con fianza que te garanticen que son de calidad, por que hay unas chinas que cuestan mas baratas pero no te van a servir

      Eliminar
  9. Este comentario ha sido eliminado por un administrador del blog.

    ResponderEliminar
  10. Hola disculpa porq al amplificar la señal de la salida del encoder no pusiste resistencia de base en el transistor?

    ResponderEliminar
  11. hola amigo felicitaciones tu buen aporte a la comunidad queria felicitarte y a la vez agradecerte por el gran trabajo!!! y a la vez saber si podria consultarte algunas dudas!! en mi caso no cuento con motoreductores se podria hacer el intento de trabajar sin estos y el codigo como quedaria?? gracias y disculpas ya que soy novato en esto!! gracias y nuevamente felicitaciones

    ResponderEliminar
  12. como o donde encuentro la programacion de el mpu6050 para que me controle los motorreductores sin necesidad de los encoders no e podido sin los encoders solucionar el problema

    ResponderEliminar
  13. hola

    recomeindo tisa transmisiones

    Correas Dentadas, Correas Industriales, Correas Planas - Tisa Transmisiones
    Fabrica de Correas. Nos dedicamos a la venta de Correas Planas, Correas dentadas, Correas de transmision, Correas trapeciales, Correas industriales.
    http://tisatransmisiones.com.ar/correas-industriales.html

    saludos

    ResponderEliminar
  14. Excelentes entradas, solo una duda si solo quiero que el robot se mantenga vertical sin control bluetooth y sin encoders, con el código tal y como esta si lo cumplira o tengo que modificar algo? y de la carpeta de los codigos solo uso lo de arduino llamado BanlanXedBot? que se hace con los otros 3 de i2c Kalman y el de interrupciones? solo se tiene que agregar las librerias de digitalwritefast y el arduinopwmfrecuency? o necesito otras? Muchas gracias y buen trabajo.

    ResponderEliminar
  15. fffffrffffffffffffffeop

    ResponderEliminar