Senhores, estou montando um circuito em conjunto com Arduíno para verificar o tempo de inicio e fim de um determinado objeto, imagine um sensor onde o primeiro dispara um cronometro e o segundo para de contar e totaliza o tempo percorrido, achei várias formas de ligar, más estou tendo problemas, o desenho abaixo mostra como liguei o sensor..

 

uso um outro FotoDiodo, que fica ligado irradiando ao fototransistor, 

FotoTransistor = TIL78
FotoDiodo = TIL32

Em tutoriais vejo que ligam ele na porta digital, más não consigo fazer funcionar, fiz um teste de leitura pela porta analógica, quando a luz esta irradia o valor exibido é 30 e quando coloco obstáculo 850,

o código para a leitura do sensor pelo analógico.

https://pastebin.com/YNYGPyLU

código que estou tentando funcionar. 

https://pastebin.com/VEEHGdZB

Gostaria sugestões de algumas formas de melhor funcionamento. vlw

Exibições: 1653

Responder esta

Respostas a este tópico

Quando for usar uma entrada digital para leitura, sempre estabilize ela com um resistor (geralmente eu coloco um de 10k) ligando no GND.
Da forma que voce montou o circuito, ele está recebendo o comando inverso, ou seja, recebe 0 quando não tem luz e 1 quando tem luz.
O que você pode fazer para inverter a funcionalidade do circuito é colocar o emissor do Transistor na entrada analógica estabilizada com o resistor. Assim você tem chegando 1 quando há iluminação e 0 quando não há.
Mas acredito que o seu problema atual é esse mesmo.
A porta pode ser lida usando um (digitalRead(PORTA) == HIGH) mesmo.
Agora a lógica para finalização do reconhecimento da porta:
Pelo que eu entendi, você tem 2 sensores (um para inicio outro para fim do objeto)
Segue o desenho:
Estado (1):
-------------------------------------------------
=Objeto=......|...................|
---------------(S1)-----------(S2)------------
Estado (2):
-------------------------------------------------
........=Objeto=..................|
---------------(S1)-----------(S2)------------
Estado (3):
-------------------------------------------------
.....................|...=Objeto=.|
---------------(S1)-----------(S2)------------
Estado (4):
-------------------------------------------------
.....................|...............=Objeto=
---------------(S1)-----------(S2)------------
Estado (5):
-------------------------------------------------
.....................|...................|+ =Objeto=
---------------(S1)-----------(S2)------------

Em pseudo código temos:
https://pastebin.com/R5gTchgc

Agora cabe você fazer as funções para cada estado.
Espero ter ajudado :D

Obrigado por responder, sobre a forma de ligar o fototransistor seria da mesma forma do desenho ?

Isso!

A "Saída" vai em uma entrada digital do arduino.

como ficaria o código para ver no monitor serial o estado do fototransistor tem como ?, na porta analógica eu consigo ver, seria do mesmo jeito, como apresentado no primeiro exemplo ?

Se não me engano, você consegue escrever usando Serial.writeln(digitalRead(NUMERODAPORTA));

Ou jogando dentro de uma variavel:

boolean estado = digitalRead(NUMERODAPORTA);

Serial.writeln(estado);

tudo ok, más está dando algo errado..o tempo esta dando apenas 2 segundos, queria que aparecesse os milésimos de segundo.

https://pastebin.com/9ZtXEX1v

este aki ficou melhor

https://pastebin.com/0Wfx3cS4

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço