• Welcome to LusoRobótica - Robótica em Português.
 

Construir um Sensor de próximidade de Infravermelhos por 0€

Started by tr3s, 08 de February de 2009, 03:58

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

dio123

para o receptor em vez de ligar aos 5 volts liguei aos 3 volts o que já nao aquece tanto como a bocado.

Agora quando ligo o arduino no pc está sempre a aparece o iceberg, ou seja está a detectar algo. Agora se remover o led, o receptor  nao devia detectar o led e nao pc nao deveria aparece iceberg. Aqui acontece só o receptor ligado aprarece o iceberg 

tr3s

Só o facto de isso estar aquecer assim dá-me a sensação de algo não estar bem...
Ve la se não tens por aí nenhuma fonte de IR (normalmente os portateis têm).

Mostra-nos um esquema ou uma foto onde dê para ver bem que ligações estás a fazer.
Tr3s
Daniel Gonçalves

Njay

Ou estás a ligar sem resistências, ou com as patas trocadas, ou é o emissor sem resistência.

amando96

o meu aquecia tmb muito, mas não era NPN, que era o que diz na primeira página, por isso fora com ele, não notei diferença, talvez seja no alcançe, mas sempre alcança uns 20cm em fundo preto...

dio123

O fio verde grande liga ao 3V3 QUE é os 3 volts
O fio branco com risca branca liga ao GND
O fio castanho liga ao pino 2
O fio branco com risca castanha liga ao pino 12

Nao se ve o transistor só agora ao postar é que vi mas no primeiro pino liga o positivo, no segundo liga ao pino2 do arduino e o 3 liga o led

Vou exprimentar tirar o transistor como amando96 referiu a ver o que acontece




tr3s

No transístor o 2 pino liga ao 2 do Arduino? PorquÊ? O sensor de ir assim apontado para cima é bem normal que esteja sempre a detectar algo... Não é por nada que as TVs e têm aquele plástico "escuro" à frente!:P
Algumas ligações não se percebem, mas ao ver tantos fios completamente descarnados não me admira que algo esteja a fazer contacto onde nao deve!

Keep posting
Tr3s
Daniel Gonçalves

dio123

desde já agradeço pela a ajuda que tem dado.

Bem,  fiz as ligações de novo já consegui o seguinte
com que o receptor  ligado aparece-se no pc ICEBERG, e quando desligo ele para de enviar mensagens.
Se ligar mesmo que fique apontado baixo, para o beardboard, ele continua a enviar mensagem. acho que nao devia acontecer.
O led,  ou pisca muito rápido ou nao funciona ligado ao transistor porque pego no telemovel e nao vejo a luz a piscar?

tr3s

Isso é estranho... continuam a aquecer? Refaz o esquema como tenho no post inicial, tem cuidado com os fios e mete um involucro a volta do receptor e outro a volta do led. Just to check ;)
Tr3s
Daniel Gonçalves

dio123

fiz as ligações de novo, e depois liguei aos 5 volts e já nao aquece.

Mas o problema continua pois só retirando o receptor da board e que deixa de aparecer a mensagem, mesmo pondo o envolcro de papel com fita preta.
Reparei que estou a usar o 557 e nao 547,o problema deve ser agora esse, acho eu

Njay

O 557 é PNP e não NPN como 547.
Se disseste que saía fumo de um componente, o melhor é mandá-lo já fora porque a partir do momento em que saíu fumo esse componente já não é fiável, e pode estar a fazer o circuito não funcionar.

Raul

Quote from: quack on 20 de February de 2009, 01:08
Quando digo "bem mais caro" é tendo em conta que comprar um sensor pronto-a-usar me custaria pouco mais de 10€... já vou para além dos 5€... mas caso resulte, nem que no fim tiver gasto um pouco mais, me daria por contente, pois o conhecimento adquirido ninguém me tira.

Já vi que a ajuda aqui no fórum é instantânea =)
Espero evoluir depressa para também poder assim ajudar quem precise ;)

Posto também as imagens dos componentes que uso... mas ainda tenho uma noitada pela frente para fazer mais uns testes ao sensor até saber mesmo postar a minha pergunta..se nem eu me entendo quanto mais voçês.. nao sei ainda formular a pergunta. Sei que não percebo o que o sensor faz (ou neste caso não faz)

Não usei esse foto diodo, mas foi o que me aconselharam na Dimofel, mas cedo percebi que o foto diodo "sente" tudo o que é radiação =P
[]obrigado


[EDIT] novidades

Fazendo o upload do codigo do tutorial o arduino envia sempre a frase "ICEBERG!" para o PC
Para tentar perceber porquê, simplifiquei o meu circuito para algo mais simples e ver o output desta vez:


#include <MsTimer2.h>

static boolean output = HIGH;
int val = 0;

void setup(){
  pinMode(12, OUTPUT);
  Serial.begin(9600);
  MsTimer2::set(5, flash);   // Intrrupções de 5 em 5 ms no LED IV
  MsTimer2::start();
}

void loop(){     // Unica diferença do codigo original
    Serial.println(analogRead(0));     // Envia valores lidos no pin analogico 0
}

void flash() {
  digitalWrite(12, output);
  output = !output;
}


Codigo cores cabos:
Preto- GND
Vermelho- 5V
Amarelo- Pin analogico 0
Verde- GND
Azul- Pin digital 12


---------------------------------(no início...)---------------------------------
Sensor IV:
Leg1: OUT (pin analogico 0)
Leg2: GND
Leg3: 5V

LED IV:
pin digital 12 (com frequência de 5ms tal como o código original, usando o timer)
usei um switch para so ligar o LED IV quando quisesse, para ver alterações no sensor


RESULTADOS do Serial Monitor:
Com LED IV desligado o valor lido é de 1023
Com LED IV ligado o valor lido continua constante a 1023
Daí ter concluído que o output do sensor deveria ser a leg2 em vez da leg1, pois não reagia ao LED IV

----------------------------(Mudando a leg1 com a leg2)----------------------------------------
Sensor IV:
Leg1: GND
Leg2: OUT (pin analogico 0)
Leg3: 5V

LED IV:
igual ao anterior

RESULTADOS do Serial Monitor:
Com LED IV desligado o valor lido é de 190
Com LED IV ligado os valores lidos vão crescendo a um ritmo certo começando por variar entre [193 e 196], [196 e 199], [199 e 202] ...sempre a crecer sequencialmente o limite do intervalo.
Após desligar o LED IV o valor lido estabiliza novamente desta vez num valor mais alto que o 190 inicial
Não me serve de muito, mas confirma (penso eu) a minha teoria de a leg2 ser a leg do sinal

---------------------------------------(fazendo asneira da grossa lol)---------------------------------------
Sensor IV:
Leg1: OUT (pin analogico 0)
Leg2: 5V   (uups!) :o
Leg3: GND (uups!) :o


RESULTADO:
Por engano troquei na bread board a leg2 com a leg3 do sensor IV, o resultado, não cheirou nada bem!!! em segundos percebo que algo de errado se passa, pois começo a sentir um cheiro a queimado!!!!
Aqui sim fiquei preocupado! desliguei de imediato a USB do arduino, mas menos aflito "vejo" que o cheiro não vem da placa mas sim do sensor que estava quente!
Depois de alguns testes os resultados do sensor continuam iguais, penso que não tive tempo de o danificar   =)
------------------//----------------------

E agora finalmente a minha questão: o que se passa com este sensor?  ???
Os outputs gerados fazem sentido?
Com variações de apenas algumas unidade não consigo aproveitar o sensor IV para sensor de proximidade  =(
Vai ser o tubo feito com a caneta preta que vai ajudar na leitura de IV's?

Desde já muito obrigado ;)
quack
Eu fui na conversa do pessoal da Dimofel e comprei o fotodiodo e não funciona por nada.
Agora já sei o que devo de comprar, obrigado a todos.
Excelente post.



NooBot

agora falta fundir isto ao smalluino e tchanan!!

hehe  ;D

cumps

Higarian

Ola experimentei montar o sensor de proximidade de infravermelhos, mas continua-me a dar sempre ICEBERG e não me detecta nada, deixo aqui uma fotografia do circuito montado e agradecia sugestões de como por isto a funcionar.

Aquele led IR é igual ao que esta dentro do canudo preto na breadboard

Este é o transístor que estou a usar
Deixo aqui a datasheet do receptor IR o modelo é tsop1736 http://www.datasheetcatalog.org/datasheets/208/301092_DS.pdf

tr3s

Higarian, estou a ver que usas o outro Receptor. Já fizeste as alterações necessárias no código para usares esse?

QuoteEstes 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
Tr3s
Daniel Gonçalves

Higarian

Pode-me dar uma uma ajuda no que tenho de alterar, é que já andei a tentar alterar mas a minha falta de experiência  com a linguagem de programação não ajuda e continua a não funcionar.

Edit: acho que já esta a funcionar!
No entanto as vezes aparece um "detect" quando não tem nada a frente, alguma sugestão para resolver isto?

#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
  if (output == HIGH) {
  Serial.println("ICEBERG!");
  } else {  // Oi.. Apanhou qualquer coisa... OH NÂO É UM ICEBERG... OH GOD, THE PAIN, CAN YOU FEEL THE PAIN?
Serial.println("detect!");
  }
  // 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...
}