Robot seguidor de línea

1.-Resumen
Los robots seguidores de línea son robots muy sencillos, que cumplen una única misión seguir una línea marcada en el suelo normalmente de color negro sobre un tablero blanco (normalmente una línea negra sobre un fondo blanco). 

Metodología para el diseño y construcción de un robot móvil seguidor de líneas utilizando una placa de ARDUINO. Básicamente es un robot capaz de desplazarse a lo largo de una línea de un color diferente al fondo, basando su funcionamiento en sensores, sin embargo, dependiendo de la complejidad del recorrido, el robot deberá utilizar más o menos sensores. Hoy en día la Robótica Móvil se ha convertido en un tema de gran interés, con grandes adelantos debido a una gran cantidad de proyectos que se han desarrollado en todo el mundo.

Marco teorico: La robótica es una de las aplicaciones más apasionantes de la electrónica. Un robot seguidor de línea se clasifica en el campo de la robótica móvil un grupo de la rama de robótica, por tanto es necesario que posea tres funciones fundamentales, la locomoción (nivel físico), la percepción (nivel sensorial) y la decisión (nivel de control).

La Robótica es la rama de la tecnología que se dedica al diseño, construcción, operación, disposición estructural, manufactura y aplicación de los robots. La Robótica combina diversas disciplinas como son: la mecánica, la electrónica, la informática, la inteligencia artificial, la ingeniería de control y la física.

La historia de la Robótica va unida a la construcción de "artefactos", que trataban de materializar el deseo humano de crear seres a su semejanza y que lo descargasen del trabajo. 

Clasificación de Robots seguidor de linea
1.ª Generación. Manipuladores. 
Son sistemas mecánicos multifuncionales con un sencillo sistema de control manual, con gran capacidad de desplazamiento, basados en carros o plataformas y dotados de un sistema locomotor de tipo rodante. Siguen su camino pormedio de un mando a distancia o guiándose por la información recibida de su entorno a través de sus sensores. Estos Robots aseguran el transporte de piezas de un punto a otro de una cadena de fabricación. 

Para nuestro proyecto utilizaremos una placa de ARDUINO, una placa creada para el aprendizaje y la introducción a la programación e implementación en el mundo físico. Es una plataforma de desarrollo de computación física de código abierto, basada en una placa con un sencillo micro controlador y un entorno de desarrollo para crear software para la placa. Se puede usar el Arduino para crear objetos interactivos, leyendo datos de una gran variedad de interruptores, sensores y controlar la multitud de tipos de luces, motores y otros actuadores físicos.
Los proyectos de Arduino pueden ser autónomos o comunicarse con un programa que se ejecute en un dispositivo móvil.

¿Por qué USAR EL ARDUINO?
Arduino, además de simplificar el proceso de trabajar con micro-controladores. Ofrece algunas ventajas respecto a otros sistemas:

1. Multiplataforma: El software utilizado en el Arduino es multiplataforma, funciona en sistemas operativos como Windows, Macintosh y Linux.

2. Entorno de programación: Es simple y fácil de usar por principiantes y lo suficientemente flexible para los usuarios avanzados.

3. Hardware ampliable: los diseñadores de circuitos con experiencia pueden hacer su propia versión del módulo, ampliándolo u optimizando COMPONENTES.

Para muchos un robot seguidor de línea es la puerta de entrada al mundo de la electrónica y la robótica, para otros se convierte en una obsesión, en un reto, en una excusa para continuar mejorando sus conocimientos y experiencia en la robótica. 

Objetivo de la investigación:
En este trabajo se presenta un robot, autónomo, y reprogramable de pequeñas dimensiones. Se pretende promover la participación de los estudiantes para que desarrollen proyectos similares con fines de generar conocimiento y nuevas aplicaciones a mediano plazo.

El objetivo de la enseñanza de la Robótica, es lograr una adaptación de los alumnos a los procesos productivos actuales, en donde la Automatización (Tecnología que está relacionada con el empleo de sistemas mecánicos, electrónicos y basados en computadoras; en la operación y control de la producción) juega un rol muy importante. Sin embargo, la robótica se considera un sistema que va más allá de una aplicación laboral.


Desarrollo técnico:
Conectar la placa Arduino a la computadora.
Al principio no la detectará, ya que no tiene los controladores necesarios instalados. Para instalar los drivers hay que hacerlo manualmente desde “administrador de dispositivos”. Una vez instalados ya podremos programar. 

Materiales para el proyecto:
 Una tarjeta ARDUINO
 Circuito Integrado L293D
 Dos motores 12V
 5 Sensores óptico-reflectivos QRD1114
 2 Ruedas y una rueda loca. 
 Sensores QRD
 Resistores de 330 ohms
 Resistores de 1 Kohm
 Resistores QRD1114
 2 placas perforadas
 2 pedazos de acrílico
 Alambre de #20 AWG

Construcción de la base del robot
Esta parte del proyecto es muy importante ya que de ella depende la movilidad del robot así como de su rigidez para soportar los elementos electrónicos que posteriormente se integrarán a el. Se eligió como soporte un pequeño trozo de acrílico de 3mm de espesor y aproximadamente 20cm de largo y 10cm de ancho; el acrílico es muy fácil de manejar de hecho se puede cortar con un cutter y una regla repasando varias veces sobre el. 

La rueda loca (llamada graciosamente así) es una rueda igual a la que usan los carritos de supermercado y las sillas de oficina (igual en concepto, no físicamente) esta tiene un movimiento libre de 360º que facilita los giros del robot. Y por último pero no menos importante la parte de tracción del robot; constituida por los dos moto-reductores y sus respectivas ruedas, cada uno de estos puede ser controlado independientemente y son los que le dan dirección al robot, cabe destacar que si uno gira en sentido opuesto al otro respectivamente se puede obtener un giro de 360º sobre el eje del robot, lo que permite un amplio rango de movimiento.

Sensores: Detectan si estamos sobre la línea o no. En este caso he utilizado dos sensores instalados (QRD), básicamente está formado por un diodo emisor infrarrojo y un fototransistor que opera en la misma longitud de onda, el acoplamiento óptico se realiza por reflexión cuando es acercado a una superficie preferentemente plana y sólida.

El funcionamiento básicamente consta de tres ordenes y son las siguientes:
 Los dos sensores están sobre la línea, avanzamos
 El sensor de la derecha ha salido de la línea, giramos hacia la izquierda
 El sensor de la izquierda ha salido de la línea, giramos hacia la derecha
 Los dos sensores están fuera de la línea, sigue con lo que estabas realizando. 

Para nuestra aplicación consideraremos que la salida de estos sensores será "0" cuando vean "blanco" y "1" cuando vean "negro". Una vez montado el circuito y polarizado se puede comprobar que todos los LEDs infrarrojos de los QRD1114. 

Para asegurarnos que los fototransistores de los QRD1114 están trabajando correctamente deberemos comprobar el voltaje de las salidas. Con una superficie reflectante (un trozo de papel blanco) deberemos obtener un voltaje superior a 3 volts aproximadamente; en ausencia de algún objeto que refleje la luz infrarroja emitida por los LEDs mediremos aproximadamente 1 volt, este valor puede variar dependiendo de la luz del ambiente en el que estemos trabajando, aspecto que debe ser considerado en la programación del robot. 

La percepción de este robot es de tipo visual,aunque no debemos pensar que el robot va a ver. Su captación visual consiste en diferenciar entre dos colores. Para este caso, la línea de color negro sobre una superficie blanca. Aprovechando la propiedad física de la reflexión, el diodo emite una luz infrarroja dirigida hacia el suelo, y el foto transistor recibe los fotones generados por la reflexión que se produce sobre el suelo.

Resistores: La resistencia eléctrica de un objeto es una medida de su oposición al paso de la corriente. Una resistencia ideal es un elemento pasivo que disipa la energía en forma de calor según la ley de Joule. También establece una relación de proporcionalidad entre la intensidad de la corriente que la atraviesa y la tensión medible entre sus extremos, relación conocida como ley de OHM.

La resistencia de un material se puede definir como la razón entre caída de tensión y la corriente de dicha resistencia: R=v/i (voltaje entre intensidad)

El circuito integrado L293D: Incluye cuatro circuitos para manejar cargas de potencia media, en especial pequeños motores y cargas inductivas, con la capacidad de controlar corriente hasta 600 mA en cada circuito y una tensión entre 4,5 V a 36 V.

Los circuitos individuales se pueden usar de manera independiente para controlar cargas de todo tipo y, en el caso de ser motores, manejar un único sentido de giro. Pero además, cualquiera de estos cuatro circuitos sirve para configurar la mitad de un puente H.
El integrado permite formar, entonces, dos puentes H completos, con los que se puede realizar el manejo de dos motores. En este caso el manejo será bidireccional, con frenado rápido y con posibilidad de implementar fácilmente el control de velocidad. En primer lugar tenemos que entender cuáles son las especificaciones que debe cumplir nuestro sistema. 

Ya sabemos que nuestro circuito tendrá dos entradas: los dos sensores "C1" y "C2", y cuatro salidas: "S1" y "P1" para el motor izquierdo y "S2" y "P2" para el motor derecho. 

Motores.
El robot se mueve utilizando motores. Dependiendo del tamaño, el peso, la precisión del motor, entre otros factores, éstos pueden ser de varias clases: motores de corriente continua, motores paso a paso o los siempre agradecidos servomotores. Para este ejercicio vamos a suponer que tenemos 2 motores de corriente continua con un pequeño circuito digital de control. Cada motor es gobernado mediante 2 bits: el bit "P" (power) indica si el motor está encendido (1) o apagado (0) , y el bit "S" que indicará el sentido de giro, "0" (derecha) y "1" (izquierda).

El algoritmo para seguir la línea es muy sencillo. Si ambos sensores detectan "negro" el robot seguirá avanzando. Cuando el sensor de la derecha detecte "blanco" y el de la izquierda "negro", el robot girará a la izquierda, y cuando ocurra el caso contrario girará a la derecha. Si ambos sensores leen "blanco", el robot permanecerá parado.

Rueda.
Las ruedas del robot son movidas por los motores. Normalmente se usan ruedas de materiales anti-deslizantes para asegurar buena tracción. Su tamaño es otro factor a tener en cuenta a la hora de armar el robot.

Fuente de energía.
El robot obtiene la energía que necesita para su funcionamiento de baterías. El peso, capacidad de descarga y duración son factores a tener en cuenta a la hora de escoger un modelo o tamaño, utilizamos una pila de 9V. Con esto hemos terminado la parte electrónica y mecánica de nuestro robot, resta conectar todo a nuestro Arduino y comenzar con la programación. 

Tarjeta de control ARDUINO.
Es la responsable de la lectura de los sensores, la toma de decisiones y el control de los motores. En la actualidad, se emplean pequeños y baratos microcontroladores para ello. El programa hecho para este robot es muy básico y puede ser modificado para mejorar el control del robot, se puede agregar auto ajuste de sensibilidad a la luz de los sensores, medidor de nivel de batería, algún sonido o cualquier otra cosa útil en el desempeño del robot. 

Para realizar este robot seguidor de línea es necesario un micro controlador, en nuestro caso hemos utilizado la placa Arduino. Para comprender el funcionamiento y las características físicas de la placa de Arduino es necesario realizar varias pruebas básicas para familiarizarse con los pines y código que posteriormente utilizaremos para el robot. 

El paso siguiente es crear un programa capaz de sincronizar los dos sensores con los dos motores. Para ello deberemos interpretar las lecturas de los sensores y una vez obtenidos los valores deseados sincronizar dichos sensores con los motores para controlar su funcionamiento.
Para el montaje de nuestro robot intentamos utilizar en mayor medida los materiales que podemos obtener en forma sencilla, la construcción consiste en una base en la que colocar los elementos electrónicos (placa Arduino, smotores…) y a la que poder unir unas ruedas para su desplazamiento. A continuación, tendremos el robot montado junto a los componentes electrónicos y únicamente tendremos que interconectarlos todos a través de cables unifilares a la placa de Arduino sirviéndonos de una protoboard. 

El código aplicado a la Placa de ARDUINO para el funcionamiento del Robot: 

#include
/*
Analog input, serial output
Reads an analog input pin, prints the results to the serial monitor.
The circuit:
* potentiometer connected to analog pin 0.
Center pin of the potentiometer goes to the analog pin.
side pins of the potentiometer go to +5V and ground

*/ const int izq=1;
const int der=2;
const int ava=3;
const int encendido=1;
const int apagado=0;
void setup() { 
// Guardar(0);
Serial.begin(9600);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
}

int a;
int b=0;
int sentido=0;
int func=apagado;
char texto; void loop() {
// read the analog input into a variable:

while(func==apagado)
{
if(Serial.available()>0)
{
texto=Serial.read();
Serial.write(texto);
if(texto=='b')
{
Borrar();
} if(texto=='c')
{
Serial.println(analogRead(0));
Serial.println(analogRead(1));
}
else
{
b=Leer();
Serial.println(b);
}
}
if(analogRead(2) 250)
{
delay(1000);
func=encendido;
}
}
if(analogRead(0) 200 analogRead(1) 200)
{
digitalWrite(4,LOW);
analogWrite(5,255);
digitalWrite(7,LOW);
analogWrite(6,200);
sentido=ava;
if(analogRead(3) 250)
{
delay(20);
b++;
}
}
if(analogRead(0) 200  analogRead(1) 200)
{
digitalWrite(4,HIGH);
analogWrite(5,127);
digitalWrite(7,LOW);
analogWrite(6,127);
sentido=der;
}
if(analogRead(0) 200  analogRead(1) 200)
{
digitalWrite(4,LOW);
analogWrite(5,127);
digitalWrite(7,HIGH);
analogWrite(6,127);
sentido=izq;
}
if(analogRead(0) 60  analogRead(1) 60)
{
if(sentido==der)
{
digitalWrite(4,HIGH);
analogWrite(5,0);
digitalWrite(7,LOW);
analogWrite(6,127);
delay(250);
}
if(sentido==izq)
{
digitalWrite(4,LOW);
analogWrite(5,127);
digitalWrite(7,HIGH);
analogWrite(6,50);
delay(250);
}
else
{
digitalWrite(7,LOW);
analogWrite(6,0);
digitalWrite(4,LOW);
analogWrite(5,0);
if(sentido  0)
{
func=apagado; Guardar(b);
}
}
sentido=0;
}
}
void Guardar(int dato)
{
int i=0;
while(dato- 255)
{
EEPROM.write(i,255);
dato- 255; i++;
}
EEPROM.write(i,dato);
EEPROM.write(i+1,0);
}
int Leer()
{
int i=0;
int j=0;
int k=0;
do
{
j=EEPROM.read(i);
k+=j; i++;
}
while(j!=0);
return k;
}
void Borrar()
{
int i=0;
int j=0;
do
{
j=EEPROM.read(i);
EEPROM.write(i,0);
i++;
}
while(j!=0);
}
// int analogValue = analogRead(0); 
// print the result:
// wait 10 milliseconds for the analog-to-digital converter
// to settle after the last reading:
// delay(10);

Finalmente podremos realizar las pruebas pertinentes para el seguimiento de la línea y solucionar los problemas que vayamos encontrando tanto como por la disposición de los elementos físicos del robot como por parte de la programación.

Resultados: Enseguida presentaremos el montaje final de nuestro robot, incluyendo los circuitos electrónicos en una placa impresa y la instalación de los sensores al frente de la rueda delantera. Se utilizarán baterías de 9 V.
El robot instalado con todos sus componentes presenta una masa total de 500gr. 
Realizarán pruebas para calcular la velocidad media del robot en línea recta con baterías completamente cargadas. Así mismo, se realizarán pruebas para obtener el tiempo y distancia de frenado, con la finalidad de obtener datos acerca del tiempo de retardo al cambio de dirección y el par del motor. 

Para la realización de las pruebas de desempeño del robot móvil, se utilizará una pista de pruebas de 4.5 metros.

Análisis e interpretación de resultados: 
El robot cumplirá con el objetivo de completar la pista varias veces, teniendo una gran cantidad de oscilaciones sobre la línea, las oscilaciones se pudieron reducir disminuyendo la distancia entre los sensores y la pista para que la línea fuera detectada de una mejor manera. El funcionamiento general del robot se puede optimizar su funcionamiento cambiando algunos aspectos de su programación o utilizando materiales más ligeros en su estructura para reducir efectos inerciales. También cabe destacar que el robot dismuye su funcionamiento en lugares donde la superficie no es totalmente plana y donde hay mucha luz solar, esto se debe a que afecta a los sensores ya que distorsionará su percepción de seguir la linea negra.

La tecnología ha pasado de ser una herramienta de trabajo deseable a una herramienta indispensable para competir en el mercado globalizado. Ningún empresario puede omitir la automatización de sus procesos para aumentar la calidad de sus productos, reducir los tiempos de producción, realizar tareas complejas, reducir los desperdicios o las piezas mal fabricadas y especialmente aumentar la rentabilidad.

Conclusiones : En este proyecto veremos de manera "teórica", cómo se puede diseñar el controlador digital de un robot rastreador utilizando conceptos teórico/prácticos.

Fuentes de información:
1. Antonio Barrientos y otros. Fundamentos de Robótica.
Editorial McGraw-Hill Direcciones electrónicas
2. http://www. Arduino.cc/esp/
3. http://www.infoab.uclm.es/labelec/solar/otros/infrarrojos/sensor_cny70.htm
4. http://jorgefloresvergaray.blogspot.com.es/2009/07/un-carrito-seguidor-delinea-sencillo.html
5. http://www.slideshare.net/ronguti/robot-seguidor-de-linea
6. http://www.robotgroup.com.ar/web/

0 comentarios