
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:

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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
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 newsletter, alí em cima à direita e receba novos posts por email.
Siga-nos no Do bit Ao Byte no Facebook.
Prefere twitter? @DobitAoByte.
Inscreva-se no nosso canal Do bit Ao Byte Brasil no YouTube.
Nossos grupos:
Arduino BR – https://www.facebook.com/groups/microcontroladorarduinobr/
Raspberry Pi BR – https://www.facebook.com/groups/raspberrybr/
Orange Pi BR – https://www.facebook.com/groups/OrangePiBR/
Odroid BR – https://www.facebook.com/groups/odroidBR/
Sistemas Embarcados BR – https://www.facebook.com/groups/SistemasEmbarcadosBR/
MIPS BR – https://www.facebook.com/groups/MIPSBR/
Do Bit ao Byte – https://www.facebook.com/groups/dobitaobyte/
Próximo post a caminho!