blog-eletrogate-logo-desktop blog-eletrogate-logo-mobile
  • Categorias
    • Voltar
    • INICIANTES
    • INTERMEDIÁRIOS
    • AVANÇADOS
    • divide
    • Automação Residencial
    • Componentes Eletrônicos
    • Impressão 3D
    • IoT
    • Modelagem 3D
    • Módulos Wifi
    • Por trás da tecnologia
    • Projetos
    • Raspberry Pi
    • Robótica
    • Sensores
    • Shields
    • Sistemas Operacionais
    • Tipos de Arduino
    • Tutoriais
  • Apostilas
  • Quem Somos
  • Seja um redator
  • Trabalhe Conosco
    • Categorias
      • Voltar
      • INICIANTES
      • INTERMEDIÁRIOS
      • AVANÇADOS
      • divide
      • Automação Residencial
      • Componentes Eletrônicos
      • Impressão 3D
      • IoT
      • Modelagem 3D
      • Módulos Wifi
      • Por trás da tecnologia
      • Projetos
      • Raspberry Pi
      • Robótica
      • Sensores
      • Shields
      • Sistemas Operacionais
      • Tipos de Arduino
      • Tutoriais
    • Apostilas
    • Quem Somos
    • Seja um redator
    • Trabalhe Conosco
Loja Eletrogate
voltar
  • Introdução
  • Aplicações
  • Descrição do Projeto
  • Botando pra rodar!
  • Considerações finais
  • Sobre o Autor
Componentes Eletronicos

Sensor óptico TCRT5000 com Arduino

Eletrogate 19 de junho de 2017Atualizado em: 15 abr 20229 min

Introdução

Neste post vamos mostrar como utilizar o sensor óptico reflexivo TCRT5000 com o Arduino. Este sensor é barato e possui boas especificações para ser usado em pequenos projetos de robótica e automação. Vamos explicar como ele funciona, as suas principais aplicações e desenvolver um projeto com Arduino para mostrar como ler os sinais do sensor óptico com um Arduino.

O sensor óptico reflexivo TCRT5000 é um dos mais populares para utilização em projetos com Arduino. O sensor é fabricado pela Vishay, uma tradicional fabricante de componentes eletrônicos. Recomendamos fortemente a leitura do datasheet do sensor aqui.

Trata-se de um sensor reflexivo que possui embutido um emissor infravermelho e um fototransistor. O emissor é um led infravermelho que emite um sinal nessa faixa do espectro. Já o fototransistor é o receptor que faz a leitura do sinal refletido. Ou seja, o led emite um feixe infravermelho que pode ou não ser refletido por um objeto. Caso o feixe seja refletido, o fototransistor identifica o sinal refletido e gera um pulso em sua saída.

Na figura 1 temos uma ilustração do sensor e o seu circuito eletrônico básico:

Figura 1: Ilustração de um TCRT5000 e do seu circuito básico. Fonte: Datasheet.

No circuito da figura 1, vemos o led infravermelho entre os terminais A e B e o fototransistor entre os terminais C e E. Na imagem do sensor é muito visível os dois componentes.

A distância máxima de detecção não é grande, ficando em torno de 25mm (dois centímetros e meio), o que pode limitar um pouco a sua aplicação. O fototransistor vem com um filtro de luz ambiente, o que maximiza a identificação do feixe infravermelho refletido.

A Vishay disponibiliza duas versões deste sensor: O TCRT5000 e o TCRT5000L. A única diferença é que o TCRT5000L possui os terminais mais longos. A corrente de saída para as duas versões não ultrapassa 1mA.

Na figura 2 temos o circuito de aplicação e um desenho mostrando como o sensor é utilizado para identificar objetos reflexivos.

Figura 2: Circuito de aplicação e ilustração de utilização prática do TCRT5000. Fonte: Datasheet.


Aplicações

As principais aplicações do sensor óptico reflexivo TCRT5000 são:

  • Elemento sensor de encoders ópticos;
  • Detecção de materiais reflexivos como peças de metal e papel;
  • Identificação de obstáculos para robôs e peças móveis (desde que dentro da distância máxima);
  • Contagem de elementos reflexivos em esteira transportadora;
  • Propósito geral: Qualquer aplicação em que seja necessário identificar um objeto dentro da distância de operação do sensor;

Agora que conhecemos como funciona o sensor, vamos aplicá-lo em um projeto utilizando o Arduino.


Descrição do Projeto

Para aplicarmos o TCRT5000 com o arduino, vamos utilizá-lo para identificar e contar o objetos com superfície reflexiva. Vamos conectar o sensor ao arduino. Sempre que um objeto for identificado, vamos acender um led vermelho para mostrar que um objeto foi percebido pelo sensor e vamos mostrar também o tempo decorrido entre cada leitura do objeto. Esse tempo será usado para calcular a velocidade de uma bicicleta. Bicicleta? Sim! A ideia é instalar o sensor reflexivo e um elemento reflexivo na roda da bicicleta, de forma que a cada volta que a roda fizer o sensor será ativado uma vez.

Vamos para a montagem de hardware!

Aspectos de Hardware

Esta montagem é simples e não tem muito segredo para interfacear o TCRT5000 com Arduino. Primeiro, vamos à nossa lista de componentes.

Lista de componentes

  • Arduino UNO R3 + cabo USB;
  • Protoboard;
  • Sensor TCRT5000;
  • Led vermelho 5mm;
  • Resistor de 330;
  • Resistor de 10K;
  • Jumpers para ligação no protoboard;

O resistor de 330R será ligado no diodo infravermelho e o de 10K será ligado no fototransistor. Esses são os valores mais comumente usados, no entanto, você pode usar outros resistores da mesma ordem de grandeza.

Ligações de hardware

Na figura 3 temos como o circuito foi montado no protoboard. O coletor do fototransistor é ligado ao resistor de 10K e em uma entrada digital do Arduino. Essa entrada é que vamos usar para identificar se o sensor percebeu algum objeto ou não. O emissor do fototransistor é ligado em GND.

O terminal positivo do led infravermelho é ligado por meio de um resistor de 330R ao VCC e o seu terminal negativo é ligado em GND. Por fim, ligamos um led em uma saída digital do arduino.

Figura 3: Montagem de hardware. Interface do arduino com sensor reflexivo TCRT5000.

Agora precisamos escrever nosso programa para fazer a leitura do sensor, contar o número de objetos identificados e acionar o led quando um objeto entrar no raio de leitura do sensor.

Aspectos de software

Na figura 4 temos a função void setup(). Ela inicializamos o pino que vamos usar para acionar o led como saída digital e um outro pino digital como entrada para podermos ler o sinal no coletor do fototransistor.  Inicializamos também a porta serial para podermos mostrar na tela do monitor serial o tempo decorrido entre cada vez que um objeto é identificado.

No nosso caso, a variável led corresponde ao pino 10 e a variável saidaSensor corresponde ao pino 7,conforme a montagem da figura 3.

#define led 10
#define saidaSensor 7

int Time;
int lasTime;
int difference;
int IsUpdated;

void setup(){
   Time = lasTime = difference = 0;
   pinMode(led, OUTPUT); // Pino para ativar o led
   pinMode(saidaSensor, INPUT); // Pino para ler o sinal no coletor do fototransistor
   Serial.begin(9600); // Inicializa a porta serial com baud rate de 9600
}

 

Na função void loop tempo nós fazemos a leitura do sensor utilizando a função digitalReal(). Logo após a leitura nós avaliamos em um if se o sinal lido é baixo ou alto. Se o sinal for baixo, isto significa que o fototransistor está em fechado, o que faz com que o pino conectado ao coletor fique conectado ao GND. Ou seja, um objeto está refletindo o sinal infravermelho para o fototransistor. Dentro do if nós usamos a função milis() para saber o tempo naquele exato momento. Esse valor é usado para calcular o tempo decorrido entre uma detecção e outra. Ainda dentro do if, nós ativamos o led conectado ao arduino,para mostrar que houve uma detecção, e chamamos calcSpeed(), que foi implementada para calcular a velocidade da bicicleta (ou qualquer veículo sobre rodas).

Caso o sinal seja HIGH, significa que o fototransistor está aberto e nenhum objetivo passou no raio de leitura do TCRT5000, assim, não fazemos nada, apenas atribuímos o último valor de tempo lido com a função milis() na variável lastTime. Esta variável armazena o momento da última detecção de um objeto, para que na próxima vez que um novo objeto for identificado, o tempo decorrido entre cada detecção seja calculado. A variável IsUpdated é usada para saber a primeira vez que o sensor foi ativado.

void loop(){
  bool leituraSensor = digitalRead(saidaSensor);

  if (leituraSensor == 0){
    Time = millis();
    difference = (Time - lastTime); // Calcula o tempo em segundos
    IsUpdated++;
    digitalWrite(led, HIGH);
    calcSpeed(difference, IsUpdated);
  }else{
    IsUpdated = 0;
    digitalWrite(led, LOW);
    lastTime = Time;
  }
  delay(10);
}

 

Por fim, na figura 6 temos a função calcSpeed, na qual utilizamos o tempo entre cada ativação do sensor para calcular a velocidade percorrida. Repare que usamos um buffer de N posições que armazena N velocidades. Caso N seja 10, por exemplo, nó vamos fazer 10 leituras de com o sensor reflexivo. Ao fim das 10 leituras, nós calculamos a velocidade média e mostramos na porta serial.

Considerando que o sensor está afixado na roda, temos que utilizar a seguinte relação:

Velocidade = (2* *raio) / Tempo

Para obter a velocidade em metros por segundo (m/s), o raio da roda deve estar em metros e o tempo entre uma ativação e outra do sensor deve estar em segundos. Lembre que a função milis() retorna o tempo em milissegundos, o que faz com que seja necessário fazer a conversão. O cálculo é feito para 10 leituras. Ao final, somamos todas as leituras e dividimos por 10 para obter o valor médio das dez últimas voltas que roda deu.

void calcSpeed(unsigned long Time, int IsUpdated){
  int i;
  float vel;
  if (IsUpdated == 1){
    Serial.println("Tempo");
    Serial.println(Time);
    SpeedVector[counter++] = (Raio*2*PI/Time)*1000;
    if (counter == N){
      counter = 0;
      for (i=0; i<N; i++){
        vel =+ SpeedVector[i];
      }
      Serial.println("Velocidade(m/s) =");
      Serial.println(vel/N ,4);
    }
  }
}

 


Botando pra rodar!

Agora basta carregarmos o programa no Arduino e com o circuito montado colocar para roda. Veja abaixo os valores que obtivemos no monitor serial.

Figura 7:  Velocidades médias calculadas a cada 10 leituras do sensor TCRT5000.

Figura 7:  Velocidades médias calculadas a cada 10 leituras do sensor TCRT5000.


Considerações finais

Calculando o tempo entre uma detecção pode ser usado para calcular a velocidade de rotação de uma roda (uma roda de bicicleta ou eixo de motor por exemplo), além de outras aplicações. Sabendo montar o TCRT5000 de forma correta e como ler o seu sinal de saída (Coletor do fototransistor) possibilita a você implementar qualquer uma das aplicações para as quais o sensor foi feito.

Aqui neste exemplo o velocidade foi apenas mostrada no monitor serial. Serial legal se você tivesse um display LCD bem no guidão da bicicleta para mostrar a velocidade. Esse é o desafio que fica para você. Complementar esse firmware enviando os dados para um display LCD e não para o monitor serial.

Quer saber mais sobre Arduino ?

|Arduino | Case Arduino | Placas Arduino | Kit Arduino | Sensores Arduino

Confira nosso post sobre display LCD e aprenda a fazer! Boa Sorte!


Sobre o Autor


Vitor Vidal

Engenheiro eletricista, mestrando em eng. elétrica e apaixonado por eletrônica, literatura, tecnologia e ciência. Divide o tempo entre pesquisas na área de sistemas de controle, desenvolvimento de projetos eletrônicos e sua estante de livros.


Eletrogate

19 de junho de 2017 Atualizado em: 15 abr 2022

A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica em geral.

Módulos Wifi

Placa de Desenvolvimento Arduino Uno WiFi

Eletrogate24 de maio de 2022

Neste post, você conhecerá uma placa que une o melhor das baseadas em ESP8266 com o melhor da família de placas baseadas no ATmega328p: a Uno WiFi.

Módulos Wifi

Placa de Desenvolvimento Arduino Uno WiFi

Eletrogate24 de maio de 2022

Neste post, você conhecerá uma placa que une o melhor das baseadas em ESP8266 com o melhor da família de placas baseadas no ATmega328p: a Uno WiFi.

Projetos

Radar/Sonar Ultrassônico para seus Projetos

Eletrogate19 de maio de 2022

Neste projeto, iremos construir um Radar (‘Radio Detection And Ranging’) ultrassônico com a Arduino e o software Processing. Iremos usar o conhecimento em programação com o sensor ultrassônico no Arduino obtido no post “Sensor Ultrassônico HC-SR04 com Arduino”.

Projetos

Radar/Sonar Ultrassônico para seus Projetos

Eletrogate19 de maio de 2022

Neste projeto, iremos construir um Radar (‘Radio Detection And Ranging’) ultrassônico com a Arduino e o software Processing. Iremos usar o conhecimento em programação com o sensor ultrassônico no Arduino obtido no post “Sensor Ultrassônico HC-SR04 com Arduino”.

Projetos

Levitação Ultrassônica com Arduino

Eletrogate17 de maio de 2022

Não é nenhuma varinha mágica ou encantamento como “Wingardium Leviosa” que você vai precisar para esse projeto. Com um Arduino, um driver de motor ponte H e um sensor de distância ultrassônico HC-SR04 você consegue criar uma máquina capaz de fazer objetos levitarem.

Projetos

Levitação Ultrassônica com Arduino

Eletrogate17 de maio de 2022

Não é nenhuma varinha mágica ou encantamento como “Wingardium Leviosa” que você vai precisar para esse projeto. Com um Arduino, um driver de motor ponte H e um sensor de distância ultrassônico HC-SR04 você consegue criar uma máquina capaz de fazer objetos levitarem.

Modelagem 3D

Conheça o Tinkercad

Eletrogate12 de maio de 2022

Se você já pensou em criar um projeto eletrônico, mas não tinha os componentes necessários e queria fazer um teste antes, este post foi feito pra você! Neste post, iremos conhecer a plataforma Tinkercad. Através dela, você poderá testar projetos, circuitos eletrônicos, códigos, criar designs 3D e muito mais.

Modelagem 3D

Conheça o Tinkercad

Eletrogate12 de maio de 2022

Se você já pensou em criar um projeto eletrônico, mas não tinha os componentes necessários e queria fazer um teste antes, este post foi feito pra você! Neste post, iremos conhecer a plataforma Tinkercad. Através dela, você poderá testar projetos, circuitos eletrônicos, códigos, criar designs 3D e muito mais.

Eletrogate Robô

Cadastre-se e fique por
dentro de novidades!

blog-eletrogate-logo-footer

Rua Rio de Janeiro, 441 - Sala 1301
Centro - Belo Horizonte/MG
CEP 30160-041
*Não temos atendimento físico

ANWAR SLEIMAN HACHOUCHE - ME
CNPJ: 18.917.521/0001-73

Atendimento

(31) 3142-3800

contato@eletrogate.com


Seg a Sex - das 8h às 17h

Institucional

  • Apostilas
  • Quem Somos
  • Privacidade
  • Seja um Redator
  • Trabalhe Conosco

Nos acompanhe

Facebook Instagram Youtube

© ELETROGATE 2022 - Todos os direitos reservados. Termos de uso e Política de privacidade.