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: Construir um Sensor de próximidade de Infravermelhos por 0€  (Lida 100599 vezes)

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

Offline tr3s

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 811
  • char x=1, y=5; x^=y^=x^=y;
Construir um Sensor de próximidade de Infravermelhos por 0€
« em: 08 de Fevereiro de 2009, 03:58 »
   Olá a todos!

   Bem com certeza que já todos conhecem os famosos sensores de proximidade por infravermelhos da SHARP que custam entre os 20 e os 30 euros em Portugal:


   Bom, eu fiz o meu por 0€, é verdade zero euros, e vou ensinar-vos como!

   Primeiro recolher o material necessário:
      - Sensor IR
      - LED IR
      - Transistor NPN (usei o BC547)
      - Caneta velha

   Como gosto de reciclar, fui até à garagem do meu tio e perguntei-lhe se tinha para lá algum video ou TV velha... Yap tinha e meteu-me logo 2 vídeos velhos à frente.  Encontrei logo 2 receptores de infravermelhos e alguns transístores. Os receptores são assim:


   Estes vão ser os que vocês vão encontrar certamente, mas eles funcionam de maneira diferente. O Maior coloca "0 / LOW" em "out" enquanto não detecta infravermelhos mas assim que os detecta coloca "1 / HIGH". O mais Pequeno funciona ao contrário. Decidi usar o mais pequeno pois é o que se adaptava melhor
ao que queria fazer.
   Perguntei ainda ao meu tio se tinha por ali comandos estragados ou que já não precisasse para poder tirar um LED, ele deu-me logo uns quantos e então foi so tirar os LED IR! OH YEAH!
   (Eu fui à garagem do meu tio, mas vocês podem ir à loja do Electricista local ou o senhor que arranja electrodomésticos da vossa zona, certamente que ele vos deixa fazer o mesmo! Isto se vocês não tiverem assim material velho.)

   Quando cheguei a casa fui à procura de uma caneta velha, uma que já não escrevesse. Encontrei uma com o tubo preto e bastante opaco, "Era mesmo isto que procurava!". Cortei o tubo da caneta em duas partes com 5cm cada uma:


   Com a pistola de cola quente já "quente", colei o Sensor IR a um lado dos tubos:


   Fiz o mesmo com o outro tubo para o LED e de seguida colei os tubos um ao lado do outro:


   Okay, a "pistola" está pronta! Com os tubos de 5cm consegui detectar objectos a 30cm de distância até 10cm de distância (10cm é o mais perto que quero estar dos obstáculos). Para aumentar a sensibilidade e por sua vez detectar objectos ainda mais perto, basta cortar os tubos! Podem cortá-los até a "face" do LED e do Sensor e assim conseguem detectar objectos mesmo em cima destes!

   Vamos agora às ligações. As ligações são bastante simples, o sensor tem 3 pinos, 2 para alimentação e o outro e um pin que ou tem o valor lógico 1 ou 0.
   O sensor tem uma maneira engraçada de funcionar. O que estes sensores fazem é detectar variações de luz, por exemplo, quando carregamos num botão do comando  LED dele pisca com uma determinada frequência (+- 33KHz) e o que o sensor da TV ou video detecta é esta variação. Estes sensores não detectam apenas, única e exclusivamente, luz infravermelha, eles "apanham" tudo (são um pouco mais sensiveis ao IR claro)! Se nós acendermos um LED IR em frente a este sensor veremos ele detectar qualquer coisa por um breve momento  e a estabilizar logo de seguida, isto porque ele internamente "satura" a esse comprimento de onda. É por isso que quando estamos em casa, de luzes ligadas, conseguimos mudar de canal com o nosso comando. O sensor da TV está a "saturar" a toda a luz envolvente e por isso a desprezá-la, como não está a saturar ao IV ao carregarmos num botão do comando o sensor vai "senti-lo" e como o LED do comando apenas pisca, o sensor não chega a "saturar" o IV e então não o despreza.


   Para ligar o LED há um pequeno senão, como o valor no pino varia tão rápido, se ligarmos la o LED, este parece que nem acende e sim desta forma nem precisamos de uma resitência. É aqui que entra o transístor, com ele conseguimos ter o LED a brilhar a todo o seu explendor (ehe) à frequência desejada!
Fica tudo mais ou menos assim:



   É isto que temos de fazer então, meter o LED IV a piscar (a qualquer valor na frequência dos KHz) e ver se o sensor detecta qualquer coisa!
   Para meter o LED a piscar decidi criar uma interrupção com um timer, de modo a que de cada vez que esta ocorresse acendia ou apagava o LED. Na função loop fico à espera que o sensor detecte alguma coisa. Simples não é?

   Um pequeno exemplo:
Código: [Seleccione]
#include <MsTimer2.h>
#define irx 2   // Sensor IR no pin digital 2

static boolean output = HIGH;  // Variável para defenir o estado do LED de infravermelhos, é estática para ser usada durante a interrupção

void setup(){
  pinMode(irx, INPUT);     // Pin onde está o LED infravermelhos é pin output
  Serial.begin(9600);      // Iniciar comunicação Serial com o computador...
  MsTimer2::set(5, flash); // Defenir intrrupções de 5 em 5 ms e durante a interrupção é chamada a função flash
  MsTimer2::start();       // Iniciar interrupções
}

void loop(){
  while(digitalRead(irx));   // Enquanto não houver nada no Sensor não sai daqui, o sensor coloca 1 quando n detecta nada e passa a 0 qd detecta algo
  Serial.println("ICEBERG!"); // Oi.. Apanhou qualquer coisa... OH NÂO É UM ICEBERG... OH GOD, THE PAIN, CAN YOU FEEL THE PAIN?
  // MAYDAY MAYDAY!
  // - Alô diz iz German Cost Guard, can we help you? (Sotaque alemão)
  // YES, YES! We're SINKING!
  // - Okay so what are you sinking (thinking) about? (ahha XD)
}

void flash() {               // Função chamda durante a interrupção
  digitalWrite(12, output);  // Anceder ou apagar o LED IR
  output = !output;          // Alterar o output...
}


   Para fazer as interrupções uso a biblioteca MSTimer2, deixo-a em anexo para quem ainda não a tem (colocá-la na pasta "hardware\libraries" da pasta do Arduino).

   Bem simples hun?
   Com alguma "ginástica" no código consegue-se medir distâncias, mas isso deixo voces descobrirem como! ::)
   E tudo a custo zero, se não conseguem encontrar este material gratuitamente (custa-me a crer), se o forem comprar não gastam mais de 1,5 euros! É bem mais barato que os 25 a 30 euros das lojas...



(tip: quanto mais perto está o objecto, maior é a frequência com que o sensor varia de 1 para 0)

« Última modificação: 28 de Agosto de 2009, 01:07 por tr3s »
Tr3s
Daniel Gonçalves

Offline ricardo-reis

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 1.338
Re:Construir um Sensor de próximidade de Infravermelhos por 0€
« Responder #1 em: 08 de Fevereiro de 2009, 04:05 »
tu és brutal, daniel.. sim sr.. os teus posts são autenticas preciosidades..

Offline tr3s

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 811
  • char x=1, y=5; x^=y^=x^=y;
Re:Construir um Sensor de próximidade de Infravermelhos por 0€
« Responder #2 em: 08 de Fevereiro de 2009, 04:09 »
tu és brutal, daniel.. sim sr.. os teus posts são autenticas preciosidades..

Aha obrigado  :P :D fico contente por saber que a "malta" gosta!

Espero que todos sejam capazes de ler as letras míudinhas  ::)
Tr3s
Daniel Gonçalves

Offline ricardo-reis

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 1.338
Re:Construir um Sensor de próximidade de Infravermelhos por 0€
« Responder #3 em: 08 de Fevereiro de 2009, 04:11 »
por acaso só forcei a ler agora.. (tive há pouco no cinema e tenho os olhos meio a fritar.. cansaso e tal.. )

Offline TigPT

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 5.372
    • Tiago Rodrigues
Re:Construir um Sensor de próximidade de Infravermelhos por 0€
« Responder #4 em: 08 de Fevereiro de 2009, 11:18 »
Sim senhor, excelente artigo ;)

Adicionado à primeira página!

Só tenho uma sugestão a fazer... Se variares a frequência do LED IR, vais ter reflexos a distancias diferentes, podes então alterar a frequência para mudar a sensibilidade do sensor sem ter que cortar o plástico... Tenta, eu fazia isso quando utilizava o BasicStamp2 com LED e receptor como fazes aqui, mas sem o transístor. ;)

Offline microbyte

  • Mini Robot
  • *
  • Mensagens: 1.322
    • http://ricardo-dias.com/
Re:Construir um Sensor de próximidade de Infravermelhos por 0€
« Responder #5 em: 08 de Fevereiro de 2009, 11:35 »
Brutal!  ;D Espectáculo...
Este tr3s sempre a surpreender.

Offline guibot

  • Mini Robot
  • *
  • Mensagens: 651
    • Guibot
Re:Construir um Sensor de próximidade de Infravermelhos por 0€
« Responder #6 em: 08 de Fevereiro de 2009, 11:40 »
este tuturial está do melhor, obrigado por partilhares   ;)

Offline ngoncalves

  • Mini Robot
  • *
  • Mensagens: 145
    • Thinking Olive Tree
Re:Construir um Sensor de próximidade de Infravermelhos por 0€
« Responder #7 em: 08 de Fevereiro de 2009, 12:24 »
Muito bom, sim senhor !
-----
Ambient intelligence, mobile robotics, life. 42
http://www.thinkingolivetree.blogspot.com/

Offline tr3s

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 811
  • char x=1, y=5; x^=y^=x^=y;
Re:Construir um Sensor de próximidade de Infravermelhos por 0€
« Responder #8 em: 08 de Fevereiro de 2009, 12:44 »
Sim senhor, excelente artigo ;)

Adicionado à primeira página!

Só tenho uma sugestão a fazer... Se variares a frequência do LED IR, vais ter reflexos a distancias diferentes, podes então alterar a frequência para mudar a sensibilidade do sensor sem ter que cortar o plástico... Tenta, eu fazia isso quando utilizava o BasicStamp2 com LED e receptor como fazes aqui, mas sem o transístor. ;)

"Thank you so very" - aahha obrigado!

Em relação à frequência, com estas interrupções (de 5ms a 13ms) foi onde obtive melhores resultados para qualquer distância, tanto máxima como mínima. Ao reduzir o comprimento dos tubos o que se aumenta é o campo de visão do sensor e a area abrangida pelo LED é maior, logo, temos mais resposta a curtas distâncias! ;)

Obrigado a todos! :D
Tr3s
Daniel Gonçalves

Offline TigPT

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 5.372
    • Tiago Rodrigues
Re:Construir um Sensor de próximidade de Infravermelhos por 0€
« Responder #9 em: 08 de Fevereiro de 2009, 12:47 »
Ok, se está testado ;)

Eu tinha conseguido variar as distancias com o sensor só à face do tubo, é capaz de ser por ai.

Offline tr3s

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 811
  • char x=1, y=5; x^=y^=x^=y;
Re:Construir um Sensor de próximidade de Infravermelhos por 0€
« Responder #10 em: 08 de Fevereiro de 2009, 13:17 »
Acho que assim se percebem melhor as ligações :P:



Tr3s
Daniel Gonçalves

Offline TigPT

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 5.372
    • Tiago Rodrigues
Re:Construir um Sensor de próximidade de Infravermelhos por 0€
« Responder #11 em: 08 de Fevereiro de 2009, 13:24 »
Muito bom, adicionei a imagem ao primeiro post.

(A partir de agora já se pode editar sempre os próprios posts)

Offline silva_p

  • Mini Robot
  • *
  • Mensagens: 172
Re:Construir um Sensor de próximidade de Infravermelhos por 0€
« Responder #12 em: 08 de Fevereiro de 2009, 13:45 »
Citar
Oi.. Apanhou qualquer coisa... OH NÂO É UM ICEBERG... OH GOD, THE PAIN, CAN YOU FEEL THE PAIN?
  // MAYDAY MAYDAY!
  // - Alô diz iz German Cost Guard, can we help you? (Sotaque alemão)
  // YES, YES! We're SINKING!
  // - Okay so what are you sinking (thinking) about? (ahha XD)
genial!

mt bom tutu ;)

Offline TigPT

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 5.372
    • Tiago Rodrigues
Re:Construir um Sensor de próximidade de Infravermelhos por 0€
« Responder #13 em: 08 de Fevereiro de 2009, 13:57 »
Citar
Oi.. Apanhou qualquer coisa... OH NÂO É UM ICEBERG... OH GOD, THE PAIN, CAN YOU FEEL THE PAIN?
  // MAYDAY MAYDAY!
  // - Alô diz iz German Cost Guard, can we help you? (Sotaque alemão)
  // YES, YES! We're SINKING!
  // - Okay so what are you sinking (thinking) about? (ahha XD)
genial!

mt bom tutu ;)
Pelos coments do código dá para ver a que horas foi feito :P

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Re:Construir um Sensor de próximidade de Infravermelhos por 0€
« Responder #14 em: 08 de Fevereiro de 2009, 14:53 »
Obrigado :) Muito bom  ;)