Olá pessoal, 

Preciso identificar o sentido de direção usando dois sensores que serão acionados quando algo passar por eles. Conforme o sentido, devo acionar um rele e acender uma luz na extremidade deste sentido.

Acredito que devo pegar o tempo 1 e tempo 2 de cada acionamento, e se o tempo 1 for menor que o 2, esta indo em um sentido, caso tempo 2 seja menor que tempo 1, esta indo no outro sentido.

Como usar o millis() junto com o acionamento da gpio 1 e 2?

Agradeço qualquer ajuda/dica.

Exibições: 267

Responder esta

Respostas a este tópico

Olá!

Como você não deu muitos detalhes do sensor, nem postou o código como anexo, vão algumas dicas:

1) Declare duas variáveis tempo1 e tempo2 para computar o tempo em millis em que passou por cada sensor:

unsigned long tempo1;
unsigned long tempo2;
unsigned long sentido;

2) Na leitura positiva do sensor1:

tempo1 = millis();

3) Na leitura positiva do sensor2:

tempo2 = millis();

4) Para obter o sentido:

sentido = tempo1 - tempo2;

5) Exibir o sentido:

if (sentido < 0) {

  Serial.print("Sentido tal");

}

else {

  Serial.print("Sentido qual");

}

Obs: Para saber se as 2 leituras foram feitas, use uma variável flag para contar as leituras. Assim você só calcula o sentido quando os dois tempos foram lidos. Logo após zere a variável flag.

Obrigado, Vou compilar e testar.

O sensor é IR reletivo com contato seco, então devo definir IO input1=D3, input2 =D4 e usar o D5 para acionar o rele 1 ou rele 2 conforme o sentido.

Uma informação importante, use a interrupção externa do microcontrolador.

Isso é uma operação em hardware, ela poderá ser executada a qualquer momento, desde que esteja ativada.

Você se refere a IO?

Sugestão do Flávio :

Uma interrupção para cada um dos dois sensores :

https://playground.arduino.cc/Code/Interrupts

https://www.arduino.cc/reference/en/language/functions/interrupts/i...

http://arduino-info.wikispaces.com/Timers-Arduino

 INT0 e INT1, são controladas pelos pinos D02 D03 do Arduino, respectivamente. 

Se vc está se referindo a esses discos furados com 2 sensores, o uso tradicional é:

Um deles vc chama de passo e o outro de direção.

Quando acontece uma borda de descina no passo vc le o de direção. Ele vai indicar a direção. A montagem mecanica deve ser tal que a fase entre um e outro permite isso.

Para evitar um classico erro de leitura quando o disco vibra sobre o limiar de ativação do sensor de passo é preciso aguardar um ciclo completo (transição de passo e depois transição de dir para só assim aceitar uma transição de passo novamente.).

Piorei ?

Mas normalmente esses sensores são assim... 

2 interrupções:

1) Passo se houve flag de direção, na direção apontada pelo pino dir; reseta flag de dir;

2) seta flag de dir.

A montagem eletronica era: um flip flop com o set no passo e o reset no dir. A saida disso incrementava ou decrementava um contador conforme o pino dir.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço