Manual
do
Maker
.
com
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.
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.
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:
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.
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.
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.
Autor do blog "Do bit Ao Byte / Manual do Maker".
Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.