Há algumas semanas inauguramos uma série de posts sobre sensores, e o primeiro que abordamos foi o sensor ultrassônico HC-SR04. Neste segundo post vamos falar de outro sensor bem legal, o sensor óptico reflexivo TCRT5000. Um sensor muito barato e que tem aplicações interessantes. Confira!!!
Este sensor é ótimo para identificar obstáculos a sua frente e possui várias aplicações na robótica. Já vimos ele utilizado para a construção de robôs seguidores de linhas e também em robôs de batalha sumo para evitar que o mesmo saia do campo de batalha. Em ambos casos o sensor óptico reflexivo é utilizado para detectar linhas de marcação que determinam ou o caminho a ser seguido pelo robô ou os limites do campo de batalha.
Como funciona o sensor óptico reflexivo TCRT5000
O TCRT5000 contém dois componentes que são presos num suprte plástico. O primeiro deles é um LED que emite um feixe de luz infravermelha numa frequência nao visível a olho nu. Você pode ver o LED infravermelho funcionando se utilizar uma câmera digital e isto é bem legal. Pegue seu celular, ligue a câmera e aponte para o LED, você verá ele acendendo na tela do celular. Se você ainda não tem o sensor em casa para testar, voce pode fazer isso com o controle remoto de sua TV.
O segundo componente é um fototransistor que tem a função de capturar o feixe de luz emitido pelo LED infravermelho. Seu funcionamento é bem semelhante ao de um transistor, possui um coletor, um emissor, e a base é que, no caso, é ativada ao receber um feixe de luz infravermelha. Assim, os dois componentes funcionam em conjunto. O LED emite um feixe de luz infravermelha que é refletida pelo objetivo que estiver a frente do sensor e que é, por sua vez, detectada pelo fototransistor. Vale lembrar que a cor e o material do objeto pode interferir no funcionamento do sensor. Existem materiais que refletem menos luz do que outros. Um exemplo disso são os objetos de cor preta que não são bons refletores, especialmente se sua superfície não for bem lisa.
O sensor possui quatro pinos, sendo dois do LED e 2 do fototransistor. São eles:
- Anodo do led (A)
- Cátodo do led (C)
- Coletor do fototransistor (C)
- Emissor do fototransistor (E)
O funcionamento é TCRT5000 é o seguinte:
- O LED é acionado ao aplicarmos uma tensão suficiente nele. Ao fazermos isto o LED emite o feixe de luz infravermelha.
- O fototransistor, como já foi dito, tem sua base ativada quando ele recebe um feixe de luz infravermelha. Assim, quando ele recebe a luz do LED refletida por algum objeto, o transistor conduz corrente entre o coletor e o emissor e isto é o que deve ser observado pelo seu circuito.
Agora vamos ver como utilizar este sensor com o Arduino.
Utilizando o TCRT5000 com o Arduino
Para este projeto você precisará dos seguintes componentes:
- 1 x Sensor Óptico Reflexivo TCRT5000
- 1 x Arduino (UNO R3 ou compatível)
- 1 x Resistor de 10K ohms
- 1 x Resistor de 330 ohms
- 1 x Protoboard
- Jumpers para as conexões
- Cabo USB para carregar o programa para o Arduino (e alimentar o Arduino)
O diagrama de conexões fica assim:
Como você pode ver, trata-se de um circuito bem simples. Basicamente temos:
- Um LED ligado ao pino 13 – saída digital – do Arduino que acenderá quando o sensor detectar algum objeto.
- O LED infravermelho do sensor ligado diretamente aos pinos 5V e GND do Arduino de forma que ele fique sempre aceso.
- E o fototransistor do sensor com seu coletor ligado ao pino 8 – entrada digital – do Arduino e com seu emissor ligado ao GND do Arduino. Observe o resistor de “pull-up” entre o coletor do fototransistor e o pino 5V do Arduino.
O sketch do Arduino fica assim:
//variáveis int ledPin = 13; //LED comum para ser aceso ao detectarmos um objeto int sensorPin = 8; //pino para receber o sinal do fototransistor int estado; //variável utilizada armazenar o estado do sensor //configurando os pinos (executado apenas uma vez) void setup(){ pinMode(ledPin, OUTPUT); //definindo o pino do LED como saída pinMode(sensorPin,INPUT); //definindo o pino do sensor como entrada } //laço principal (executado infinitamente) void loop() { estado = digitalRead(sensorPin); //lê o estado do sensor (alto = inativo, baixo = ativo) //verificando se o sensor detectou algum objeto ou não if (estado == HIGH) { //nenhum objeto detectado digitalWrite(ledPin,LOW); //apaga o LED indicador de presença de objeto } else { //objeto detectado digitalWrite(ledPin,HIGH); //acendo o LED indicador de presença de objeto } }
Como podemos ver, é um sketch bem simples. Basicamente ficamos medindo o estado do sensor através do pino 8 (sensorPin) dentro do laço principal. Quando o fototransistor for ativado por um feixe de luz infravermelha refletida por algum objeto, ele irá conduzir e então o pino 8 que estava em ALTO devido ao resistor de “pull-up” ficará em BAIXO. Se isto acontecer nosso sketch irá acender o LED indicador de presença de objeto escrevendo ALTO no pino 13 (ledPin). Assim, como o circuito fica fazendo isto o tempo todo, ao aproximarmos um objeto do sensor o LED acenderá e ao afastá-lo ele voltara a ficar apagado.
Com um pouco de criatividade é possível usar um sensor destes, ou vários deles, para montar aplicações bem interessantes. E quando você fizer isto, não deixe de contar para nós.
Onde comprar?
Compre Arduino, componentes eletrônicos e ferramentas na FilipeFlop. Os preços são ótimos, a agilidade é matadora e as entregas são feitas para todo o Brasil. O Fazedores e a FilipeFlop estão juntos para fomentar a cultura maker no Brasil.
Olá. alguém saberia me dizer se um sensor óptico como este é capaz de reconhecer quantas voltas uma pequena engrenagem dá? gostaria de contar os giros daquela “catraquinha” do Hidrometro. com o objetivo de relacionar as voltas dela com o consumo ( quantidade de metros cúbicos que fluem pelo seu interior )
Ou se alguem teria outra ideia funcionar para ler os dados de um hidrômetro.
abraço!
Boa noite, como faço para usar dois sensores refletivos para acionar um servo motor. Se um sensor acionado servo para esquerda, se os dois sensores acionados, servo para direita.
Olá!
Parabéns pelo site!!
Olha, fiz exatamente como está no esquema, mas o led já inicia aceso e não importa se coloco algo na próximo do sensor ou se começo com o sensor com nada a sua frente, o led permanece aceso sempre…
Não sei o que pode estar errado…
Já desmontei tudo e refiz de novo e nada…
Alguém poderia ajudar?!
Aqui tá a mesma coisa, pelo que andei lendo em outro lugar tem que alterar o valor do resistor.
Ola, eu estou precisando fazer um circuito com o tcrt-5000 no proteus mais não estou encontrando ele tenho o proteus 8, você sabe como poderia montar ele??? Obrigada
Boa noite!
Cara, acho que a ligação ilustrada na imagem está errada.
Na ligação que você ilustrou, o pino de 5V está ligado diretamente no resistor e, “entre” os dois, mas no mesmo ponto, está ligado o pino 8 do arduino. Ou seja, o pino 8 está ligado diretamente aos 5V, pois estão no mesmo ponto.
Quando o fototransistor começar a conduzir, circulará uma corrente no resistor e teremos, pela lei de Ohm se não me engano, uma queda de tensão no resistor. Mas esta queda de tensão ocorrerá entre os ‘terminais’ do resistor, ou seja, o referencial cujo potencial irá cair é o que se encontra no que vem adiante do resistor (no caso, abaixo). Em outras palavras, a alteração de potencial ocorre no mesmo ponto do coletor do fototransistor, e não no mesmo ponto do pino de 5V, pois aí continuarão os mesmos 5V devido à circulação de corrente, que gera diferença de potencial nos pinos resistor.
Desta forma a entrada receberá constantemente 5V, independente do estado do sensor. Estou certo?
Espero ter ajudado e obrigado pela atenção.
Olá Francisco Lima, Bom dia!
Realmente o circuito desenhado está errado! Você tem toda razão.
A verdade é que eu comi bola na hora de desenhar o circuito. Se você observar
na foto do circuito, vai perceber que a ligação está correta.
O circuito já foi corrigido e fique sempre a vontade para ajudar-nos.
Agradeço muito a sua colaboração, ela foi de grande importância.
Show de bola, dica muito boa dessa integração da Arduino IDE e Sublime Text
só uma dúvida rápida…
Deu pra perceber q tu usasse o Subilme Text 2 como IDE de desenvolvimentod o Arduino. Adorei a idéia pq eu acho a IDE do Arduino uma porcaria do ponto de vista de editor de texto.
Queria saber como tu faz pra fazer o upload do código…ou tu só escreve por aí e faz o upload por lá?
abraços
Olá Frank, tudo joia?
Na realidade no artigo aquilo é apenas um plugin do WordPress que apresenta o código de uma maneira mais interessante. Mas na realidade eu uso mesmo o Sublime Text 2 para programar o Arduino e faço os uploads de código através dele.
Existe um plug-in chamado STINO que integra a IDE do Arduino com o Sublime e você pode fazer praticamente tudo de dentro do Stino. Veja o link aqui:
https://github.com/Robot-Will/Stino
É meio chatinho de configurar e às vezes dá uns paus. Mas para a maioria dos projetos tem funcionado bem para mim. Porém quando tentei programar outras placas como o Trinket da Adafruit a integração não funcionou.
Boa Sorte!
ahh po, que legal..
Primeiro, adorei o plugin, geralmente a exibição default de códigos de blogs é meio ruim mesmo (que plugin é esse? vou tentar usar tb num blog q eu comecei a pouco tempo)
Segundo, muito massa essa lib do github, vou dá uma olhada nela e tentar integrar as duas coisa em casa tb =D
vlw Manoel