collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[Ontem às 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: [Tutorial] Sensor Infra-Vermelho para Próximidade e Reflexão da Luz  (Lida 35811 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Olá,

Desta vez vou postar sobre uns sensores infra-vermelhos em que o emissor IR e o photo-transistor estão integrados no mesmo módulo.









Introdução

Estes sensores são muitas vezes utilizados em robôs para seguir linhas mas têm muitas outras aplicações, como por exemplo o uso em encoders de motores e detecção de objectos a pequenas distancias.

Estes módulos funcionam através da emissão de um feixe IR que dependendo de haver um objecto a reflectir ou não na direcção do photo-transistor vai fazer com que este entre em condução ou não.

Devido às características das cores banco e preto, em que o branco é a cor que mais reflecte e o preto a cor que menos reflecte (podemos também pensar que o branco absorve pouca luz enquanto que o preto absorve muita), podemos usar estas cores para controlar o funcionamento do sensor. Assim quando usado o sensor contra um objecto branco, por exemplo uma folha, vai ter uma reacção oposta em relação a utilização de um objecto com cor preto. Este facto permite usar este sensor para seguir uma linha, medir a velocidade de uma roda.

Neste teste usei o sensor para distinguir o branco do preto numa roda e através disto saber a velocidade da mesma.



Usando esta forma, podemos saber que ao final de o sensor mudar 4 vezes de estado, isto é, começar no preto -> branco -> preto -> branco e voltar ao preto, a roda deu uma volta completa, através do perímetro da roda podemos logo saber a distancia que percorreu. Então se por exemplo de t em t segundos fizermos (número de voltas)/ t obtemos a velocidade média da roda no intervalo t.



Electrónica \ Montagem

Através da análise da datasheet podemos encontrar as informações sobre os pinos do sensor.







Assim podemos criar o seguinte esquema:




A resistencia R1 é de 190 Ohms e não 83 Ohms como indicado na imagem.

As resistências R1 e R2 devem ser calculadas em função do sensor utilizado, para isto devemos analisar a datasheet e apurar qual a corrente tanto no díodo como a corrente que o photo-transitor conduz.

Usando a tabela das características eléctricas tiramos para o LED :

IF = 20mA
VF = 1.2V


É necessário incluir a queda de tensão do LED nas contas.

(V-Vf) = R * If  <=>  R = V / If <=> R = (5V-1.2V) / 20mA = 190 Ohms

Para o photo-transistor devemos verificar +- entre que valores pode variar a corrente no colector, assim podemos escolher uma resistência em função disso, no entanto como a corrente do photo-transistor em função da luz que incide neste não é linear, R2, pode ser ajustado testando vários valores para R2 ou por exemplo usando um potenciómetro para calibrar o que nos der mais jeito.

Obrigado ao Njay pela correcção nesta parte ;)

Implementação: Arduino \ Micro-controladores

Para utilizar agora o sensor no Arduino, ou outro micro-controlador, vamos utilizar uma das entradas analógicas, assim pode-se usar o sensor para medir distancias até 1,2cm no entanto no tipo de aplicações que referi, distinguir duas cores, seria útil fazer a comparação através  de um comparador e posteriormente utilizava-se uma entrada digital do micro-controlador.



Um simples código para testar pode ser:

Código: [Seleccione]
#define sensorIR 0

void setup(){

  Serial.begin(9600); //Para podermos ver o valor na consola

}

void loop(){

  Serial.println(analogRead(sensorIR));

  delay(50);

}



Um código para contar o numero de voltas:

Código: [Seleccione]
#define sensorIR 0


int var_sensorIR = 0;

int contaVoltas = 0;

boolean estadoPreto = false;


void setup(){

  Serial.begin(9600); //Para podermos ver o valor na consola

}


void loop(){

  var_sensorIR = analogRead(sensorIR);

  if(estadoPreto && (var_sensorIR < 400)){

    contaVoltas++;

    estadoPreto = false;

  }


Documentos
Datasheet: http://www.farnell.com/datasheets/13066.pdf

Produto

Fabricante:AVAGO TECHNOLOGIES
Referencia do Fabrincante:APDS-9104-L22

Nota:Eu comprei na farnell por 0,61€ http://pt.farnell.com/avago-technologies/apds-9104-l22/sensor-proximity-reflective-0-10mm/dp/1532444 mas pode ser encontrado noutras lojas e nem precisa de ser exactamente este modelo :)

Espera que seja util e se tiver erros digam qualquer coisa ;)

Abraço
« Última modificação: 29 de Março de 2010, 01:44 por metRo_ »

Offline TigPT

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 5.372
    • Tiago Rodrigues
Re:[Tutorial] Sensor Infra-Vermelho para Próximidade e Reflexão da Luz
« Responder #1 em: 03 de Maio de 2009, 01:26 »
Excelente metRo_, vou ler mais atentamente amanha mas parece-me mais um excelente artigo, parabéns! ;)

Offline guibot

  • Mini Robot
  • *
  • Mensagens: 651
    • Guibot
Re:[Tutorial] Sensor Infra-Vermelho para Próximidade e Reflexão da Luz
« Responder #2 em: 03 de Maio de 2009, 12:54 »
Muito bom _metro!! Tenho a certeza de que um dia hei-de experimentar fazer encoders  ;)

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Re:[Tutorial] Sensor Infra-Vermelho para Próximidade e Reflexão da Luz
« Responder #3 em: 03 de Maio de 2009, 12:58 »
Obrigado :)

Eu a próxima coisa que vou fazer é aprender um bocadinho de interrupções para fazer um encoder e depois claro que partilho o que conseguir ;)

Offline Fifas

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 2.064
  • El RoboSapiens
Re:[Tutorial] Sensor Infra-Vermelho para Próximidade e Reflexão da Luz
« Responder #4 em: 04 de Maio de 2009, 00:59 »
ainda não li com muita atenção, mas excelente post metRo_ ;)

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Re:[Tutorial] Sensor Infra-Vermelho para Próximidade e Reflexão da Luz
« Responder #5 em: 05 de Maio de 2009, 17:37 »
Adicionei dois videos.

Offline R.S.

  • Mini Robot
  • *
  • Mensagens: 108
Re:[Tutorial] Sensor Infra-Vermelho para Próximidade e Reflexão da Luz
« Responder #6 em: 05 de Maio de 2009, 20:50 »
como a palavra de ordem do lusorobótica é ajuda e não competitividade deixo aqui também um bom tutorial.

http://letsmakerobots.com/node/4428


abraços r.s.
« Última modificação: 05 de Maio de 2009, 20:52 por R.S. »

Offline joaoamaral

  • Mini Robot
  • *
  • Mensagens: 218
Re:[Tutorial] Sensor Infra-Vermelho para Próximidade e Reflexão da Luz
« Responder #7 em: 05 de Maio de 2009, 23:08 »
espetacular!! :D obrigado.

isto compra-se com facilidade em alguma loja?
basta levar a referência? é muito caro?
Twitter: @joaoamaral | Skype: joaoamaral

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Re:[Tutorial] Sensor Infra-Vermelho para Próximidade e Reflexão da Luz
« Responder #8 em: 06 de Maio de 2009, 19:36 »
Já adicionei essa informação ao tópico.
Comprei na farnell por 61cent mas penso que exista na maioria das lojas da especialidade :)

Offline fred gomes

  • Mini Robot
  • *
  • Mensagens: 238
Re: [Tutorial] Sensor Infra-Vermelho para Próximidade e Reflexão da Luz
« Responder #9 em: 21 de Novembro de 2009, 15:21 »
Boas.
metRo_ será que me podias mostrar a programação que fizeste para o motor andar apenas "quando vê preto",é que aqui só mostras-te a programação para a utilização do sensor como encoder..
cumprimentos,
Fred

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Re: [Tutorial] Sensor Infra-Vermelho para Próximidade e Reflexão da Luz
« Responder #10 em: 21 de Novembro de 2009, 15:24 »
O motor não anda só quando vê preto se disse isso em algum lá está errado. O motor está ligado directamente à bateria.

Offline fred gomes

  • Mini Robot
  • *
  • Mensagens: 238
Re: [Tutorial] Sensor Infra-Vermelho para Próximidade e Reflexão da Luz
« Responder #11 em: 21 de Novembro de 2009, 15:29 »
peço desculpa, se calhar confundi este tutorial, acho que aqui so aplicas o sensor mesmo como encoder, no entanto se me podesses mostrar a programação do mesmo para dar ordem ao motor para andar apenas "quando vê preto"(aplicação num seguidor de linhas pretas) , agradeçia...
cumprimentos,
Fred

Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.598
    • Tróniquices
Re: [Tutorial] Sensor Infra-Vermelho para Próximidade e Reflexão da Luz
« Responder #12 em: 21 de Novembro de 2009, 16:10 »
Bom tutorial! Tenho apenas este comentário:

Usando a tabela dos valores máximos admitidos tiramos para o diodo :

Continuous Forward Current ? IF = 60mA

V = R * I  <=>  R = V / I <=> R = 5V / 60mA = 83,33 Ohms

Os "maximum absolute ratings" de todas as datasheets são valores que simplesmente não se pode ultrapassar, e não se desenha nenhum circuito com esses valores nem perto disso. Assim que esses valores são ultrapassados, o dispositivo deixa de ser fiável em todas as condições para as quais foi fabricado. Eu usaria esse LED a 20mA, as condições de teste que eles têm na datasheet; não me parece haver problema ir um bocado mais além como 30mA ou 40mA, mas 60mA é que não mesmo.

No cálculo da resistência falta ter em conta a queda de tensão no LED. A datasheet indica tipicamente 1.2V quando a corrente é 20mA, daí que a conta é

(5V - 1.2V) / 20mA = 190 Ohm

220 Ohm é o valor comercial mais proximo, se for usada uma de 150 Ohm também não há crise, passa cerca de 25mA ainda está longe do limite de 60mA.

Com 82 Ohm, como não contaste com a queda de tensão do LED, acabas por ter uma corrente não de 60mA mas de menos de (5 - 1.2) / 82 ~ 46mA. Um erro acabou por anular o outro :)

Por curiosidade, pagaste 0.61€ ou 0.61€ + IVA?
« Última modificação: 21 de Novembro de 2009, 16:13 por Njay »

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Re: [Tutorial] Sensor Infra-Vermelho para Próximidade e Reflexão da Luz
« Responder #13 em: 21 de Novembro de 2009, 17:38 »
Tens toda a razão, não devia estar muito bem quando fiz isso, e daqui a pouco já corrijo isso.

Tenho quase a certeza que paguei só isso, agora se a minha faculdade pagou o IVA ou não :S hmm mas realmente é estranho :S

Offline kikokiko

  • Mini Robot
  • *
  • Mensagens: 55
Re: [Tutorial] Sensor Infra-Vermelho para Próximidade e Reflexão da Luz
« Responder #14 em: 07 de Janeiro de 2010, 22:45 »
Olá, hoje recebi o foto-transístor da loja da Lusorobótica e estive a seguir este tutorial mas no datasheet o anode, cathode,emitter... estão trocados e só recebo valores de 500 e 1200 com umas variações mínimas... Alguém me pode ajudar? Talvez um esquema no fritzing me ajuda~se para ver se estou a fazer isto correctamente.