Este es el robot utilizado como ejemplo para el taller de robótica del 2009, pensado para ser copiado/construido por los asistentes con menos conocimientos de electrónica y/o programación, y diseñado para poder participar en las competiciones de rastreadores y velocistas en casi cualquier campeonato de España.

Componentes

Cantidad Componente Precio aproximado total (€)
7 Resistencia 10K (marrón – negro – naranja) 0.28
6 Resistencia 220 (rojo – rojo – marrón) 0.24
1 Resistencia 1k (marrón – negro – rojo) 0.04
1 Resistencia 470 (amarillo – violeta – marrón) 0.04
1 Diodo 1N4007 0.10
1 Condensador electrolítico 100u 0.10
1 Condensador cerámico 100n 0.15
1 74HC14 0.45
1 PIC16F722 Entre 1 y 5€
1 L293D (L293B podría servir, pero necesitarías poner 8 diodos más en el circuito) 3.60
1 LED 0.10
1 Micropulsador 0.20
6 CNY70 7.8
1 Tira de pines acodados 0.75
1 Zócalo 28 pines estrecho (SPDIP) 0.80
1 Zócalo 14 pines (PDIP) 0.30
1 Zócalo 16 pines (PDIP) 0.30
1 Placa perforada (minimo 90x155mm) 5.5
1 Portapilas 4 AA 0.55
4 Pilas recargables AA NiMH  ?
2 Motor+reductora  ?

El circuito puede funcionar con 4.5-5.5V, así que podéis utilizar 3 pilas AA no recargables (darían 4.5V) ó lo mejor es que utilicéis 4 pilas AA recargables (4.8V).

Los motores con reductora debéis intentar conseguirlos por vuestra cuenta. Podríais aprovecharlos de juguetes viejos, o preguntar en tiendas de modelismo. Si no los encontráseis, como último recurso podréis utilizar servos trucados, aunque cada uno os saldrá por unos 10€.

El chasis sobre el que van colocados el circuito, las pilas y los motores y ruedas también debéis conseguirlo por vuestra cuenta. Si no tenéis recursos, tiempo o ganas para hacer un chasis complejo, una simple lámina de acero fino, aluminio, chapa o madera puede servir.

Circuito electrónico

El circuito tiene/soporta:

  • PIC16F722 (Información en Microchip).
  • Oscilador integrado.
  • 2 motores (tracción diferencial: al girar cada rueda a una velocidad distinta el robot es capaz de girar).
  • 6 CNY70 (sensores de blanco/negro).
  • Schmitt triggers para los CNY70 (elimina el ruido).
  • El PIC16F722 tiene 2 módulos PWM que pueden ser usados para poder controlar la velocidad de giro de las ruedas
  • 9 pines digitales sin conectar, que pueden usarse para comunicarse con componentes externos originalmente no soportados por esta placa, como bumpers, control por infrarrojos, comunicación con PC o con otros microcontroladores, sensores por ultrasonidos…
  • LED indicador de funcionamiento.
  • Conector ICSP, para poder programar y depurar el PIC sin desconectarlo de la placa.

Bloques

Para facilitar la construcción y asegurarnos de que todo funciona correctamente, se recomienda ir añadiendo piezas poco a poco y comprobar que esos componentes funcionan.

Las líneas azules representan las pistas que debemos hacer por la cara inferior de la placa. Las líneas rojas son puentes hechos con cables rígidos por la cara superior.

Si quieres terminar la placa rápidamente, o si no eres capaz de hacer las pistas con estaño, puedes hacerlas usando cables. Es una solución mucho más rápida pero más fea.

Bloque 1

El primer bloque incluye sólamente el PIC, botón de reset y conector ICSP.
ICSP es la interfaz y el protocolo estándar de Microchip para leer, programar y depurar sus microcontroladores. Una vez construido el bloque 1, podrás conectar tu programador al conector ICSP y programar/depurar el PIC sin necesidad de sacarlo del zócalo.

Las patillas del pulsador, aunque lo parezca, no forman un cuadrado, sino un rectángulo de 300x200mils.

Fíjate que hay puentes por debajo de algunos componentes. Debes colocar esos puentes antes de poner los componentes.

Hay una resistencia (de 10k) puesta en vertical.

Antes de pasar al siguiente bloque, debes comprobar que todo funciona. Conecta tu programador a la placa y al ordenador. Instala MPLAB junto con el compilador de CCS y prueba a compilar y ejecutar este ejemplo (también puedes bajar el proyecto completo para MPLAB). Con un voltímetro podrás comprobar que RB5 (el pin 26, en la columna derecha es el tercero empezando por arriba) cambia su estado entre 0 y 5V una vez por segundo (es decir, a 0.5Hz).

Bloque 2

Este segundo bloque añade un conector de alimentación externa, un LED que indica cuándo el circuito está alimentado (y, por lo tanto, el programa en el PIC se está ejecutando), y el circuito integrado L293D que controla el estado de ambos motores.

Recuerda colocar los puentes que hay debajo del zócalo del L293D antes de poner el zócalo.

Los 3 pares de pines a los que se conectan las pilas y los motores están pensados para que se conecten a ellos hembras de pines, las cuales pueden resultar complicadas de preparar si no tienes práctica, por lo que si no quieres complicarte puedes estañar las pilas y los motores directamente a la placa en el lugar en donde están colocados los pines, ahorrándote tanto los pines macho que van sobre la placa, como las hembras soldadas a los cables.

Para comprobar que todo funciona correctamente, puedes utilizar este ejemplo (también puedes bajar el proyecto completo para MPLAB). Con un voltímetro podrás comprobar que los motores varían entre +5V y -5V cada dos segundos.

Si ya tienes los motores preparados, puedes utilizarlos en lugar de hacer mediciones con un voltímetro. No obstante, si utilizas motores necesitas alimentación externa, ya que el programador no puede alimentarlos.

Bloque 3

Este tercer bloque sólamente añade un 7414 y un CNY70 (por la cara de abajo). La cara del CNY70 en la que están impresas las letras se coloca mirando hacia el centro de la placa.

En CNY70 es un optoacoplador abierto, por lo que se utiliza para medir la reflectividad del material colocado delante. El 7414 es un circuito integrado que contiene 6 Schmitt Triggers inversores.

Al colocar un schmitt trigger a la salida del emisor del fototransistor del CNY70 eliminamos todos los valores de reflectividad intermedios, por lo que sólamente podremos detectar cuándo hay un objeto reflectante (o blanco) delante de cada CNY70, y cuándo hay un objeto no reflectante (negro).

Algunas pistas y componentes deben soldarse en pistas que ya están colocadas. Si eres cuidadoso puedes colocarlos sin necesidad de desestañar las pistas que ya habías hecho en bloques anteriores.

Al terminar este bloque ya puedes hacer pruebas con los motores y detectar blanco/negro, aunque hasta el siguiente bloque no podrás hacer que tu robot haga nada útil.

Para comprobar que todo funciona correctamente, puedes utilizar este ejemplo (también puedes bajar el proyecto completo para MPLAB). Con un voltímetro podrás comprobar que los motores avanzan (5V) cuando el CNY70 detecta un material negro, y se detienen (0V) cuando detecta un material blanco.

Bloque 4

Este cuarto y último bloque añade los cinco sensores CNY70 que faltan, junto con sus resistencias de pull-up y pull-down.

Para comprobar que todo funciona correctamente, puedes utilizar este ejemplo (proyecto completo para MPLAB). Los motores avanzarán cuando cualquiera de los 6 sensores esté colocado sobre la pista negra, y se pararán cuando todos ellos estén sobre el fondo blanco.

Al finalizar este bloque ya tendrás colocados todos los componentes necesarios para que tu robot rastreador y/o velocista funcione. Ya puedes montar la placa en su chasis y empezar a trabajar con el robot completo.

Bloque 5 (opcional)

En este bloque 5 simplemente se añaden los condensadores que filtran la tensión de alimentación para evitar ruidos que pueden perjudicar el funcionamiento del circuito. Es recomendable poner estos condensadores, pero si tu circuito funciona bien sin ellos puedes ahorrarte el trabajo de ponerlos.

Montaje

El chasis puedes fabricarlo utilizando cualquier material. Como motores puedes usar cualquier modelo que se alimente a 4.5-5.5Vcc y no consuma más de 600mA.

Fotos del robot realizado por Adrián Bulnes terminado. Chasis y ruedas de aluminio de 2mm. Los motores son servos Futaba S3003 trucados:

Velocista

Para utilizarlo como velocista/siguelíneas, puedes ver el siguiente ejemplo:

Aviso: Este ejemplo tiene un pequeño fallo que hace que el robot no siga la línea correctamente. ¡No te lo íbamos a dar todo hecho!

Este programa es un ejemplo muy simple. Puedes utilizarlo como base para tu programa definitivo, que debería ser eficiente, rápido, poco propenso a errores, capaz de corregir sus propios fallos…