Nota: Esta web puede que se encuentre obsoleta, y no conduce a ningún resultado concreto. En cualquier caso se mantiene por si alguien la puede utilizar como guía...
INDIANA-BOT
INTRODUCCIÓN
Antes de nada, voy a explicar en que consiste es te proyecto, se trata de la construcción de un robot capaz de resolver laberintos, una iniciativa de un estudiante y un profesor aficionados a este mundillo de la robótica. Este proyecto ya fue pensado hace bastante tiempo, después de acabar una competición de robots, en la que yo mismo participé con un robot rastreador de línea y sumo, con buenos resultados, un total de 6 robots rastreadores, y dos de sumo.
Bueno, voy a adentrarme un poco mas en las características generales de este proyecto. Debemos construir un laberinto de dimensiones asequibles, y por tanto, unos robots lo mas pequeños posibles, de momento lo pensado es un laberinto en el que las paredes distan 15 cm, un fondo negro con unas paredes blancas, para ser mejor detectadas por los sensores, que usaremos, posiblemente unos MSE-135, detectores infrarrojos de un alcance máximo de 70mm. Hay tres variantes sobre los robot que vamos a construir, que son 2 en un principio, dos ideas pasan por nuestra cabeza, podemos construir 3 laberintos, uno sin ninguna marca en el suelo, otra con lineas en los bordes para evitar que el robot choque contra las paredes, y otra situar una cuadricula en el laberinto que permita saber al robot cuando llega a un punto de giro, en una intersección de lineas. La primera opción es las mas complicada, la segunda no lo es tanto y 3ª es mucho más fácil, vamos a empezar por la primera, ya que de esta manera podremos dibujar unas lineas sobre el suelo.
Después de esta introducción, me adentro en mi robot, que realizará la función de robot rastreador de linea, y robot de Laberinto, con posibilidad de ser ampliado a robot de sumo, pero esta vez con menos sensores, es decir, mi intención no es crearlo para ganar, ni para competir, sino simplemente por afición.
Índice
-Detección de posibles líneas en el suelo
-Características del Laberinto
-Preguntas, respuestas, comentarios. ayuda.
Bien, el robot es principalmente de laberinto, pasa esto deberá moverse dentro de un laberinto de paredes que distan 15 cm, con distintas desviaciones y posibilidades, y que las tome en cierto orden. Tuvimos dos ideas para esto, primero, ir guardando el una memoria EEPROM todos los datos y puntos por los que pasaba, así como las desviaciones que tomaba, etc, o otra posibilidad era que siempre tomase el camino el de la izquierda, en caso de no ser posible en de delante y como ultimo recurso, el de la derecha. Esta opción es mucho mas sencilla, y nos evita un problema que se nos planteó con el otro, que reconociese un punto por el que había pasado ya. Probando con algoritmos y circuitos dibujados, llegamos a la conclusión de que si el camino no vuelve sobre un punto anterior, es decir, el robot no tiene posibilidad de hacer círculos, entonces será capaz de salir de él, y en el peor de los casos quedaría atrapado en un bucle infinito.
Utilizaremos 3 sensores de distancia MSE-135 (Haz click aqui para saber mas sobre este sensor), uno colocado en la parte delantera, y dos a cada lado. Es preciso calcular las distancias a las que se colocan para que el robot, cuyo centro de giro será su propio centro, gire en el centro exacto de una intersección para que no se desvíe y de lugar a choques contra las paredes.
Estos sensores detectan 1 cuando no hay pared, y 0 cuando si la hay, por lo tanto, los códigos de movimiento serán:
Sensor izq-Sensor delantero-Sensor der-Movimiento
001 - Girar derecha
100 Girar Izq y avanzar un poco (Lo de avanzar sirve para que no detecte de nuevo que hay un hueco a la izquierda y así vuelva a girar a la izquierda.
101 Girar Izq y avanzar un poco
010 Alante
011 Alante
110 Girar izquierda y avanzar poco
000 Girar 180º
De esta manera seguirá el camino, y cuando encuentre varias posibilidades, elegirá siempre en el orden Izquierda, alante, derecha. Cuando se encuentre con 3 pared, dará media vuelta. y cuando tenga una pared por cada lado avanzará.
Para controlar el movimiento de los servomotores con mayor precisión utilizaré un sistema llamado retroalimentación, cosiste en poner una pegatina a las ruedas, que consista en una circunferencia dividida en sectores, uno blanco y otro negro, y un sensor CNY70. El microcontrolador contará el numero de vueltas que da cada rueda con este método, y así podre realizar con mayor precisión giros de 90º exactos, y el avance que debe realizar el robot para situarse en el centro de giro después de detectar una esquina. De paso con esto pretendo establecer la velocidad media del robot.
(imagen de pegatina, aquí)
-Detección de posibles líneas en el suelo
Para detectar distintas lineas en el suelo que determinen por donde va a ir el robot, cosa de la que prescindiremos en un principio, instalaré 3 sensores CNY70 que apunten al suelo para detectar las lineas, esto además me permitirá preparar el robot para una competición de línea como el año pasado.
Para configurar aspectos del robot de laberinto, y disponer del robot para distintas modalidades, voy a usar un Microinterruptor tipo Dipswitch de 4 contactos, y así usaré el robot libremente sin necesidad de reprogramarlo, una ventaja muy grande a la hora de la competición y la exhibición y comodidad.
-Características del laberinto
El laberinto dispone de unas paredes que distan 15 cm, de color blanco para ser fácilmente detectadas por los sensores, en este caso no volverá sobre si mismo, para evitar bucles infinitos. En un principio no llevará ninguna clase de líneas, pero mas adelante se pondrán si son necesarias.
(Imagen del laberinto)
Voy a usar el microcontrolador Basic Stamp 2, del fabricante Parallax, es un microcontrolador potente, de gran margen de variables, gran velocidad, tiene incluida una memoria EEPROM, y además se ser muy facil de programar, cosa que facilitara bastante hacer el robot, el espacio que ocupa es mínimo, y no necesita una placa de potencia, ni un driver para motores, asi que el espacio utilizado será el mínimo. El espacio es un factor muy importante, ya que debe ser capaz de girar sin problemas sobre si mismo en un espacio limitado de 15 cm. Este microcontrolador se programa en un fácil lenguaje, basado en el antiguo Basic, aquí incluyo algunas imágenes, tanto de la estructura interna como imágenes externas. Para obtener más información, entra en www.parallaxinc.com a la página del distribuidor oficial en Bilbao, www.microcontroladores.com,
(Imagen de la estructura interna de un BS1)
(Imagen de un servomotor, dos sensores MSE-110 basados en el CNY70 y el microcontrolador BS2 a la derecha, insertado en una CarrierBoard)
Utilizo unos servomotores de rotación continua, utilizando así solo un pin en vez de dos, como ocurre con los motores tradicionales de corriente continua. Estos servomotores se controlan mediante pulsos electrónicos, también los distribuye Parallax. Por cierto, el robot dispondrá de dos ruedas y un apoyo, de forma que al girar lo haga sobre si mismo.
Otra especificación acerca de estos motores, es que les pongo la alimentación de corriente por separado, esto hace que funcione mejor, que tengan mas potencia y velocidad, y que el microcontrolador no reinicie, como lo haría si lo conectare directamente a la fuente de alimentación de este. En un proyecto anterior intenté hacerlo con una sola fuente de alimentación e instalando unos condensadores de 330 microfaradios pero no funcionaba del todo, asi que decidí olvidarme de la idea.
Estos son los sensores que ultilizaré para que mi robot se relacione con el medio exterior.
Se trata de un módulo de muy sencilla instalación que proporciona Microsistemas Programados www.microcontroladores.com detectan a una distancia de unos 70 mm como máximo, el color mejor detectado es el blanco y el peor en negro. Recibes un 1 en el microcontrolador cuando no hay nada y un 0 cuando detecta la presencia de algún objeto.
Su tamaño es muy reducido y son de muy facil instalación, por lo demás no presentan ningun problema, y su distancia de alcanze es la suficiente y no sobrepasa nuestros intereses.
(Imagen del sensor)
El CNY70 es un sensor muy comunmente utilizado en muchos robots con distintas aplicaciones, son capaces de detectar a una corta distancia el color, blanco, o negro. En mi caso los vamos a utilizar para detectar las lineas del posible laberinto, y para detectar las lineas si quiero que también sirva para ser rastreador.
El CNY70 es un sensor de infrarrojos de corto alcance basado en un emisor de luz y un receptor, ambos apuntando en la misma dirección, y cuyo funcionamiento se basa en la capacidad de reflexión del objeto, y la detección del rayo reflectado por el receptor.
Vista externa y circuitos internos del sensor CNY70
El CNY70 tiene cuatro pines de conexión. Dos de ellos se corresponden con el ánado y cátodo del emisor, y las otras dos se corresponde con el colector y el emisor del receptor. Los valores de las resistencias son típicamente 10K ohmios para el receptor y 220 ohmios para el emisor.
Diferentes posibilidades de montaje del CNY70
Es importante fijarse bien en el lateral donde aparece el nombre del sensor, para identificar correctamente cada uno de los pines.
Patillaje del CNY70
Manejo del sensor
El CNY70 devuelve por la pata de salida correspondiente, según el montaje, un voltaje relacionado con la cantidad de rayo reflectado por el objeto. Para el montaje A, se leerá del emisor un '1' cuando se refleje luz y un '0' cuando no se refleje. Para el montaje B los valores se leen del colector, y son los contrarios al montaje A.
Si conectamos la salida a una entrada digital del microcontrolador, entonces obtenedremos un '1' o un '0' en función del nivel al que el microcontrolador establece la distinción entre ambos niveles lógicos. Este nivel se puede controlar introduciendo un buffer trigger-schmitt (por ejemplo el 74HC14, ¡ojo que es un inversor!) entre la salida del CNY70 y la entrada del microcontrolador. Este sistema es el que se emplea para distinguir entre blanco y negro, en la conocida aplicación del robot seguidor de línea.
Otra posibilidad es conectar la salida a una entrada analógica. De este modo, mediante un conversor A/D se pueden obtener distintos valores. Esto permite la detección dinámica de blanco y negro (muy útil cuando el recorrido presenta alteraciones en la iluminación). Pero también, si empleamos el sensor con objetos de distintos color, establecer un mecanismo para la detección de los distintos colores, determinando los valores marginales que separan unos colores de otros. Esto permite emplear el sensor para alguna aplicación donde la detección del color sea necesaria.
Una imagen que os puede ayudar muchisimo a la hora de entender y montar el CNY70 es este. Es mucho mas sencilla:
Las ruedas que voy a comprar son unas que usa Parallax en sus robots BOE-BOT y SUMO-BOT, son de plastico y directamente acoplables al servomotor que voy a ultilizar. Tienen una goma por fuera para darle mayor agarre, y tienen 65mm de diametro. Muy utiles gracias a su comodidad.
Por último, la estructura de este robot la haré con metacrilato de 2 mm de grosor, y barra roscada de 3mm principalmente, estos materiales con manejables en el sentido de ser cortados facilmente, etc. Basicamente el robot se estructura de abajo hacia arriba de la siguiente manera, abajo, un bloque de 4 pilas AA de 1,5 v, encima los servomotores, encima la placa y sensores, y la otra pila. De esta forma aprovecharemos todo el espacio, reduciendo lo mas posible sus dimesiones, llevará una pala delantera como tercer punto de apoyo. La estructura se asemeja a esta siguiente:
(Imágenes del prototipo Txikibot)
(Imágenes del prototipo Txikibot)
Montaje de los CNY70
Comienzo del montaje de la estructura
Estructura con la ruedas
Estructura casi montada por completo
La placa del Bs2 ira encima
Se abate por completo
El Dipswitch soldado a la placa
Montaje inicial para los CNY70, que por cierto, al final lo he cambiado
FOTOS DEL ROBOT TERMINADO
-Preguntas, respuestas, comentarios. ayuda.
Gracias por ver esta página web, agradecería cualquier comentario o ayuda con este robot, asi como criticas constructivas o avisos de fallos en la web, muchas gracias por todo.