Sie sind auf Seite 1von 6

Tutorial: Como utilizar a Chave ptica

Postado por Laboratrio de Garagem em 14 junho 2013 s 16:00


Exibir blog
Adquira estes componentes na Loja do Lab de Garagem
Ol Garagistas! No tutorial de hoje, mostraremos como utilizar a chave
ptica, e como demonstrao utilizaremos ela para identificar cartes e
liberar acesso, utilizando o serial monitor da Arduino IDE.
Materiais Utilizados:
1x Arduino
1x Chave ptica
1x Resistor 330
1x Protoboard Mini - 170 Pinos
Alguns Jumpers
1. O Funcionamento

Figura 1 - Chave ptica


Uma chave ptica geralmente constituda de um emissor (LED
Infravermelho) e um receptor (Fototransistor). O dispositivo montado de
forma que entre o Emissor e o Receptor exista uma fenda onde possa ser
introduzido algum objeto. A introduo desse objeto nessa fenda,

interrompe o feixe de luz, provocando uma mudana do estado lgico da


chave ptica de 1 para 0.
As chaves pticas so rpidas e tm a vantagem de no
utilizarem contatos mecnicos, que com o tempo acabam se desgastando,
so muito utilizadas na automao como fim de curso, em robtica, e em muitas outras aplicaes
importantes relacionadas a mecatrnica e opto-eletrnica.
Na imagem abaixo, voc pode ver um tipo de aplicao utilizando a chave ptica, como mecanismo de
segurana. Nela utilizado um carto com uma certa combinao de recortes, para que quando o carto
for introduzido na fenda do mecanismo, ele permita fazer algum acionamento como, abrir um porto,
um armrio, ou simplesmente liberar algum tipo de acesso.

Figura 2 - Exemplo de Aplicao Utilizando-se a Chave ptica


Em nossa aplicao utilizaremos cartes com recortes retangulares, para
que ao passar o carto pela fenda da chave ptica, a mesma detecte os
recortes, deixando a luz infravermelha passar e conte para cada recorte
um pulso, e para cada carto, dependendo da quantidade de recortes
atribui-se uma ID.

Imagem 1 - Carto com 1 recorte (ID 1)


2. A Montagem

3. O Sketch
#define sensor 8 //Define "sensor" com valor 8

int estado=0; //Varivel que detecta o estado da chave ptica


int ID=0; //Varivel para IDentificar qual carto passou pelo leitor
int i=0; //Varivel para contagem
void setup()
{
pinMode(sensor,INPUT_PULLUP); //Define o pino digital 8(sensor) como
entrada...
//...habilitando o resitor de pullup
Serial.begin(9600); //Inicia a Serial
}
void loop()
{
while(i<200) //Fica lendo a chave ptica por 200 milissegundo
{
estado = digitalRead(sensor); //L o pino digital 8(sensor) e guarda o
estado na varivel estado
if(estado == 0) //Se o estado da chave tica for igual a 0(Objeto entre a
fenda)
{
i=0; //Zera a varivel de contagem
ID = ID+2; //Incrementa +2 na ID
while(estado == 0) //Enquanto o estado da chave ptica estiver em
0(Objeto entre a fenda)
{
estado = digitalRead(sensor); //L o estado da chave ptica
}
}
delay(1); //Delay de 1 milissegundo
i++; //Incrementa a varivel para contagem do tempo
}
switch(ID) //Pega a varivel ID
{
case 4: //Se o valor na varivel ID for igual a 4, libera acesso para a ID
4
Serial.println("Marco Mello"); //Escreve no serial monitor o Usurio
dessa ID
Serial.println("ACESSO LIBERADO!"); //Escreve a mensagem

"ACESSO LIBERADO!"
Serial.println(""); //Pula uma linha
Serial.println(""); //Pula uma linha
break; //Sai da comparao
case 6: //Se o valor na varivel ID for igual a 6, libera acesso para a ID
6
Serial.println("Francisco Lourenco"); //Escreve no serial monitor o
Usurio dessa ID
Serial.println("ACESSO LIBERADO!"); //Escreve a mensagem
"ACESSO LIBERADO!"
Serial.println(""); //Pula uma linha
Serial.println(""); //Pula uma linha
break; //Sai da comparao
case 8: //Se o valor na varivel ID for igual a 8, libera acesso para a ID
8
Serial.println("Usuario 3"); //Escreve no serial monitor o Usurio
dessa ID
Serial.println("ACESSO LIBERADO!"); //Escreve a mensagem
"ACESSO LIBERADO!"
Serial.println(""); //Pula uma linha
Serial.println(""); //Pula uma linha
break; //Sai da comparao
case 10: //Se o valor na varivel ID for igual a 10, libera acesso para a
ID 10
Serial.println("Usuario 4"); //Escreve no serial monitor o Usurio
dessa ID
Serial.println("ACESSO LIBERADO!"); //Escreve a mensagem
"ACESSO LIBERADO!"
Serial.println(""); //Pula uma linha
Serial.println(""); //Pula uma linha
break; //Sai da comparao
}
ID=0; //Zera a varivel ID
i=0; //Zera a varivel de contagem(tempo)
}

Referncias:

https://www.sparkfun.com/products/9299
https://www.sparkfun.com/datasheets/Components/GP1A57HRJ00F.pdf
http://arduinobymyself.blogspot.com.br/2012/08/arduino-chave-optica...

Das könnte Ihnen auch gefallen