Robot Zero. Encoders.

Ya ha tenido lugar el concurso de robótica y hasta el año que viene no habrá otro, pero continuan los robots los viernes en el Medialab, la primera mejora a implementar en los diseños anteriores es añadir unos encoders.

Añadir un par de encoders a los robots resulta muy barato (un euro por encoder aproximadamente) y son totalmente necesarios para realizar programas más complejos. En el último concurso el robot ganador aprovechaba los encoders para correr en las rectas y disminuir la velocidad antes de que terminasen, lo que le permitió llevarse el concurso con bastante facilidad.

Las posibles mejoras en el robot debido al uso de encoders son varias:

  1. Ubicar el robot y acelerar en las rectas de un circuito conocido, algo sencillo de implementar y que en circuitos con pocas curvas es determinante.
  2. Cerrar el lazo de velocidad de cada rueda, se puede implementar un regulador para establecer la velocidad de los motores, lo que nos permite acelerar y frenar más rápido y sobretodo se puede eliminar el dc-dc, que en nuestro robot ha sido un cuello de botella.
  3. Contar la diferencia de pulsos entre las ruedas en un intervalo de tiempo para tener una idea de la curvatura actual, lo que puede permitir establecer distintas constantes en función de cada tipo de trazado.
  4. Y lo más importante es que el robot conozca su velocidad, lo que sirve para establecer las constantes del regulador. Los valores de las constantes (Kp, Kd) deben ser distintos para un mismo trazado si el robot va a una velocidad, o si por ejemplo va al doble. Partiendo de las ecuaciones cinemáticas del robot y del diagrama de bloques se puede ver como la salida/respuesta del robot es función de su velocidad, por lo que habrá que llevar unas tablas de cosntantes calculadas previamente que utilizar en función de la velocidad del robot. Todo ésto ya es complejo.

Hacer unos encoders con CNY70 para el Robot Zero como en el MiniZ resulta sencillo, sólo se necesitan un CNY70, un par de resistencias y un disco de papel/cartulina.

El esquema y fotolito son los siguientes:

Fotolito.

Foto del montaje:

Para poder medir la velocidad del robot debemos añadir un disco con rayas blancas y negras en cada rueda, de tal forma que el encoder detecte el paso entre una raya blanca y una negra, lo que creará un tren de pulsos a la salida del encoder que es función de la velocidad de giro de cada rueda.

Para ello con una impresora láser (el negro de una de tinta no lo va a detectar) imprimimos y recortamos un encoder, y lo pegamos sobre un papel un poco más grueso. Si no se dispone de una de estas impresoras hacer el disco con cinta aislante negra y cartulina es una buena solución. Se pega el disco sobre la parte blanca (no en la goma) interior de la rueda. Cuatro o seis líneas son más que suficientes para el robot, cuantas más líneas mejor ya que los pasos entre líneas del encoder se corresponden con menos distancia, pero menor es la velocidad de la rueda que vamos a poder medir, ya que el sensor tiene sus tiempos de encendido y apagado.

Plantilla de encoders.

Montaje del disco en la rueda:

 

Una vez hecho el encoder se pega sobre el soporte del motor en el borde:

En la salida del encoder encontramos la siguiente señal:

La señal amarilla se corresponde con la salida del enconder cuando está alimentado a 5 V y la rueda girando, no es una señal cuadrada limpia que sería lo deseable por lo que se puede pasar por un trigger schmitt (74hc14 por ejemplo) para tener una señal cuadrada a su salida (señal azul), muchos microcontroladores ya llevan un trigger schmitt en cada uno de sus pines de entrada, por lo que se puede conectar la señal amarilla directamente sin tener que poner uno externo.

Al añadir los encoders se requieren un par de timers del microcontrolador para llevar la cuenta de pulsos, aquí se puede ver un ejemplo del código de estos encoders en un AVR. La Baby Orangutan se queda pequeña por lo que uno de los objetivos de este año será fabricar nuestra placa para velocistas a medida, y hacer una pequeña tirada aprovechando los fabricantes chinos de PCB. También seguir con la telemetría que tenemos a medias y es necesaria para poder desarrollar programas más complejos.

Con la adición de los encoders las opciones a implementar en el robot se multiplican, dejo un video del funcionamiento:

Visitas :11525
Both comments and pings are currently closed.

5 Responses to “Robot Zero. Encoders.”

  1. Oscar says:

    Muy bueno el artículo. En mi caso voy a ver si puedo aprovechar la baby orangutan. Voy a usar dos pines configurados para que salte una interrupción cada vez que detecten el color negro y luego dentro del código voy a usar la función get_ticks y ticks_to_microseconds http://www.pololu.com/docs/0J18/17 para calcular el tiempo entre interrupciones.

  2. _Silent says:

    Si no se quiere mucha precisión, no hace falta ni disco, el propio radio de la rueda vale, solo que nos da 3 pulsos por vuelta.

  3. Muy buen artículo:

    Enhorabuena por el blog.

    Me interesa el apartado de como hacer placas PCB y que nos lo hagan los fabricantes chinos de PCB, para tiradas pequeñas. Estaría bien que hicierais un post sobre este tema, si podéis claro.

    Un saludo y que sigáis así.

Subscribe to RSS Feed Follow me on Twitter!