Olá, sou iniciante na utilização desse tipo de sensor e estou tentando fazer um contador com ele, só que não estou conseguindo. Anexei o código que estou usando e não encontrei matériais na internet falando sobre. Eu consegui fazer com que ele funcione acedendo o led dele mesmo, quando entra em contato com o metal, mas o contador não funciona.

Exibições: 797

Anexos

Responder esta

Respostas a este tópico

Olá João Marcelo!

   Com "o contador não funciona" você quer dizer que ele fica contando a cada 1 s enquanto o sensor é acionado, e não apenas quando ele muda de estado?

   Se a resposta a esta pergunta for SIM, é porque o teu loop() está fazendo isto enquanto o sensor estiver em ZERO.

   Você tem que detectar não o nível do sensor, mas o evento de mudança de estado de UM para ZERO.

   Tenta o código no anexo e nos diz depois se funcionou.

   Ah, alterei levemente o teu código, trocando a variável do sensor de int para boolean e mudando o nome, só para ficar mais autoexplicativo. Espero que não se importe.

   SS ( Saúde e Sucesso! )

Desculpa mas, você anexou algo? porque não estou achando rsrs,

Deveria ter ido, mas parece que o LdG está com problemas nos anexos. Outros já reclamaram.

Vai por aqui mesmo, correndo o risco do Minerim me xingar!     :-)

const int pinoSinal = 7; //PINO DIGITAL UTILIZADO PELO SENSOR
int contador = 0;
//int valor = 0;

boolean valorAnteriorDoSensor ;
boolean valorDoSensor ;

void setup(){
Serial.begin(9600);
pinMode(pinoSinal, INPUT); //DEFINE O PINO COMO ENTRADA

valorDoSensor = digitalRead( pinoSinal ) ;
valorAnteriorDoSensor = valorDoSensor ;
}
void loop()
{
valorDoSensor = digitalRead(pinoSinal);
if ( ( valorDoSensor == 0 ) && ( valorAnteriorDoSensor == 1 ) ) // quando o sensor indentifica algum material
{
contador++;
Serial.print("contador: ");
Serial.println(contador);
}

valorAnteriorDoSensor = valorDoSensor ;

delay(1000);
}

Boa tarde, se ele acende o seu próprio led, o problema não deve ser do sensor ou código mas sim da forma em que esta ligado na carga, salvo que esteja com defeito, o que não creio, o sinal do led indica que ele leu o elemento sensor, e atuou, seja no seu contato NA ou NC, Quanto fios possui seu sensor, 3 ou 4? como você fez a ligação com alimentação e carga, anexe um esquema, desenho a mão livre, foto, e modelo do seu sensor, desta forma ficara mais fácil ajudar.

Lembre-se que estes sensores na maioria dos casos operam com tensão de 12 ou 24V que é a tensão utilizada por norma na automação industrial, mas existem também de 6V, são mais difíceis de encontrar.

Abs.

CK

Então, esse sensor que eu to usando diz que ele funciona com 5V que é o modelo LJ8A3-2-Z/BX e não o que eu mencionei lá no titulo, mas como o sensor esta funcionando aparentemente normal, então acho que não é esse o problema.

O problema é provavelmente a logica, você tem certeza que ligou os fios adequadamente?

Veja a diferença entre uma ligação NPN e uma PNP.

Abs.

CK

Se o seu sensor é NPN, então sua logica de programação deveria se 1 como abaixo e não 0.
void loop()
{
valor = digitalRead(pinoSinal);
if(valor == 1) // Se é NPN aqui deveria ser 1 não 0
{
contador++;
Serial.print("contador: ");
Serial.println(contador);


}
delay(1000);
}

Abs.

CK

Você esta ligando o fio laranja no 3.3V, ele tem que ser ligado no 5V, senão só vai acender o led mesmo, acho que este é seu erro.

Boa sorte,

Abs.

CK

Olá denovo, João Marcelo.

   Esqueci de dizer, depois tira o delay( 1000 ) e vê se continua funcionando!

   E também de, antes de testar o código, seguir as recomendações do Carlos Kwiek!

   Abração!

Olá denovo, João Marcelo.

   Outra coisa:

   Pelas ( péssimas ) datasheets que encontrei deste sensor, a alimentação dele é 6 VDC a 36 VDC. Espero que tu o estejas alimentando nesta faixa.

   Então cuidado! Pois os Arduinos, apesar de existirem nos mais diversos sabores, via de regra são alimentados com +5VDC ou +3.3VDC.

   Além disso, não vi na datasheet se é necessário adicionar um resistor de pull down ( o sensor parece ser PNP ).

   Enfim, o Carlos Kwiek tem razão, é necessário resolver o hardware primeiro, para depois passar ao código.

   Abração!

Aqui seu código simulado no Proteus, o que demostra que o problema deve ser hardware como escrevi no post anterior.

A chave simula o sensor.

Abs.

CK

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço