Los sensores utilizados para el seguimiento de líneas por coches-robots, realmente son detectores de obstáculos (también se podrían usar con ese fin) que utilizan tecnología de infrarrojos para comprobar si se refleja o no un haz de luz infrarroja. Es decir, a diferencia de los detectores de obstáculos por ultrasonidos como el HC-SR04 que permiten conocer la distancia hasta el objeto que se detecte en función del tiempo de recepción de la señal, en este caso sólo se detecta si se recibe o no la señal que se ha emitido. Por tanto, con este tipo de sensores sólo se puede obtener un valor con 2 posibles estados (verdadero o falso, 0 ó 1) como respuesta. Este tipo de sensores se utiliza para el seguimiento de líneas, ya que la luz infrarroja no se refleja sobre el color negro, y por tanto, la luz emitida por el sensor no es recibida de vuelta.

La conexión a la placa Arduino se realiza de manera similar a otros sensores. En este caso tenemos 3 pines: OUT, GND y VCC. Como es habitual, conectaremos el pin VCC a una conexión de 5V, y el pin GND a uno de los pines de tierra de la Arduino. El pin OUT será el que envíe la información, por lo que lo conectaremos a uno de los pines digitales.

Una vez que se coloque el sensor en el lugar deseado para su funcionamiento, hay que ajustar la ruedecita que incorpora (en el bloque cuadrado de color azul que aparece en la foto), usando un destornillador de precisión. Con este ajuste se va a indicar al sensor la distancia a la que se desea detectar el reflejo de la luz infrarroja. Esta ruedecita debe ajustarse a derecha o izquierda hasta que su funcionamiento sea similar al que se puede ver en la siguiente animación. Es decir, teniendo corriente en el sensor, se deberán encender los 2 leds que incorpora cuando no se encuentre sobre la línea, y se apagará uno de ellos cuando se encuentre sobre la línea negra.

Programación básica del sensor

En el siguiente ejemplo de programación de uno de estos sensores simplemente se va a mostrar en el monitor serie un mensaje informando si el sensor se encuentra sobre la línea o no.

// Guardar el número de pin de Arduino al que está conectado el pin OUT del sensor 
int pinDetectorLinea = 3; 
 
void setup() { 
  // Se indica que ese pin va a utilizarse para recibir información 
  pinMode(pinDetectorLinea, INPUT);  
  // Se activa el monitor serie para mostrar información posteriormente 
  Serial.begin(9600); 
} 
 
void loop() { 
  // Se lee la información ofrecida por el sensor 
  int enLaLinea = digitalRead(pinDetectorLinea);  
  // Obteniéndose 0 si está fuera de la línea y 1 si está sorbe la línea 
  if(enLaLinea == 0) { 
    Serial.println("Fuera de la línea"); 
  } else { 
    Serial.println("Dentro de la línea"); 
  } 
  // Pequeña pausa para poder ver más despacio los resultados en el monitor serie 
  delay(500); 
} 

En el monitor serie aparecerán mensajes como los siguientes si se va colocando el sensor señalando a la línea y dejando de señalarla alternativamente.

Algoritmo para el seguimiento de líneas con coches robot

En el caso de querer usar este tipo de sensores para que un coche robot siga una línea negra, hay que tener en cuenta que se deben usar al menos 2 sensores de este tipo. Uno de ellos detectará si el coche se ha salido de la línea por la parte derecha, y el otro sensor hará lo mismo para el lado izquierdo.

Si se detecta que el coche ha dejado la línea por la parte derecha, hay que hacer que el coche gire hacia la izquierda. En el caso contrario, es decir, que el coche deje la línea por la parte izquierda, habrá que girar el coche hacia la derecha para que vuelva a contactar con la línea.

Más información y ejemplos de programación