Sensor infravermelho para seguidor de linha! FritzenLab

Hoje aprenderemos a calibrar e utilizar um sensor infravermelho reflexivo, que pode ser utilizado em robôs seguidores de linhas. Porém antes de qualquer coisa quero passar um pouco da teoria de funcionamento deste tipo de sensor.

O conjunto que estudaremos consiste de um LED emissor de luz infravermelha (invisível ao olho nú) e um foto-receptor, que pode ser um fotodiodo ou foto-transistor. O emissor e o receptor estão geralmente apontando na mesma direção para que possam se aproveitar do princípio da reflectância.

diagrama_esquamatico_sensor_obstaculos_gbk_bb

Esquema eletrônico de um sensor reflexivo infravermelho

Reflectância é (segundo a wikipedia) quanta radiação (ondas eletromagnéticas) uma determinada superfície é capaz de refletir ao invés de absorver. Esta quantidade é geralmente dependente do tipo de material e da cor da superfície. Neste artigo focaremos no fator “cor” para conhecer, calibrar e utilizar nosso sensor infravermelho.

Utilizei o sensor de obstáculos analógico da GBK Robotics, imagem abaixo. O diagrama esquemático do sensor foi apresentado na imagem acima.

sensor reflexivo infravermelho gbk robotics

Fonte: GBK Robotics

O teste que proponho consiste em utilizar um Arduino UNO (neste caso o Fritzen Proto, meu compatível com Arduino) para controlar o envio de luz infravermelha, a leitura do sensor de reflexão e envio da informação para o terminal serial do computador.

O objetivo do teste é determinar os valores analógicos lidos em diferentes superfícies, neste caso sobre minha bancada e sobre uma linha feita de fita isolante. O diagrama esquemático do experimento é visto abaixo.

diagrama esquematico medidor de reflectancia

O código para Arduino está abaixo e também está disponível na minha página do GitHub.

/*
 * Este sketch serve para encontrar os valores
 * analógicos de reflectância de uma determinada superfície,
 * através da aplicação de luz infravermelha e leitura
 * da quantidade de luz refletida, através de um sensor 
 * infravermelho (fotodiodo ou fototransistor)
 * ** Os valores encontrados são impressos no terminal serial **
 *  
 * Sketch desenvolvido por Clovis Fritzen (www.FritzenLab.com.br)
 * em 15/11/2016 , como parte de um artigo sobre sensores
 * reflexivos infravermelhos com Arduino
 * 
 * 
*/
#define emissor 2 // LED infravermelho
#define led13 13 // LED vermelho pino 13 do Arduino
#define receptor A0 // Fotodiodo ou fototransistor receptor infravermelho

int valorReceptor = 0;  

void setup() {
  
  pinMode(emissor, OUTPUT);
  pinMode(led13, OUTPUT);
  digitalWrite(emissor, LOW);
  Serial.begin(115200);

}

void loop() {
  
  valorReceptor = analogRead(receptor);
  Serial.print("valor analogico recebido= ");
  Serial.println(valorReceptor);
  
  delay(500);
  

}

Agora um vídeo explicando sobre o sistema, como utiliza-lo e como interpretar os resultados obtidos.

Uma das aplicações possíveis deste tipo de conjunto é um veículo seguidor de linha:

robô seguidor de linha

Observe que o objetivo do vídeo é explicar como utilizar os valores analógicos de reflectância obtidos, e não como criar um veículo seguidor de linha. Porém sim, este é assunto para um artigo futuro!!.