29 julho 2014

Módulo sensor de linha analógico QRE1113 Sparkfun

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

Módulo sensor de linha QRE1113 Sparkfun


O módulo é 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.

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 de linha QRE1113 Sparkfun


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) :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
//Programa : Teste sensor de linha 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 sensibiidade do sensor às necessidades do seu projeto, ou ainda inclua outras variáveis para testar diferentes níveis de luminosidade.

Nenhum comentário:

Postar um comentário