Manual

do

Maker

.

com

Sensor indutivo de proximidade LJ12A3-4-Z/BX

Sensor indutivo de proximidade LJ12A3-4-Z/BX

Para quem não conhece, esse sensor é comumente utilizado para fim de curso, aplicando-se a CNC, impressora 3D etc. Sua mecânica deixa claro que sua instalação é fixa, mas nada impede de utilizá-lo de maneira móvel, se desejado. Esse material foi fornecido por nosso parceiro Fulltronic, que nos ampara em muito tutoriais como você bem já deve ter notado.

Se ainda não leu o datasheet, vale a pena dar uma olhada, está bastante claro e tem 1 página.

Características

Esse sensor de proximidade  tem 12mm de diametro e a distância de detecção é de 4mm. Sua saída é NPN 3wire normalmente aberto. Trabalha na faixa de 6VDC à 36VDC, com corrente de saída de 300mA. Todas essas informações estão disponíveis no rótulo prateado em volta da base do sensor e lá você vê se ele é PNP ou NPN. Mais uma vez; o que estou utilizando aqui é NPN.

Como dito, o datasheet recomenda sua utilização a partir de 6V, mas com degradação é possível utilizar 5V do Arduino para facilitar as coisas. Eu vou de 9V.

Wiring

Você pode utilizar com qualquer hardware para IoT como Raspberry, ESP8266, Onion Omega etc. Arduino é o mais comum e a melhor opção nesse caso é alimentá-lo com 9V no Vin e puxar também para o sensor.  Um resistor pullup  de 1K vai ao fio preto (ou como no código, utilize o pullup interno do Arduino), o fio preto vai a um pino digital do Arduino, o fio azul vai ao ground e o marrom recebe a tensão de 9v também. Fica assim:

inductiveSensor-wiring.webp

Isso significa que você não deve alimentar o Arduino pelo jack e nem pela USB. Você o está alimentando pelo Vin, que aceita seguramente até 12V, mas também não é recomendado que essa entrada venha de uma fonte de alimentação que possa ter ruídos, prefira sempre uma bateria nesse caso.

Funcionamento

O fio que vai para a MCU mantém-se em nível alto. Quando o sensor é acionado, a tensão que estava na porta da MCU vai a 0V; isto é, quando o sensor estiver ativo, 0V. Quando estiver inativo (todo o tempo que em não houver detecção), 5V. Basicamente, 0 (LOW) para ativo e 1 (HIGH) para inativo.

Coding

Muitas lógicas podem ser aplicadas agora. Como parece uma lógica invertida, você pode inverter também no código utilizando bitwise e assim ter 0 para desligado e 1 para ligado. De outro modo, poderiamos apenas usar a negativa na condicional ou condicional ternário.

int val = 1;

void setup() {
    pinMode(5,INPUT_PULLUP);
    Serial.begin(9600);
    Serial.prinln("Started");
}

void loop() {
    val = digitalRead(5);
    if (!val){
      print("Proximidade percebida");
    }
    delay(200);
}

Como queria escrever rapidamente esse artigo, fiz desse modo mesmo, mas eu preferiria utilizar meus limitados conhecimentos em eletrônica e aplicar um divisor resistivo ou um optocoupler, fazer um circuito isolado pro 9V e alimentar o Arduino pela USB invés de fazer desse modo. Mas aí está o conceito, como você pode ver, é bastante simples tanto wiring quanto código para interação.

Inscreva-se no nosso canal Manual do Maker Brasil no YouTube.

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.