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]
O sensor indutivo
O 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:
- 1 x Arduino UNO Rev 3
- 1 x Led vermelho difuso
- 1 x Sensor indutivo de proximidade NPN
- 1 x Resistor 220 Ω
- 1 x Resistor 1k Ω
- 1 x Fonte Bivolt 12V 2A
- 1 x Adaptador P4/KRE Fêmea
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.