Utilizando o sensor indutivo NPN de proximidade com Arduino

O sensor indutivo de que vamos falar neste tutorial também é conhecido como sensor indutivo de proximidade NPN modelo LJ12A3-4-Z/BX. Aqui, vamos desenvolver uma aplicação que nos permita saber quando um determinado objeto metálico passou sobre o nosso sensor.

[toc]

kit arduino robótica educacional

O sensor indutivo

Sensor Indutivo NPN de Proximidade – LJ12A3-4-Z/BX é um componente eletrônico capaz de detectar a proximidade de objetos metálicos. Entre as características deste componente está o fato de não possuir partes móveis em sua estrutura, o que faz com ele possa ser aplicado em uma vasta gama de ambientes e para um grande número de aplicações. Portanto, pode-se afirmar que este sensor possui uma vida útil estendida quando o comparamos a outros elementos que desempenham as mesmas funções, mas que possuem mecanismos móveis. Além disso, este também é um sensor de alta confiabilidade.

O princípio de funcionamento deste sensor baseia-se na criação de um campo magnético a partir de um oscilador e de uma bobina – ambos contidos dentro da estrutura do mesmo – de modo que, caso a intensidade deste campo varie devido a sua interação com a presença de algum corpo metálico, o circuito de sensoriamento detecta esta alteração, e muda o estado de saída do sensor para nível lógico alto ou baixo.

O sensor de proximidade que estamos abordando neste tutorial funciona com tensões entre 6 e 36 volts DC (corrente contínua). O sinal de saída mantém-se em nível alto (1 lógico) se nenhum objeto estiver em frente ao sensor, e muda para nível baixo (0 lógico) quando aproximamos um objeto metálico da extremidade azul. É importante destacar que, para que o objeto seja detectado, deve estar bem próximo, cerca de 4 a 5 mm do sensor.


Mãos à obra – “Detectando objetos metálicos utilizando o sensor indutivo com o Arduino”

Componentes necessários

Para realizar o projeto proposto neste tutorial, você vai precisar dos seguintes componentes:

Montando o projeto

Para realizar a alimentação do sensor indutivo basta plugar o Adaptador P4/KRE Fêmea no terminal da Fonte Bivolt 12V 2A e realizar a conexão dos jumpers com o sensor.

Programando

void setup() {
  Serial.begin(9600);
  pinMode(7,INPUT);
  pinMode(12,OUTPUT);
}

void loop() {
  if(digitalRead(7) == HIGH) {
    Serial.print("Nenhum objeto foi detectado");
    digitalWrite(12,LOW);
    while(digitalRead(7) == HIGH) { }
  }
  else {
    Serial.print("Um objeto foi detectado");
    digitalWrite(12,HIGH);
    while (digitalRead(7) == LOW) { }
  }
}

Colocando para funcionar

Após compilar este código, você vai obter um resultado como esse:


Entendendo a fundo

Software

– Definindo as configurações iniciais

Na primeira parte do código estão as configurações que precisam ser realizadas. Dentro da função setup() nós inicializamos a comunicação serial através da sentença Serial.begin(). Também definimos os modos de operação do pinos 7 e 12, para que eles atuem como portas de entrada digital e saída digital respectivamente.

void setup() {
  Serial.begin(9600);
  pinMode(7,INPUT);
  pinMode(12,OUTPUT);
}

– Detectando objetos com o Sensor indutivo NPN

Em seguida vem a lógica para detecção de objetos metálicos com o sensor. O que fazemos dentro da função loop() é utilizar uma estrutura condicional if() para conferirmos se não há nenhum objeto metálico passando pela frente do sensor. Isto é feito comparando o sinal de tensão existente na entrada digital do pino 7 com um sinal de nível lógico alto.

void loop() {
  if(digitalRead(7) == HIGH) {
  
  }
}

Caso esta hipótese seja verdadeira (o pino 7 continua em nível alto), apresentamos no Monitor Serial, a frase “Nenhum objeto foi detectado” e apagamos o led conectado na saída digital do pino 12. Com a função while(), mantemos o programa neste estado até que um objeto seja detectado (fazemos isso para não imprimirmos a mesma frase repetidas vezes no Monitor Serial). Quando um objeto for detectado, o programa sai do while().

if(digitalRead(7) == HIGH) {
  Serial.println("Nenhum objeto foi detectado");
  digitalWrite(12,LOW);
  while(digitalRead(7) == HIGH) { }
}

Em seguida, utilizamos uma estrutura condicional complementar else para checar a hipótese complementar à anterior, ou seja, a de que existe um objeto passando pela frente do sensor.  Neste caso, imprimimos no Monitor Serial a frase “um objeto foi detectado” e acendemos o led. De forma semelhante ao caso anterior, mantemos o programa num loop com o while() até que o objeto em questão não seja mais detectado.

else {
  Serial.print("Um objeto foi detectado");
  digitalWrite(12,HIGH);
  while (digitalRead(7) == LOW) { }
}

O código final completo da aplicação é este aqui:

void setup() {
  Serial.begin(9600);
  pinMode(7,INPUT);
  pinMode(12,OUTPUT);
}

void loop() {
  if(digitalRead(7) == HIGH) {
    Serial.println("Nenhum objeto foi detectado");
    digitalWrite(12,LOW);
    while(digitalRead(7) == HIGH) { }
  }
  else {
    Serial.print("Um objeto foi detectado");
    digitalWrite(12,HIGH);
    while (digitalRead(7) == LOW) { }
  }
}

 


Considerações finais

Neste tutorial, demonstramos como fazer para conseguir detectar objetos metálicos com o sensor indutivo de proximidade NPN modelo LJ12A3-4-Z/BX. Esperamos que você continue nos acompanhando e sinta-se à vontade para nos dar sugestões, críticas ou elogios. Lembre-se de deixar suas dúvidas nos comentários abaixo.