Cuentavueltas y cronómetro para robots velocistas

Cuando has fabricado un robot velocista y has hecho una pista para probarlo siempre es necesario medir los tiempos que emplea en dar una vuelta a la pista. Así podrás comprobar en cuantas décimas de segundo has mejorado tu robot. Ya sea porque le has cambiado el código de control, has ajustado alguna constante o porque hayas modificado algo de la mecánica; esas décimas que ahorres en dar una vuelta son cruciales para mejorar su rendimiento de cara a las competiciones. Puedes medirlo a mano con un cronómetro, pero nunca tendrás la precisión suficiente y el margen de error cuando quieres medir las mejoras en décimas de segundo es grande. En este artículo voy a explicar cómo fabricar un medidor de vueltas o cuentavueltas sencillo.

IMGP2895

El cuentavueltas se compone de dos módulos. El módulo principal contiene los siguientes materiales:

  • Un microcontrolador PIC16F628A.
  • Un display HD44780.
  • Un módulo bluetooth HC06.
  • Un regulador de tensión 7805.
  • Un LDR.
  • Un botón.
  • Un diodo led.
  • Un buzzer.
  • Un cristal de cuarzo de 20Mhz.
  • Dos condensadores de 22pF.
  • Un condensador de 0,1uF.
  • Un condensador de 0,22uF.
  • Una resistencia variable de 10K Ω.
  • Una resistencia de 220 Ω.
  • Una batería Lipo de 7,4V o 5 pilas de 1,5V o una pila de 9V.

cronometro

El módulo secundario en un puntero laser de 0,5mW. Es importante que su potencia sea de 0,5mW (NO 5mW como muchos) ya que valores mayores son peligrosos para la vista si por algún casual el haz de láser hace contacto con la retina de tus ojos (directamente o por reflejo especular). Úsalo bajo tu responsabilidad y con las medidas de seguridad adecuadas.

La idea es sencilla: el láser está apuntando constantemente hacia el LDR a pie de pista. Cuando el robot velocista pasa por delante corta el haz de láser y se registra en el sistema una vuelta. El sistema puede estar monitorizado tanto desde el propio display del módulo principal como remotamente desde un ordenador a través de bluetooth.

El LDR tiene un caperuzón negro hecho con cartulina negra para que no le afecte la luz de ambiente. El conjunto está pegado a una base de cartón para apoyarlo en el suelo y evitar que se mueva.

IMGP2902

El puntero láser tiene otro caperuzón negro hecho con la misma cartulina, pero está completamente tapado excepto por un agujero donde saldrá un haz de laser muy pequeño, pudiendo así ser cortado más fácilmente por el robot cuando pase por delante. El conjunto está igualmente pegado a una base de cartón para apoyarlo en el suelo y evitar que se mueva.

IMGP2904

Al principio hay que apuntar el láser hacia el LDR moviendo el puntero. Cada vez que el haz de láser incida sobre el LDR el diodo led se encenderá y se oirá un pitido en el buzzer. Así sabremos que está apuntando correctamente.

IMGP2900

Se pulsa el botón, se apaga el led y a continuación muestra los datos de la última carrera que ha grabado en la eeprom del microcontrolador.

IMGP2901

De izquierda a derecha y de arriba a abajo:

  • Tiempo de la vuelta actual (a 0 por que ahora no está corriendo).
  • Tiempo de la última vuelta dada.
  • Número de vueltas hechas.
  • Tiempo total de la carrera.

Se vuelve a pulsar de nuevo el botón, se enciende el led y se ponen los contadores a 0, esperando a que el robot corte por primera vez el haz del láser para empezar la cuenta.

IMGP2905

Cuando el robot pasa a través del haz de láser, se apaga el led y empieza a contar automáticamente.

IMGP2903

Cada vez que el robot corta el haz de láser, suena un pitido, se pone a 0 el contador de la vuelta actual, se actualiza el valor de la vuelta anterior y se suma 1 al número de vueltas. Así hasta que se pulse el botón o se llegue a la vuelta 10, momento en el que el cronómetro se parará para poder visualizar los resultados y guardarlos en la eeprom del microcontrolador.

Si se quiere volver a medir sólo hay que pulsar el botón de nuevo, se enciende el led, se ponen los contadores a 0 y se espera a que el robot corte el haz de láser de nuevo.

Todos los datos son enviados por bluetooth a 115200 bps, por lo que se puede hacer un seguimiento desde un ordenador usando Processing sin tener que estar cerca del display o para visualizarlo en una pantalla panorámica en un evento con espectadores.

cuantavueltas

El sketch de processing: Cuentavueltas_Processing

El código fuente y el .hex del programa del microcontrolador PIC. Está hecho en PCW CCS: Cronometro_PIC

12 comentarios en “Cuentavueltas y cronómetro para robots velocistas

  1. Ray

    Buenas tardes, soy estudiante de electrónica en Brasil y estoy muy interesado en la creación de un robot velocista y su post » Robot Zero. A Line Follower for Beginners» es un gran comienzo, ya compró todos los componentes, pero en hacer de la placa tiengo dudas acerca de la especificación de condensadores, resistencias y transistores utilizados.
    Si es posible, me puede decir cuál es la función de los conectores en azul?

    https://www.4shared.com/photo/Bvc1Aifw/Circ.html?

    Pido disculpas por mi pobre castellano,
    Gracias!

    Responder
    1. JMN Autor

      Hola,

      el conector de dos pines en la parte inferior a la izquierda es el conector de una batería lipo de 3.7V.

      El conector superior de arriba a la derecha de 4 pines es un conector con los pines de la UART del microcontrolador para conectar un módulo de comunicaciones si se desea comunicación entre el pc y el robot.

      Los condensadores a la izquierda, el que está más abajo es de 47 uF, y el otro de 10 uF. El regulador al lado de los condensadores es un regulador de 5V de salida.

      Las 2 resistencias smd inferiores son de 390 ohmios y depende de los leds que se usen.

      Las dos ressitencias de arriba más a la derecha es una resistencia de pull-up, 12K ohmios, y las dos resistencias que quedan entre los interruptores y la baby orangutan son de 390 ohmios.

      Responder
  2. Daniel

    Muy bien Oscar, eso estaria bien en la Cosmobot de hoy. Pero claro, que mas da, si hay robots arrancados por telemando. Alli las normas son para algunos.

    Responder
  3. Santiago

    Saludos he seguido su artículo sobre el Robot Zero y y adquiri todos los materiales que mencionan ..
    Me preguntó si hay que tener alguna otra consideración en el.manejo de los componentes.. Es decir se asegura que el código y el diseño del PCB están bien elaborados y q no habrá riesgo de una mala conexión, armare y desarrollar tal y como se detalle en su blog espero funcione

    Y otra pregunta es necesaria la residencia que incluye en la placa de sensores ???

    Responder
    1. JMN Autor

      Hola,

      en el blog se muestran proyectos documentados que han funcionado, no se garantiza ni se asegura nada ya que aquí no vendemos nada, si alguien copia algo que lo haga bajo su criterio. Respecto al robot se han montado varios con ese esquema y programa, y han funcionado todos. Solo se ha de tener cuidado de si se usa el dc-dc con los motores potentes, poner un condensador a la salida del dc-dc y que el robot comience a andar cuando se pulsa el botón, para que si se dan reseteos no se enciendan los motores hasta que se pulsa el botón minimizando el riesgo de quemar el dc-dc.

      No sé que resistencias montarán ahora la placa de sensores de pololu, si no leen bien los sensores se puede cambiar, pero según viene también suele funcionar, depende también de la distancia de la placa al suelo.

      Saludos-

      Responder
  4. cristian

    hola … la verdad me intereza mucho su proyecto y quiero intantar hacerlo pero para otro uso es mas yo soy mecanico de motos y necesito poder fabricar un rpm + cuenta vueltas y como veo que ustedes son genios en esto !! me gustaria preguntarles si puedo ocupar su proyecto e intentar adaptarlo desde ya muchas gracias

    Responder
  5. bryan

    HOLA! MUY BUENO SU TRABAJO, TENGO UNA DUDA, SI NO SE LE CONECTA EL MODULO BLUETOOTH NO PASA NADA VERDAD? FUNCIONA IGUAL? O HAY QUE MANDAR ESOS PINES A TIERRA O QUE TENDRIA QUE HACER??
    GRACIAS Y SALUDOS!

    Responder
  6. DAMIAN

    HOLA QUE TAL
    AUN NO PUEDO VISUALIZAR LOS DATOS EN PROCESSING ME MARCA UN ERROR EN ESTA LINEA ME PODRÍAS AYUDAR GRACIAS

    puerto = new Serial(this,»/dev/tty.cronometro-DevB»,9200);

    Responder

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *