• 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.

Fifas

tenho um samples duns potenciometros digitais.....mas os gajos sao super hiper mega pequenos :P

amando96

lol xD mas deve dar para usar PWM para controlar a distancia a que detecta?

TigPT

Quote from: little resources on 02 de April de 2009, 17:16
lol xD mas deve dar para usar PWM para controlar a distancia a que detecta?
Sim com um PWM maior deve de detectar mais longe... testa..

Njay

Podes meter até 180 ohms no minimo sem problemas nenhuns.
Se queres regular o alcance, liga-o (com a resistência) a uma saída de PWM ;). Até pode ser usando a lib Servo2.

amando96

essa biblioteca n sei pk mas n quer instalar :(

bem mas n tentei com o IDE 0015...

dansku


R.S.

boas, fui a loja de electonica local e e fui pedir um receptor IR e o senhor nao tinha e disse-me que este(BPW40) faz a mesma coisa, é?

eu fiquei um bocado na duvida na altura porque o receptor que eu queria tem 3 pernas que é o que o tr3s referiu e o que comprei tem 2 é tipo um LED.


abraços R.S.

amando96


dio123


TigPT

Quote from: dio123 on 08 de April de 2009, 11:30
e perciso mesmo o arduino?
Não é preciso o arduino, o arduino aqui só está a fazer a tarefa de mediante um valor processar de certa forma, mas pode fazer o mesmo com qualquer microcontrolador, ou apenas com circuitos lógicos.

anunakin

Boa tarde!
Estou tentando reproduzir o esquema com um Arduino Nano, contudo o receptor IV não detecta nada, sei que está a funcionar pois funciona perfeitamente com o controle da TV...

Creio que possa ser a freqüência que estou usando com a biblioteca MSTimer... seria isso?
Marcus Fazzi

amando96

experimenta desligar a luz IV, ver o que acontece, depois liga-a e ve, se nada mudar, talvez o receptor esteja avariado...  :-\

anunakin

Esse meu receptor está funcionando sim, tenho outros, só esse tem a saída digital (1 => nada, 0 => detectou IV), contudo parece que ele tem algum filtro e pelo o que pesquisei só capta o IV em 38KHz, para que temos de usar uma harmônica... com o sinal do controle remoto funciona muito bem o sensor....

Usando um dos meus sensores analógicos consegui fazer o que está descrito aqui, mas esse sensor digital parece-me muito melhor pois ele praticamente não capta interferência alguma do ambiente e tem um alcance de mais de 5 metros....

O problema está em simular pelo arduino esse sinal de controle remoto, nessa frequencia de 38KHz....

======== NOVIDADES =========
Consegui fazer funcionar com o sensor IV que tenho aqui, parece que era o mesmo problema do Quack (e outros), vou explicar .... alguns sensores têm filtros para só pegarem IV entre 38KHz até uns 45KHz, ou seja os 5ms do programa original não fazem o nada, como montei o mesmo com outro sensor só que analogico, a diferença na qualidade da detecção é muito alta, já que o digital tem o filtro de freqüência, e obviamente retorna 0 ou  1....

Usei intervalos de 10µs para gerar a onda quadrada, bom deveria ser 12µs mas em 12 a freqüência não casa, provavelmente é devido ao tempo de execução, em 12 detecta o sinal mas em 10 fica muito melhor, não tenho um osciloscópio aqui para ver a freqüência real de saída....

Bom foram muitas horas de pesquisas e tentativas, e alguns controles remotos velhos que desmontei, mas valeu a pena...
Eis aqui o programa modificado e que está a funcionar aqui:

#include <MsTimer2.h>
#define ledPin 12
#define alertPin 13
#define irx 2

int val  = 0;
int counter = 0;

void setup(){
  pinMode(irx, INPUT);     //pino data do Sensor IV
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);

  MsTimer2::set(100, flash); //timer do flash, são emitidos pulsos da onda quadrada na frequencia de ~38KHz acada 100ms
  MsTimer2::start();

}

void loop()
{
  val = digitalRead(irx);
  if(!val){
    counter++;   
    digitalWrite(alertPin, HIGH);
    delay(50);   
    digitalWrite(alertPin, LOW);   
    Serial.print("Debug: ");
    Serial.println(counter);
  }
}

void flash() {  //Onda quadrada, 10µs bom deveria ser 12µs mas em 12 a frequencia nao casa (seria o tempo de execução?)
    digitalWrite(ledPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(ledPin, LOW);
    delayMicroseconds(10);
    digitalWrite(ledPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(ledPin, LOW);
    delayMicroseconds(10);
}

Marcus Fazzi

amando96

Quote from: TigPT on 08 de April de 2009, 15:51
Quote from: dio123 on 08 de April de 2009, 11:30
e perciso mesmo o arduino?
Não é preciso o arduino, o arduino aqui só está a fazer a tarefa de mediante um valor processar de certa forma, mas pode fazer o mesmo com qualquer microcontrolador, ou apenas com circuitos lógicos.

como fazer com um circuito lógico? com um OPAMP? :D

anunakin

Com OPAMP, acho que consegue gerar o sinal no led, mas como vais calcular uma distancia?
Marcus Fazzi