bclose

PROGRAMACIÓN DEL SIGUE LÍNEAS

Integrar los infrarrojos en el robot

Objetivos

.

 
    • Dibujar el circuito a seguir por el robot.
    • Calibrar los sensores infrarrojos.
    • Pensar el algoritmo que seguirá el programa.
    • Programar el robot sigue líneas.

 

MATERIAL REQUERIDO

 montaje coche s4a

Set de piezas del coche

Imagen de Arduino UNOArduino Uno o compatible y un PC con el entorno mBlock correctamente instalado y configurado.
Vista principalUn módulo controlador de motores L298N.
sensor siguelíneas Un sigue líneas IR.
Img_3_6Algunos cables macho-macho y  macho-hembra de Protoboard.

 

PREPARAR EL CIRCUITO Y CALIBRAR LOS SENSORES

 

Como ya hemos comentado anteriormente, tenemos que utilizar un material para dibujar el circuito que sea de un color más claro o más oscuro que la superficie en la que lo vayamos a dibujar, y cuanto mayor sea el contraste mejor.

Otra directriz importante es que las curvas no pueden ser demasiado fuertes, como por ejemplo un ángulo recto, o los dos sensores se saldrían a la vez del circuito y el robot no se percataría de la dirección en la que debería girar.

 
  • Si necesitáis que el robot detecte curvas muy fuertes, como por ejemplo ángulos rectos, podéis solucionarlo poniendo los sensores con más separación que la anchura del circuito.
  • De esta forma, e invirtiendo la lógica del programa, podemos hacer que detecte los giros por cerrados que sean.
 

Aquí podéis ver el circuito que hemos diseñado nosotros:

robot rastreador

 

INTEGRAR Y CALIBRAR LOS SENSORES INFRARROJOS

 

Primero vamos a colocar los sensores infrarrojos en el chasis del coche. Los sensores tienen que quedar cerca de la superficie así que vamos a usar unas varillas roscadas por el interior para atornillarlos. Los colocaremos en la parte delantera del robot:

rastreador IR

Atornillamos las varillas al chasis y en la parte inferior atornillamos los infrarrojos, utilizando el agujero que tienen en el centro. Nos va a quedar así:

ir rastreador

Conectaremos los sensores como hemos visto en la sesión anterior, nosotros vamos a conectar el sensor izquierdo al pin digital 9 y el derecho al 8. A parte de eso sólo tenemos que conectarlos a la alimentación y GND.

 
  • Podéis conectar la alimentación de los sensores a la salida de 5V del L298N
  • O si preferís podéis usar los pines 5V y 3.3V para alimentarlos.
  • En teoría funcionan a 5V pero también lo hacen con 3.3V.[/fancy-ul] 
montaje robot rastreador

Tenéis que aseguraros que los sensores infrarrojos estén bien calibrados, de forma que no detecten la luz reflejada encima del circuito que hemos hecho en negro y sí lo hagan en la superficie en la que lo hayamos puesto, o al revés si lo hacéis con un circuito claro sobre una superficie oscura. Para hacerlo no hace falta que programéis nada, si se enciende el LED del infrarrojo significa que está recibiendo la luz rebotada, sino se enciende, no lo está haciendo.

 

ALGORITMO Y PROGRAMACIÓN

 

Antes de empezar a programar, vamos a recordar cómo se supone que debería funcionar el robot:

 
  • Si los dos sensores están sobre la línea: sigue recto.
  • Si se ha salido hacia la izquierda: giramos a la derecha hasta tener los dos sensores sobre la línea.
  • Si se ha salido hacia la derecha: giramos hacia la izquierda hasta tener los dos sensores sobre la línea.
  • Si por alguna razón se salieran los dos, haremos que se pare. 
rastreador

Como ya hemos comprobado el sentido de giro sólo tenemos que sustituir las teclas que usábamos para mover el coche por las lecturas de los sensores. Para ello vamos a crear dos variables con las que declararemos dos entradas para los sensores, y de esta forma tener siempre claro qué sensor es el de la izquierda y cual el de la derecha.

int sensorizq = 8;
int sensorder = 9;

// Motor A
int ENA = 6;
int IN1 = 13;
int IN2 = 12;

// Motor B
int ENB = 5;
int IN3 = 11;
int IN4 = 10;

int vel = 150;

void setup()
{
 pinMode (ENA, OUTPUT);
 pinMode (ENB, OUTPUT);
 pinMode (IN1, OUTPUT);
 pinMode (IN2, OUTPUT);
 pinMode (IN3, OUTPUT);
 pinMode (IN4, OUTPUT);
 pinMode( sensorizq , INPUT) ;
 pinMode( sensorder , INPUT) ;
}

Haremos que las variables de los sensores tomen en todo momento el valor de las entradas a las que los hemos conectado. Y teniendo el estado de los infrarrojos, y con las funciones que hicimos en la sesión anterior, el funcionamiento será el siguiente:

 
  • Para que el robot se mueva hacia delante los dos sensores deberían estar sobre el circuito dibujad en negro, o sea que deberíamos estar recibiendo un “1” en las dos entradas digitales a las que los hemos conectado.
  • Si el robot se desvía hacia la izquierda, el sensor izquierdo transmitirá “0”, y tendremos que hacer que gire hacia la derecha para corregirlo.
  • Y siguiendo la misma lógica, hacemos que gire a la izquierda si se ha salido por la derecha y que se pare si se ha salido del circuito totalmente (que esperemos que no ocurra). 
void loop()
{
 int valor1 = digitalRead(sensorizq) ;
 int valor2 = digitalRead(sensorder) ;
 if (valor1 == 1 && valor2 == 1)
  Adelante();
 if (valor1 == 1 && valor2 == 0)
  Izquierda();
 if (valor1 == 0 && valor2 == 1)
  Derecha();
 if (valor1 == 0 && valor2 == 0)
  Parar();
}

Y ahora sólo nos queda la prueba de fuego, que si todo ha ido bien, debería ser parecida al siguiente vídeo. Os animamos a tratar de mejorar el diseño y la programación para conseguir que nuestro robot siga el circuito de la forma más rápida y eficiente posible. Os dejamos aquí el programa que hemos utilizado: Siguelineas.

 

RESUMEN

 

En esta sesión hemos aprendido varias cosas importantes:

 
  • Integramos los sensores de infrarrojos en el montaje del coche.
  • Hemos realizado un programa para que sean los valores de los sensores infrarrojos los que guíen correctamente el robot.
  • Hemos terminado nuestro robot sigue líneas.
 

LikeUsOnFacebook_Icon

No Comments

Give a Reply

WordPress Anti-Spam by WP-SpamShield

¡Oferta!

Promoción especial de abril.

Tu robot educativo por

49,95

Ir al producto