Avançar para o conteúdo

Sensor seguidor de linha HW-006 (TCRT5000)

Dando continuidade neste artigo, hoje falaremos mais sobre o sensor seguidor de linha HW-006. É um sensor optico que funciona por infravermelho. É muito usado para fazer robôs que seguem linhas demarcadas na superfície. O módulo é baseado no sensor TCRT5000, cujo datasheet está aqui.

Módulo HW-006 baseado no sensor TCRT5000
Módulo HW-006 baseado no sensor TCRT5000

O princípio de operação é simples, um feixe de luz infravermelha é emitido, ricocheteia em um objeto e (mais ou menos dele) é apresentado no detector (fotodiodo ou fototransistor). Há um chip inversor schmitt trigger 74HC14D na placa HW-006, responsável por “limpar” o sinal. Ele então apresenta um zero claro (sem detecção) ou um (detecção) para o pino OUT da placa de circuito.

De acordo com esta fonte, ele funciona tanto em 3,3 V quanto em 5 V, consumindo cerca de 20 mA. Sua distância de detecção é de no máximo 10 mm.

Testando o módulo

Não implementaremos um veículo de teste, em vez disso, criarei apenas uma faixa de fita isolante preta sobre meu tapete verde. O microcontrolador usado será minha placa de desenvolvimento ESP32-C6, como visto aqui. O que queremos é determinar se o sensor atuará (disparará) na mudança de superfície ou não.

Esquema de ligação da placa ESP32-C6 com o sensor HW-006
Esquema de ligação da placa ESP32-C6 com o sensor HW-006
sensor seguidor de linha HW-006 TCRT5000
HW-006 em ESP32-C6 em protoboard

Conectarei o sensor HW-006 no pino D5 do ESP32-C6. Seu pino D4 tem o WS2812b Neopixel. Iremos iluminar o WS2812b em azul com detecção de linha e vermelho sem detecção de linha. O código completo é visto abaixo. Observe que você tem que instalar a biblioteca Adafruit Neopixel como visto aqui.

#include <Adafruit_NeoPixel.h>
#define D_in D4
#define ledamount 1
Adafruit_NeoPixel pixels(ledamount, D_in);

long currenttime;
long oldtime;

void setup() {
  // put your setup code here, to run once:
  pinMode(D5, INPUT);
  pixels.begin();
}

void loop() {
  // put your main code here, to run repeatedly:
  currenttime= micros();
  if(currenttime - oldtime > 20000){ //only enters the program every 20ms
    oldtime= micros();
    if(digitalRead(D5)){
      pixels.clear();
      pixels.setPixelColor(0, pixels.Color(255, 0, 0)); // detection (color), lights red
      pixels.show();
    }else{
      pixels.clear();
      pixels.setPixelColor(0, pixels.Color(0, 0, 255)); // no detection (black), lights blue
      pixels.show(); 
    }
  }
}

Resultados e palavras finais

No vídeo acima, você pode ver o esboço trabalhando com o hardware. Sobre a linha (e longe da mesa), o neopixel fica azul. Fora da trilha (e perto da mesa), o neopixel fica vermelho. Você pode ver claramente a detecção da linha acontecendo, a diferença entre as cores acionando o sensor.

Se você quiser acompanhar e comprar alguns desses sensores, use meu link de afiliado aqui. Até a próxima.

1 comentário em “Sensor seguidor de linha HW-006 (TCRT5000)”

  1. Pingback: Giroscópio GY-50 L3G4200D com ESP32 - Fritzenlab eletrônica

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *