Módulo sensor de linha analógico QRE1113 Sparkfun
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.
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.
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.
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!
como eu faria para invés de detectar faixas escuras eu possa detectar uma linha branca ?