Hoje vou explicar como foi feito o sensor que serve para ver se há algum obstáculo em frente ao mesmo.
Ele funciona segundo o princípio da reflexão da luz. Utiliza dois componentes básicos: o led infra vermelho e o receptor infravermelho.
A rotina de leitura do sensor é a seguinte: desligar LED -> medir fundo -> ligar LED -> medir leitura ->calcular.
Vou explicar como funciona: primeiro ele desliga o led infravermelho e mede a intensidade do fundo, isto é, a quantidade de infravermelho que já "havia" no local e a grava na variável fundo(apenas em uma sala completamente escura não há nenhum infravermelho).Depois ele liga o LED infravermelho e mede a intensidade da luz refletida pelo objeto, e se não houver nenhum objeto então a intensidade refletida vai ser pouco diferente da intensidade de fundo.
No código fonte a leitura é invertida devido à construção eletronica do sensor.
Depois disto, o programa no PIC calcula a direfença e verifica se o resultado é maior que o valor de disparo para objeto, que é um valor fixo que indica quando a diferença de luz chega a um nivel onde há um objeto na frente do sensor, então retorna uma variável booleana (sim ou não) com o resultado da leitura.
O esquemático e a placa de circuito:
Placa de circuito impresso: http://www.megaupload.com/?d=65Z3B9K1
Segue o código fonte:
> SensorIR.c
////////////////////////////////////////////////////////////////////////////////
//////////////////////////ROTINAS DO SENSOR/////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
#DEFINE irled pin_a2
int disparo=60;
int fundo=0, leitura=0, res=0;
//Funçao para detecção de obstáculo
boolean obstaculo()
{
set_adc_channel(0);
delay_us(30);
output_low(irled); //Desliga LED
fundo = read_adc(); //Lê fundo
delay_us(30);
output_high(irled); //Liga LED
leitura = 255 - read_adc(); //Lê medida
output_low(irled);
res = leitura - fundo; //Calcula
if (res>disparo) //Retorna resultado
{
return true;
}
else
{
return false;
}
}Só isso por enquanto.
Até mais,
Giovanni WarLock


Nenhum comentário:
Postar um comentário