Como usar o sensor infravermelho TCRT5000 com Arduino
O sensor infravermelho é um dispositivo eletrônico que emite e/ou detecta radiação infravermelha com o intuito de revelar alguns aspectos do ambiente a seu redor. Esses sensores podem ser utilizados para detectar movimentos, medir o calor de um objeto, em leitores de código de barras, alarmes de passagem, entre outros.
Para aplicações de robótica, o sensor infravermelho é muito utilizado na construção de robô seguidor de linha. Este robô possui como objetivo percorrer um determinado trajeto sendo direcionado por uma linha preta, branca ou cores intermediárias. Para esta aplicação, o TCRT5000 (Figura 1) é amplamente utilizado.
O sensor infravermelho TCRT5000 inclui um emissor infravermelho e um fototransistor em uma embalagem que bloqueia a luz visível.
A proposta deste projeto é utilizar o sensor infravermelho em conjunto com a placa UNO para detectar linha. O infravermelho utilizado será o sensor seguidor de linha TCRT 5000, componente comumente aplicado em projetos de robôs seguidor de linha.
MATERIAIS NECESSÁRIOS
- 1 x Placa UNO SMD R3 Atmega328 compatível com Arduino UNO;
- 1 x Cabo USB;
- 1 x Protoboard;
- 1 x TCRT 5000;
- 1 x Resistor de 10 kΩ;
- 2 x Resistores de 220 Ω;
- 1 x LED difuso.
ESQUEMÁTICO DE LIGAÇÃO DOS COMPONENTES
Conecte os componentes na protoboard conforme a Figura 2.
Ao montar seu circuito na protoboard preste atenção nos seguintes pontos:
- O TCRT 5000 é formado por dois componentes. O primeiro é um LED infravermelho (componente de cor azul), que emite um feixe de luz numa frequência não visível a olho nu; O segundo é um fototransistor (componente de cor preta), que captura o feixe de luz emitido pelo infravermelho;
- Estes dois componentes funcionam em conjunto. O LED emite a luz infravermelha que é refletida por um objeto, posicionado em frente ao sensor, que é detectada pelo fototransistor;
- A cor e o material do objeto podem interferir no funcionamento do TCRT 5000. Ex. Objetos de cor preta não são bons refletores;
- O sensor TCRT 5000 possui quatro pinos, sendo dois do LED infravermelho e dois do fototransistor, como ilustra a imagem a seguir:
- Ânodo do LED infravermelho (D+);
- Cátodo do LED infravermelho (D-);
- Coletor do fototransistor (T+);
- Emissor do fototransistor (T-);
- O cátodo do LED difuso, o cátodo do LED infravermelho (D-) e o emissor do fototransistor (T-) devem ser ligados ao terra (GND)da placa UNO;
- O ânodo do LED difuso deve ser ligado a porta digital 9, o ânodo do LED infravermelho (D+) deve ser ligado ao 5V e o coletor do fototransistor deve ser ligado a porta digital 8. Conectamos também uma resistência de 10 kΩ entre a porta 8 e o 5V da placa UNO.
ELABORANDO O CÓDIGO
O proposito deste projeto é realizar a detecção de uma linha preta utilizando o sensor infravermelho TCRT 5000, de forma que ao detectar a linha preta o estado do sensor será nível baixo (LOW).
Vamos entender a lógica de programação deste projeto com os seguintes passos:
1.Definir as variáveis:
Definimos o pino digital 8, em que o pino T+ do sensor TCRT 5000 está conectado, a variável pinoIR, e o pino 9, em que o LED difuso está conectado, a variável ledpin. Definimos a variável valorLido, do tipo inteiro, para armazenar o estado (HIGH/LOW) do infravermelho;
2.Configurar as portas de entrada e saída e inicializar a comunicação serial:
O pinoIR (pino 8) será definido como entrada (INPUT) e ledpin será definido como saída (OUTPUT);
A comunicação serial foi inicializada por meio da instrução: Serial.begin(9600);
3. Realizar a leitura:
No loop realizamos a leitura digital da variável pinoIR (pino 8) e atribuímos este valor a variável valorLido;
4. Comparar o valor lido:
Utilizaremos a lógica do if…else para comparar se a variável valorLido encontra-se em nível alto ou baixo (linha detectada ou linha não detectada), da seguinte maneira:
- Se a variável valorLido estiver em nível lógico baixo (LOW) será exibida no monitor serial a mensagem “Linha detectada” e o LED difuso será acionado;
- Senão, será exibida no monitor serial a mensagem “Linha NÃO detectada” e o LED difuso será desligado.
O programa do projeto proposto encontra-se detalhado a seguir:
/* = DETECTAR LINHA SENSOR INFRAVERMELHO TCRT5000 = ================================================ == BLOG DA ROBOTICA - www.blogdarobotica.com === ================================================ Autor: Carol Correia Viana E-mail: contato@blogdarobotica.com Facebook: facebook.com/blogdarobotica Instagram:@blogdarobotica YouTube: youtube.com/user/blogdarobotica ================================================ == CASA DA ROBOTICA - www.casadarobotica.com === ================================================ Facebook: facebook.com/casadaroboticaoficial Instagram:@casadarobotica ================================================ */ int IRpin = 8;//Atribui o pino 8 a variável IRpin int ledpin = 9;//Atribui o pino 9 a variável ledpin int valorLido = 0;//Variável responsável por armazenar o estado do infravermelho (LOW/HIGH) void setup(){ Serial.begin(9600);//Inicializa a comunicação serial, com velocidade de comunicação de 9600 pinMode(IRpin, INPUT);//IRpin definido como entrada pinMode(ledpin, OUTPUT);//ledpin definido como saída } void loop() { valorLido = digitalRead(IRpin);//Armazena o valor digital de IRpin em valorLido if (valorLido == LOW) {//Se valor lido for igual a LOW Serial.println("Linha Detectada");//Escreve na serial "Linha Detectada" digitalWrite(ledpin,HIGH);//Liga o LED } else {//Senão Serial.println("Linha NAO Detectada");//Escreve na serial "Linha não detectada" digitalWrite(ledpin,LOW);//Desliga o LED } delay(100);//Intervalo de 100 milissegundos }
Espero ter ajudado,
Obrigada a todos e em caso de dúvidas deixe seu comentário abaixo!
Att. Carol Correia Viana
Bacharel em Engenharia Elétrica com ênfase em Eletrônica, mestra em Engenharia Industrial e especialista em Docência com ênfase em Educação Inclusiva. Atua no setor de Desenvolvimento de Produtos na Casa da Robótica. Editora chefe e articulista no Blog da Robótica. Fanática por livros, Star Wars e projetos Maker.