10 julho 2014

Contador com sensor de proximidade infravermelho

A maioria dos sensores IR que eu testei tem um alcance limitado, de apenas alguns centímetros. São ideais para pequenos projetos, maquetes e simulações.

Um sensor um pouco mais, digamos assim, profissional, é este sensor de proximidade infravermelho, que funciona da mesma maneira que os outros sensores IR mas tem algumas características que facilitam a montagem do seu projeto :

Sensor de proximidade infravermelho

Esse sensor funciona basicamente como todos os outros sensores IR : existe um led emissor IR e um receptor IR, tudo no mesmo componente. As diferenças estão na montagem do sensor e na distância de detecção, que pode variar de 3 à 80 cm, ajustáveis por um parafuso na parte de trás do sensor :


Sensor de proximidade IR - Ajuste


Girando o parafuso no sentido horário ou anti-horário, você aumenta ou diminui, respectivamente, a sensibilidade do sensor. O componente tem 45mm de comprimento e um diâmetro de 17mm, e vem com duas porcas que facilitam a montagem nos mais variados tipos de suporte.

Sensor IR - Suporte

A cabo de ligação do sensor tem 3 pinos, sendo o pino vermelho o Vcc (alimentação de 5 volts), amarelo o pino de sinal, e o preto, o GND. A leitura pode ser feita por meio de uma porta digital ou analógica do Arduino, dependendo do seu projeto.

O funcionamento, como eu comentei, é igual ao de outros sensores IR : o led emite luz infravermelha, que dependendo da superfície é refletida e volta para ser detectada pelo fototransistor, enviando um sinal de 0,3 à 1,5v em nível baixo, e de 2,3 à 5v em nível alto, ao pino de sinal.

Eu utilizei esse sensor para montar um contador que registra a passagem de caixas em uma esteira. A cada 10 caixas, é emitido um sinal sonoro para que o operador do equipamento tome algum tipo de ação :


Circuito Arduino Uno R3 - Sensor de proximidade IR




Os dados são enviados para o serial monitor, apenas para monitoramento do contador, mas um display LCD ou 7 segmentos pode ser facilmente adaptado ao projeto.

O comando while(digitalRead(pinosensor) != 1) evita que o contador seja incrementado caso um objeto pare em frente ao sensor :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// Programa : Contador com sensor de proximidade IR
// Autor : Arduino e Cia  

int contador = 0;
int pinosensor = 5;
int pinobuzzer = 7;
int leitura; //Armazena o valor lido pelo sensor  
   
void setup() 
{  
  //Define o pino do sensor como entrada, e o do buzzer como saida
  pinMode(pinosensor, INPUT); 
  pinMode(pinobuzzer, OUTPUT);
  Serial.begin(9600); 
}  
   
void loop() 
{  
  //Le as informações do pino do sensor  
  leitura = digitalRead(pinosensor);   
  if (leitura != 1) //Verifica se o objeto foi detectado  
  {  
    contador = contador++; //Incrementa o valor do contador  
    Serial.print("Contador : ");
    Serial.println(contador);
    //Se o contador atingir 10, aciona o buzzer
    if (contador == 10)
    {
      tone(pinobuzzer,262,500);
      contador = 0;
    }
    //Loop caso o objeto pare na frente do sensor
    while(digitalRead(pinosensor) != 1)  
    {  
      //Comando
    }  
  }   
} 

Abaixo, um vídeo demonstrativo do sensor com um contador até 5 :


35 comentários:

  1. Beleza de post! mas... amigo, como ficaria o esquema e código como vc mesmo falou, usando um display LCD ou 7 segmentos, você teria a bondade de disponibilizá-lo? tenho dificuldades de adaptar ao código!
    Muito obrigado

    ResponderExcluir
    Respostas
    1. Boa tarde,

      Eu ainda não tenho esse código. Talvez eu faça algum post sobre isso futuramente.

      Abraço !

      Excluir
    2. amigo como posso montar esse sensor para usar como fim de curso para um motor de passo? seria 2 sensores um de cada lado do fuso de esferas...

      Excluir
  2. Onde posso encontrar esse sensor para comprar ?

    ResponderExcluir
    Respostas
    1. Boa tarde Augusto,

      O sensor desse post, especificamente, eu adquiri nesse link :

      http://www.filipeflop.com/pd-6b910-sensor-infravermelho.html?ct=&p=1&s=1

      Abraço.

      Excluir
  3. Esse post me ajudou muito, porém gostaria de saber como ficaria se um display de 7 segmentos fosse integrado ?

    ResponderExcluir
    Respostas
    1. Boa tarde Guilherme,

      Obrigado. Por favor dê uma olhada nesse post, em que eu uso o sensor TCRT5000. Você pode utilizar o mesmo princípio, utilizando o circuito com o sensor infravermelho :

      http://www.arduinoecia.com.br/2013/10/contador-display-7-segmentos-3-digitos.html

      Abraço !

      Excluir
    2. Eu estou utilizando um sensor infravermelho de proximidade, li um artigo aqui mesmo no site e consegui ligar além de um buzzer, uns leds, porém eu gostaria de saber se com o sensor de proximidade o programa e a ligação ficaria parecido ou igual ao TCRT5000.
      o artigo a qual eu me referi é esse: http://www.arduinoecia.com.br/2014/07/contador-sensor-de-proximidade-ir.html

      Excluir
    3. Bom dia Guilherme,

      Sim, você pode retirar o TCRT5000 e o resistor e ligar o sensor de proximidade no lugar. Como ambos funcionam praticamente como uma "chave", você terá o mesmo resultado.

      Abraço !

      Excluir
    4. Boa tarde, teria algum sensor por meio de um imã ou algo parecido estou tentando montar um contador para anexar em uma catraca obrigado

      Excluir
    5. Oi Max,

      Tente o sensor hall: http://www.arduinoecia.com.br/2014/07/sensor-hall-ky-003-arduino.html

      Abraço!

      Excluir
  4. Ola amigo tudo bem? adorei o projeto, e parecido com que estou tentando fazer so preciso de uma ajuda por favor ,o que esto dentando fazer, e que quando incremento um numero qualquer no botão,ao chegar nesse numero ele zera o contador e da um apito sonoro.exemplo eu incrementei o numero 550 ao chegar nessa contagem ele zera e da um apito sonoro por favor me ajudem fico muito agradecido.

    ResponderExcluir
    Respostas
    1. Boa tarde Angelo,

      Esse programa faz exatamente isso, quando o contador chega à 10, ele aciona o buzzer e zera o contador.

      Abraço !

      Excluir
  5. Você tem alguma ideia de como fazer este mesmo esquema, porém saber se objeto está vindo da direita para esquerda, ou esquerda para direita?
    Com uma precisão maior e com uma distância de até 1m.
    Obrigado.

    ResponderExcluir
    Respostas
    1. Boa tarde,

      É possível fazer, mas você vai precisar de 2 sensores, depois todo o trabalho será feito pelo programa.

      Abraço !

      Excluir
    2. Precisa de fonte externa para ligar dos sensores ou pode ligar diretamente nos 5V do arduino ??

      Excluir
    3. Boa noite,

      Pode ligar direto.

      Abraço !

      Excluir
  6. Comprei um sensor destes mas as cores dos fios são preto, azul e, marron, imagino que o fio do sinal seja o marron e o Vcc seja o azul não tenho serteza mas copiei o seu condigo e o meu sensor não detecta nada o led indicador fica acesso o tempo todo . Seria defeito no sensor ?

    ResponderExcluir
  7. Por que voce não precisou usar um resitor de 10K no pino do sinal ?

    ResponderExcluir
    Respostas
    1. Boa noite,

      Não foi necessário. Creio que já esteja embutido no circuito do sensor.

      Abraço !

      Excluir
  8. Boa noite,
    Estou tentando utilizar esta programação em conjunto com um acionamento de um Servo Motor. Seria possível utilizar o mesmo sensor para fazer o acionamento do Servo e também utiliza-lo como contador? Ou seja, toda vez que o Sensor mudar de nível lógico de 0 para 1, este acionaria o servo motor o movimentando para 90º e quando o mesmo volta-se para o estado 0 o servo retornaria para a posição 0º e em conjunto com isto gostaria que um contador fosse implementado, sendo quando o servo movimenta-se para a posição 90º o contador incrementaria +1. Isso seria possível?

    ResponderExcluir
    Respostas
    1. Bom dia,

      Perfeitamente possível, você só tem que mexer na programação.

      Abraço!

      Excluir
  9. Boa noite pessoal. Estou fazendo uma lógica de um contador de vagas de estacionamento só vai contar os carros.
    Estou usando um sensor ultrasonico já fiz a lógica porém estou tendo problema
    Quando para na frente do sensor o programa vai contando as vagas sabe qual comando posso usar para não ficar fazendo isso, desde já agradeço

    ResponderExcluir
    Respostas
    1. OI Juarez,

      Por favor dê uma olhada no meu post sobre contador de visitantes. Lá tem o que você precisa para resolver esse problema.

      Abraço!

      Excluir
  10. Boa tarde,
    Estou a utilizar um arduino com um sensor de passagem q também conta objetos, no entanto eu necessito de fazer com que o arduino faça o reset automaticamente após contar os 5 objetos. (O objetivo é fazer 2 passadeiras, quando o sensor conta 5 objetos uma das passadeiras para e a outra trabalha). Consegue-me ajudar?
    Abraço.

    ResponderExcluir
    Respostas
    1. Boa noite,

      Consigo sim, por favor entre em contato utilizando o formulário de contato no lado direito da página. Combinamos por email.

      Abraço!

      Excluir
    2. Olá, gostaria de saber se esse codigo funciona para fazer contagem com um botão de contato que inclusive fiz aqui mas no monitor serial não incrementa a contagem. Como arrumo isso ? Desde já agradeço.

      Excluir
  11. Olá! Este sensor poderia ser usado para detectar velocidade? Tipo, em uma roda, ou disco graduado (encoder). Será que tem leitura/resposta rápida o suficiente?

    ResponderExcluir
    Respostas
    1. Oi Ricardo,

      Não tenho informações sobre o tempo de resposta desse sensor, mas creio que sirva. Só testando mesmo. :)

      Abraço!

      Excluir
  12. Boa tarde amigo, estou fazendo uma Esteira que transportará caixa, estou utilizando um motor de passo juntamente com ponte h, comprei esse sensor para fin de curso, ou seja quando a caixa passar pela frente do sensor isso fará a esteira parar por um momento até que seja liberado o sinal (caixa seja retirada da frente do sensor) mas não estou conseguindo fazer isso fiz a ligação como mostra no vídeo mas nada. e comando do arduino não sei muito que comando utilizar para ativar e desativar o sensor.
    Poderia me ajudar?
    Obrigado

    ResponderExcluir
  13. Boa tarde amigo, estou fazendo uma Esteira que transportará caixa, estou utilizando um motor de passo juntamente com ponte h, comprei esse sensor para fin de curso, ou seja quando a caixa passar pela frente do sensor isso fará a esteira parar por um momento até que seja liberado o sinal (caixa seja retirada da frente do sensor) mas não estou conseguindo fazer isso fiz a ligação como mostra no vídeo mas nada. e comando do arduino não sei muito que comando utilizar para ativar e desativar o sensor.
    Poderia me ajudar?
    Obrigado

    ResponderExcluir
  14. no lugar do buzzer,posso colocar relé 5V.

    ResponderExcluir
    Respostas
    1. Oi Eduardo,

      Pode sim, eu recomendo um módulo relé, para simplificar a ligação.

      Abraço!

      Excluir
  15. Bom dia.
    Estou pensando em fazer um projeto de um contador com cronômetro e com suas parciais, será que tem como fazer?

    ResponderExcluir
  16. fiz o esquema acima mas quando passa pelo sensor ele nao conta registra apenas o valor 0 alguem pode ajudar ?

    ResponderExcluir