LusoRobótica - Robótica em Português
Electrónica => Electrónica Geral => Tópico iniciado por: andnobre em 07 de Março de 2014, 16:22
-
boas
estou aqui um problema ao construir um sensor de passagem e é tão simples que nem funciona correctamente :-[
ja nem sei se os led estão bem o do infravermelho ou do fototransistor
em anexo esta a minha montagem.
o programa é bastante simples.
Infra vermelho está com uma resistência de 33OR e o Fototransistor de 10K
//////////////////////////////////////////////
int objeto = 0;
void setup()
{
pinMode(7, INPUT); //Pino ligado ao coletor do fototransistor
Serial.begin(9600);
}
void loop()
{
objeto = digitalRead(7);
if (objeto == 0)
{
Serial.println("Objeto : Detectado");
}
else
{
Serial.println("Objeto : Ausente !");
}
}
//////////////////FIM///////////////
o problema que está sempre a detectar ou seja qd eu interrompo o feixe ele não assinala.
-
Os Leds infravermelhos pode-se ver se estão ligados com uma camara, por exemplo de um telemóvel, que não conseguem filtrar completamente esses comprimentos de onda.
-
estão entao bem ligados. mas agora porque não funciona correctamente???
-
Um grande problema é que tens infravermelhos a vir de todo o lado. Podes tentar calibrar isso, mas é dificil, basta mudares de posição, ou o sol mexer-se um bocado que os valores mudam. Eu fiz um projecto do tipo em que usei um TSOP1736 como receptor, e o led a piscar à frequencia correspondente (36Khz), funciona bem melhor e não precisas de calibração nenhuma.
-
agora tenho assim o circuito e mesmo assim n funciona não sei mesmo do que poderá ser algo tão simples. :-[
-
Olhando assim para uma breadbord é meio dificil perceber o que se passa... Isso é para detectar o que mesmo já agora?
-
E para detectar a passagem de um objecto a curta distância.
Exemplo vamos imaginar que neste caso passava uma abelha,barata, etc
O mais estranho e que não sei o que poderei estar a fazer de errado e emissor emite ja verifiquei com a maq do telemóvel. O sinal vem do receptor para o arduino porta 7 e umaporta digital. A programação acho que esta simples para funcionar.
-
Os leds IR estão ligados via resistência a um fio vermelho, fio esse que sai fora da foto, para além disso os leds são direccionais, tens os leds a apontar para cima, e não frente a frente, imagina um carro ter os faróis no tejadilho na perpendicular com a estrada, não seria muito útil para conduzir á noite.
-
Os leds estão apontados um para o outro. O fio vermelho é a alimentação o azul a massa. Enquanto o fio laranja vai ligar ao pino 7 do arduino.
-
Está meio confuso teres componentes na breadboard que não fazem parte do circuito.
A 1ª coisa a fazer é desenhar um esquema com as ligações pretendidas.
Essa barreira IR pode ser testada sem arduino, dá para se ler no receptor com o multímetro ou colocar um transístor para acender um LED.
Depois de saber que o hardware está ok então podes seguir para o código no arduino.
ps: o sinal vindo do receptor deve ser TTL (0-5V)
-
agora tenho assim o circuito e mesmo assim n funciona não sei mesmo do que poderá ser algo tão simples. :-[
Bom, detectar infravermelhos, podera nao ser "algo tao simples" assim..
Por exemplo isto sera um dos circuitos mais simples:
(https://www.clear.rice.edu/elec201/Book/images/img156.gif)
talvez seja idêntico ao que tens feito.
Algumas notas sobre este tipo de circuito:
- extremamente influenciável pela luz ambiente
- apenas consegue funcionar a distancias muito curtas (milimetros.. 1..2 cm se o LED IV tiver a apontar para o phototransistor)
- A resistencia de 10K eh baixa de mais, poderás ter de ir para os 100K .. 1M
- Tens mesmo de usar um phototransistor. um photodiodo q 'e muito identico nao serve para esse circuito
- A "saida" do circuito, vai ser sempre tensao proxima da alimentacao quando nao esta a detectar e devera ir proximo de 0V quando detectar. (logica invertida)
- Podes testar o circuito com o multimetro primeiro
-
boas
ja mudei para outro sensor tsop1736
mas mesmo assim nada, não detecta nada.
-
O TSOP dependendo do modelo está á espera de ver um sinal modulado, os mais comuns é 36 e 38Khz, se o sinal não for modulado a essa frequência os filtros do TSOP fazem com que ele não veja efectivamente nada, e é mesmo essa a intenção para remover interferências.
-
entao como faço para ter os 36kHZ
-
Tens de ter o led a piscar a uma frequencia proxima dos 36Khz... Com o arduino isto funciona (apesar de não dar exactamente os 36Khz):
#define PIN_DATA_OUT 10
#define MODULATE_DELAY 10
void setup()
{
pinMode(PIN_DATA_OUT, OUTPUT);
}
void loop()
{
digitalWrite(PIN_DATA_OUT, HIGH);
delayMicroseconds(MODULATE_DELAY);
digitalWrite(PIN_DATA_OUT, LOW);
delayMicroseconds(MODULATE_DELAY);
}
-
Num micro com 3 timers, esse código é uma aberração, mesmo na plataforma Arduino, mas pode desenrascar se não quiseres o Arduino a fazer mais nada.
O Arduino tem uma biblioteca tone que deve servir para esse fim....
-
deu um no na cabeça ???
ligo ao pino 10 do arduino o led infravermelhos correcto? :-[
-
so precisava que isto funcionasse vejo tantos esquemas.
Alguém tem um sensor de passagem que funcione com código de arduino ?
-
Dorme bem, acorda com vontade de aprender, e lê BEM um tutorial ou dois sobre o assunto, isso é algo bastante simples.
Se te está a fazer confusão o facto de o led ser IR arranja um LDR ou um foto-transistor e usa um led comum(espectro visivel), depois de teres isso a funcionar com um led normal, passa para os infra-vermelhos.
-
O hate ao Arduino vem um bocado por causa destas coisas...
O que tu tens de fazer é criar um sinal quadrado com uma frequência de 36kHz. Estou a contar com o que o senso disse que é preciso teres o LED IR a piscar a 36kHz.
Este sinal tem de alimentar um transístor que vai fazer ligar/desligar um LED. Em alternativa e numa abordagem mais simples podes ligar o pino directa à porta onde tens o sinal quadrado de 36kHz.
Para criar este sinal tens de utilizar um timer do Atmega que está no Arduino. Basicamente utiliza-se um contador que incrementa uma variável de x em x segundos (este valor tem de ser configurado tendo em conta os tempos de ciclo de relógio). Depois existem várias alternativas para a partir desse contador comutar o output do pino digital criando assim uma onda quadrada. Um exemplo. quando o contador chegar a 200 trocar o output do pino digital e fazer reset ao valor do contador.
Tendo em conta esta explicação MUITO por alto e pouco perceptível deves ler esta thread:
http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=50106 (http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=50106)
-
muito obrigado por tudo
-
Porque se estivesse a usar qualquer outro micro ou C puro sem bibliotecas extra, como que por magia ia saber que um TSOP precisa de um sinal modulado.
Ninguem nasce ensinado!
-
Porque se estivesse a usar qualquer outro micro ou C puro sem bibliotecas extra, como que por magia ia saber que um TSOP precisa de um sinal modulado.
Ninguem nasce ensinado!
Eu não sabia nunca utilizei isso. O meu comentário tinha mais a ver com o pessoal querer um resultado super rápido sem aprender um bocado. Por isso é que eu dei aquele link e tentei dar um overview da maneira de criar ondas quadradas num qualquer micro.
andnobre também podes tentar a abordagem do tarquinio para teres uma sensibilidade inicial e não desmotivares mas acho que não vais perder nada em ler essa thread que a meu está bastante conseguida.
-
eu n levo a mal nenhum comentario.
só tenho de agradecer eu fico é preocupado por ser tão simples e não funcionar.
e o código e simples de funcionar enfim.
-
eu n levo a mal nenhum comentario.
só tenho de agradecer eu fico é preocupado por ser tão simples e não funcionar.
e o código e simples de funcionar enfim.
Eu tambem fico preocupado.
Conforme tinha explicado anteriormente e também por outras ajudas de outros membros, isto não se trata de algo simples.
Investiga mais um pouco e le mais pela internet e vais ver que estas a tocar na pontinha de um iceberg.
Só será muito simples quando conheceres o iceberg todo.
O facto de teres passado de um phototransistor para um TSOP e esperar o mesmo resultado(neste caso, ter o resultado que esperarias), so mostra que estas a andar ah deriva e por completa tentativa e erro.
Nunca vi em nenhuma documentacao da area de electronica, que tivesse escrito: "Eh so juntar agua, sal e mecher!"
-
Para medir campos equipotenciais, depois eletrolise quicks in e as pontas de prova desaparecem, campo eletromagnético, porque estragar É aprender ;D
-
bem eu acho que estou a complicar muito o assunto afinal isto tem de ser do tipo de seguidor de linha.
e simplesmente para contar insectos que entram dentro de uma caixa.
o que eu vejo são seguidores de linha que ja existem no mercado mas eu queria fazer com led infravermelhos e fototransistor mas estou a ver que é mais complicado do que parece.
ja há muito produtos destes
http://www.pololu.com/product/961/ (http://www.pololu.com/product/961/)
http://www.pololu.com/docs/0J19/all (http://www.pololu.com/docs/0J19/all)
-
A coisa não é assim tão complicada... Começando do 0, se usares um TSOP, a coisa funciona assim: O TSOP tem 3 pinos, 2 para alimentação, e o 3º é o output. O output activa-se quando ele recebe luz a piscar a uma certa frequencia. Dai conseguires ter coisas funcionem à luz do dia sem grandes calibrações... Mesmo havendo infravermelhos por todo o lado, ao teres um led a piscar a uma frequencia específica, a luz vai sempre aumentar/diminuir, e o tsop detecta se esse aumento/diminuição está a acontecer à frequencia certa, e activa o output.
Percebendo como é que o TSOP funciona, o que é que falta fazer? É preciso por um LED a piscar à frequencia certa, e ao mesmo tempo verificar se o output do TSOP está activo ou não.
O código que eu postei é bastante básico mas funciona, o problema é que ele apenas trata da parte de por o led a piscar. Funcionaria se tivesses um arduino apenas para ligar ao led, e outro arduino separado para ligar ao TSOP. É mais dificil de usar se quiseres fazer tudo mo mesmo arduino, porque ao estares a fazer outras coisas alem de por o led a piscar, essas coisas vao demorar tempo a ser executadas, e os tempos já não ficam certos. Neste caso, a coisa a fazer é dizer ao arduino "ok fica aí a piscar o led automaticamente à frequencia que eu te disser enquando o código faz outras coisas". Para isto é que se usam os timers.
Podes usar a library Tone, como o araujo referiu. Aquilo foi mais pensado para fazer sons, mas do ponto de vista do micro, é a mesma coisa ligar um led ou um microfone. Usando essa library, podes usar "play(36000);" no setup para colocar a led a piscar independentemente do resto do codigo... Depois só tens de ver se o output do TSOP se altera, e fazeres o que quiseres se isso acontecer.
-
muito obrigado pela explicação.
-
por acaso este sensor e parecido ou igual no meu caso.
n vejo diferenças.
uso o mesmo código e nada mesmo assim
http://www.filipeflop.com/pd-6b912-sensor-optico-reflexivo-x2-unidades.html?ct=&p=1&s=1 (http://www.filipeflop.com/pd-6b912-sensor-optico-reflexivo-x2-unidades.html?ct=&p=1&s=1)
-
Porque não medes o output com um multimetro (no caso do fototransistor) para ver se o problema tá logo aí?
-
o circuito até funciona mas a tensao e menina ou seja muito baixa.
estou a usar um tl081 alimentado a 10v, mas não estou a conseguir amplificar o sinal proveniente do photodiodo.
uma das minhas duvidas e entender o conceito de offset deste componente alguém consegue explicar? ???
-
Se usares um fototransistor não precisas de amplificação.
-
no tl081 é obrigatório termos uma tensão negativa?
-
Não. Os potenciais (voltagens) são sempre relativos.
Convém é criar uma "virtual ground" de referência. Depois é só respeitar as margens entre as entradas do opamp (+ e -) e as alimentações (Vss e Vdd) ditados na datasheet e não deves ter problemas de maior.