Se você precisa montar um robô seguidor de linha, o módulo sensor de linha analógico QRE1113 da Sparkfun pode ser uma peça importante do seu projeto.

Módulo sensor de linha analógico QRE1113 Sparkfun

O módulo QRE1113 é composto por um led infravermelho e um fototransistor e é do tipo analógico, ou seja, varia a tensão de saída de acordo com a quantidade de luz detectada pelo receptor. Por ter um tamanho bem reduzido (14 x 8 mm), é ideal para construção de robôs seguidores de linha.

O módulo sensor de linha analógico QRE1113

São apenas 3 pinos no módulo: Vcc (5 volts), GND e OUT (Sinal), sendo que este último aceita níveis de tensão de 3.3 à 5v. Portanto você pode utilizar esse sensor tanto em sistemas mais comuns, com o Arduino Uno, como em sistemas que utilizem, por exemplo, o Arduino Due, que trabalha com níveis de sinal de 3.3v.

Sensor de linha Sparkfun - Pinagem

O funcionamento é simples: quanto mais luz for recebida pelo sensor, menor será a tensão na saída. Assim você pode usar um conjunto de sensores e ajustar, por exemplo, a direção e/ou velocidade dos motores direito e esquerdo do seu robô conforme uma linha for detectada.

Circuito sensor e Arduino Uno

E como eu faço para ler isso? Usando uma das portas analógicas do Arduino e enviando os dados para o serial monitor, que vai mostrar que quanto mais clara a superfície que estamos testando, mais ela vai refletir a luz IR, e mais baixo vai ser o nível de tensão na saída do módulo.

Circuito Arduino e sensor de linha Sparkfun

No programa, nada de bibliotecas específicas ou comandos complicados. Você pode utilizar somente comandos básicos do Arduino para testar o sensor e enviar os dados para a serial.

No nosso exemplo, vamos ler o valor da porta analógica A3, e mostrar o nível de tensão na saída do módulo a cada 500 ms. Também vamos acender um led quando a tensão atingir um determinado valor (variável nivel_sinal):

//Programa : Teste sensor de linha QRE1113 Sparkfun
//Autor : Arduino e Cia

int nivel_sinal = 0;
int pino_led = 4;
int pino_sensor = A3;

void setup()
{
  pinMode(pino_led, OUTPUT);
  Serial.begin(9600);
}

void loop()
{
  //Leitura do sensor
  nivel_sinal = analogRead(pino_sensor);
  //Envia os dados para o serial monitor
  Serial.print("Nivel : ");
  Serial.println(nivel_sinal);
  //Teste o nivel de sinal e acende o led
  if (nivel_sinal < 1000)
  {
    digitalWrite(pino_led, HIGH);
  }
  else
  {
    digitalWrite(pino_led, LOW);
  }
  
  //Aguarda 500 ms e reinicia o processo
  delay(500);
}

Aproxime diferentes materiais do sensor para verificar a variação do sinal na saída do módulo. Cores mais escuras refletem menos a luz, e consequentemente geram menos variação de sinal. O contrário acontece com as cores claras.

Ajuste os valores da variável nivel_sinal para adequar a sensibilidade do sensor às necessidades do seu projeto. Experimente ainda incluir outras variáveis para testar diferentes níveis de luminosidade.

Gostou? Confira outros posts com sensor IR aqui mesmo no Arduino e Cia!

Avalie este post!