Como utilizar o sensor de linha / segue faixa infravermelho TCRT5000 com Arduino
Um 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, ler de código de barras, em alarmes de passagem, entre outros.
No campo da robótica, o sensor infravermelho é amplamente utilizado na construção de robôs seguidores de linha. Os seguidores de linha são robôs pré-programados para detectar e seguir uma linha, geralmente branca ou preta. A identificação da cor da linha pode ser feita usando sensores infravermelho, como o sensor de linha / segue faixa TCRT5000 (Figura 1).
O sensor de linha / segue faixa TCRT5000 possui dois LEDs infravermelho: um LED emissor infravermelho (de cor azul), que emite um feixe de luz numa frequência não visível a olho nu, e um receptor fototransistor (de cor preta), que captura o feixe de luz emitido pelo infravermelho.
Estes dois LEDs operam em conjunto. Quando a luz emitida choca em algum obstáculo próximo ocorre a reflexão da luz e o fototransistor a detecta.
A cor e o material do objeto podem interferir no funcionamento do TCRT 5000. Por exemplo, os objetos de cor branca são bons refletores, ao contrário dos objetos de cor preta, conforme a Figura 2.
Além disto, o sensor de linha / segue faixa TCRT5000 possui um potenciômetro de ajuste de sensibilidade, LEDs de indicação e pinos de alimentação, saída digital e saída analógica que podem ser observados na Figura 3.
Funções dos pinos:
- VCC: Alimentação do sensor entre 3,3V ~ 5V;
- GND: Pino de aterramento do sensor;
- A0: Saída analógica do sensor;
- D0: Saída digital do sensor.
Nesse tutorial, vamos aprender como utilizar o sensor de linha / segue faixa TCRT5000 com o Arduino.
MATERIAIS NECESSÁRIOS
- 1 x Placa UNO SMD R3 Atmega328 compatível com Arduino UNO;
- 1 x Sensor de linha / segue faixa infravermelho TCRT5000;
- 1 x Cabo USB compatível com Arduino UNO;
- Jumpers macho-macho.
ESQUEMÁTICO DE LIGAÇÃO
Inicialmente, certifique-se de que a sua placa Arduino esteja desligada. Em seguida, monte o circuito da Figura 4.
Ao montar o circuito observe os seguintes pontos:
- O pino GND do sensor deve ser conectado ao GND do Arduino;
- O pino VCC do sensor deve ser conectado ao pino de 5V do Arduino;
- O pino de saída analógica do sensor deve ser conectado a entrada analógica A0 do Arduino;
- O pino de saída digital do sensor deve ser ligado ao pino digital 8 do Arduino.
ELABORANDO O CÓDIGO
Após a montagem do circuito, vamos programação do Sketch no Arduino IDE. Nesse projeto, vamos exibir as leituras analógicas e digitais do sensor de linha / segue faixa TCRT5000 no monitor serial.
Além disso, vamos realizar a detecção de uma linha preta. Quando o sensor identificar a linha seu estado será igual a 1 (nível lógico alto) e o LED indicativo de saída será desligado.
Vamos entender a lógica de programação deste projeto a partir dos seguintes passos:
1. Declarar as variáveis
No início do código, definimos as variáveis pinDigital e pinAnalogico para representar a porta digital 8 e a porta analógica A0 do Arduino.
Foram declaradas as variáveis valorDigital e valorAnalogico para armazenar os valores de leitura digital e analógica, respectivamente.
2. Inicializar a comunicação serial e configurar as portas
Na função setup(), a comunicação serial foi inicializada por meio da instrução: Serial.begin(9600);.
Em seguida, definimos pinDigital e pinAnalogico como pinos de entrada (INPUT).
3. Fazer a leitura digital e analógica do sensor
Iniciamos a função loop() realizando a leitura digital e analógica do sensor e imprimindo-as no monitor serial.
4. Realizar a detecção da linha
Após as leituras, vamos usar a estrutura condicional if-else para verificar se o sensor está detectando a linha preta ou não. Se o resultado da leitura digital for igual a 1 significa que o sensor detectou a linha.
Ao final, o Sketch deste projeto ficará da seguinte maneira:
/* - SENSOR DE LINHA/SEGUE FAIXA TCRT5000 COM ARDUINO - ==================================================== ==== BLOG DA ROBOTICA - www.blogdarobotica.com ===== ==================================================== Autor: Jonas Souza 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 pinDigital = 8; //Define que o pino digital do sensor deve está conectado a entrada digital 8 do Arduino int pinAnalogico = A0; //Define que o pino analogico do sensor deve está conectado a entrada analogica A0 do Arduino int valorDigital; //Variável responsável por armazenar o valor de leitura digital do sensor int valorAnalogico; //Variável responsável porarmazenar o valor de leitura analogico do sensor void setup() { Serial.begin(9600); //Inicializa a comunicação serial pinMode(pinDigital, INPUT); //Define que o pino digital do sensor como entrada pinMode(pinAnalogico, INPUT); //Define que o pino analogico do sensor como entrada } void loop() { valorDigital = digitalRead(pinDigital); //Realiza a leitura digital e armazena o valor na variavel valorDigital valorAnalogico = analogRead(pinAnalogico); //Realiza a leitura analógica e armazena o valor na variavel valorAnalogico Serial.print("Leitura Digital: "); //Mostra o texto no monitor serial Serial.println(valorDigital); //Mostra o valor digital no monitor serial Serial.print("Leitura Analogica: "); //Mostra o texto no monitor serial Serial.println(valorAnalogico); //Exibe o valor analógico lido no monitor serial Serial.println(); //Salta uma linha if (valorDigital == 0) { //Se o valor digital do sensor for igual a 0 significa que a linha não foi detectada Serial.println("Linha não detectada"); } else if (valorDigital == 1) { //Se o valor digital do sensor for igual a 1 significa que a linha foi detectada Serial.println("Linha detectada"); } delay(500); Serial.println("----------------------------------------------"); }
Os valores das leituras digitais e analógicos podem ser observados no monitor serial da Arduino IDE, bem como o retorno da detecção de linha, conforme a Figura 5. Observe que a leitura a analógica assumem valores altos quando a linha é detectada.
Espero ter ajudado,
Obrigado a todos e em caso de dúvidas deixe seu comentário abaixo!
Att. Jonas Souza
Graduando em Engenharia Elétrica.