Indentificar para que lado uma roda gira com ldr e arduino

Olá, eu estou fazendo um medidor de distância com rdoa ultilizando o arduino, e  preciso saber para que lado a roda está girando, para isso estou usando 2 ldrs e 2 leds de alto brilho e fiz 16 furos em uma roda (eu vou colocar no final uma foto dela) para que cada vez que o furo passasse entre o led e o ldr, o ldr identificasse o brilho do led. 

Quando eu rodo o roda devagar o arduino lê direitinho os 2 ldrs, porem é só rodar um pouco mais rápido que ele lê apenas um ldr dos 2 ldrs. Pelo que eu estava testando o motivo disso é porque quando giro a ela um pouco mais rápido ele entra no while do primeiro ldr e quando o segundo ldr iria terminar de ler o led, o arduino ainda está no while do primeiro ldr. Então gostaria de saber se tem como arrumar isso, desde de já eu agradeço.

https://pastebin.com/RMVvmVx6 //esse é o link do codigo no pastebin e anexei ele também

Exibições: 452

Anexos

Responder esta

Respostas a este tópico

Boa noite Sr. R.
Só ajudo amigos que não colam sketch na área de texto do tópico.
Sou velho e ranzinza.
Se remover o code, e anexar como arquivo, posso reconsiderar minha decisão de não ajudá-lo.
Leia: http://labdegaragem.com/forum/topics/sugest-o-de-como-postar
Rui

me desculpe não sabia disso, porem já arrumei só nao sei se comentei o sketch direito.

O caminho é esse mesmo.

Os leds devem ser postos de forma que um esteja coberto quando o outro estiver num furo.

Vc chama um de passo e o outro de direção.

Aih vc presta atenção nas bordas do chamado passo.

Quando o passo por ex for de 1 pra 0 vc olha o outro. Se o outro estiver no furo está girando para um lado. Se estiver no fechado está girando para o outro.

Ref:

http://www.datataker.com/Datalogger_Manual/The%20Phase%20Encoder%20...

Bom dia Sr. R.
Vejo alguns problemas no seu projeto.

Em primeiro lugar:

O uso de duas funções analogread() seguidas:
ex: if((analogRead(ldr1)>=1000) && (analogRead(ldr2)<1000)) ,


a leitura dos valores nas porta analógicas, requerem um tempo entre uma e a outra.

ref: https://www.arduino.cc/en/Reference/AnalogRead
"It takes about 100 microseconds (0.0001 s) to read an analog input" .

Em seguida:

O uso de ldr como sensor.
O ldr tem um tempo de resposta relativamente grande :

ref: http://www.geocities.ws/njbibin/robo17b.html

"sensitivity: about 3msec(Sensitivity is defined as the time taken for output to
change when input changes, i got this reading by verifying with ADC " .

Continuando,

o uso excessivo de de print na serial afeta a leitura dos valores dos sensores.

Recomendação:

Usar sensores com melhores respostas de frequência, tais como foto-transistores ou foto-diodos;
usar ports digitais tais como os 2 e 3;
usar os recursos de interrupções (INTERRUPT) dos ports 2 e 3;

E também seguir as recomendações do amigo Eduardo H. Marcondes.

Rui

PS: Pra que gastar port pra os LEDs, use um  resistor ligado no LED e na alimentação.

Ola Sr. Ranzinza Véio , só foi eu  tirar o excesso de print na serial que já funcionou certinho, e vou pequisar como usar o recurso de interrupções para usar com foto-transistores. 

Muito obrigado pelas dicas Ranzinza Véio e Eduardo H. Marcondes.

Bom dia Rafael. 

Você pode confirmar que esta usando um LDR como sensor de luz ?

Os LDRs não são apropriados para esse tipo de medição, pois eles tem resposta lenta.

https://pt.wikipedia.org/wiki/LDR

Use foto-transistores no lugar dos LDRs. Mas dessa forma, terá que proteger os sensores da luz externa. 

https://pt.wikipedia.org/wiki/Fototrans%C3%ADstor

Sim, eu agora estou usando leds de alto brilho como emissor de luz e ldrs como sensor de luz, mas depois irei tentar usar os foto-transistores

Sr. R,
pode tentar esta versão:

Obs: Não testei nem a montagem nem o sketch, só compilei.
Rui

Anexos

Irei testar agora utilizando esse sketch. Muito obrigado

Entao ele nao incrementa no contador , só decrementa . Só que uma duvida antes isso aqui é um foto-transistor ?

http://www.manutencaoesuprimentos.com.br/imagens/como-funciona-um-f... //Esse é o unico que eu tenho em casa , ele identifica luz infravermelho.

Alguns LEDs vermelhos podem ser usados como foto-transistor.
Mas tem que testar. De muitos leds que tenho em casa, só uns poucos funcionaram.

http://labdegaragem.com/forum/topics/projeto-de-f-sica-com-arduino?...

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço