Os contadores tem inúmeras aplicações na área de automação, e podem ser acionados pelos mais variados sensores, como infravermelho, sensores de fim de curso e outros componentes. Neste post vamos ver uma aplicação de contador com sensor indutivo NPN 6-36V e Arduino, que você pode usar em aplicações de automação residencial, na indústria ou simplesmente montar para efeito de testes.

Contador com Sensor Indutivo e Arduino

sensor de proximidade indutivo é um sensor que detecta objetos metálicos, gerando um sinal no pino de saída que pode ser lido por um microcontrolador para tomar algum tipo de ação.

Esse tipo de sensor é muito usado em prensas, esteiras e outros equipamentos. Pode ser usado não só para detectar objetos, mas também movimentos e outras particularidades da máquina. Esse sensor é geralmente encontrado em versões de 24V para uso com CLP´s, comandos e outros tipos de controle industrial.

O sensor de proximidade que vamos usar com Arduino Uno é um sensor indutivo NPN de 3 fios, que funciona com tensões entre 6 e 36 volts DC (corrente contínua). O sinal de saída se mantém em estado alto (1) enquanto nenhum objeto estiver em frente ao sensor, e cai para nível baixo (0) quando aproximamos um objeto metálico da parte azul. Para que o objeto seja detectado, ele deve estar bem próximo, cerca de 4 à 5mm do sensor.

Sensor de proximidade indutivo NPN

O sensor tem 3 fios: preto (sinal), marrom (Vcc) e azul (GND). Na parte de trás, temos também um led que se acende quando um objeto é detectado.

Usando o sensor indutivo com Arduino

Vamos montar o nosso contador utilizando componentes já conhecidos aqui do blog: Display LCD 16×2 e módulo I2C para display. Você também pode optar por adquirir um display com o módulo I2C integrado.

O circuito abaixo mostra a conexão do sensor de proximidade indutivo com Arduino Uno, com o sensor utilizando alimentação externa. Observe que nesse caso estamos interligando o GND do sensor e do Arduino (fios azuis).

Circuito Arduino Uno Sensor Indutivo e display LCD 16x2 I2C

No pino de sinal do sensor (fio preto), temos um resistor pull-up de 1K ligado aos 5V do Arduino. Isso vai manter o sinal de saída em nível alto enquanto não houver nenhum objeto metálico em frente ao sensor.

Programa contador

O programa faz uma leitura constante da porta digital 7, onde está ligado o pino de sinal do sensor. Na ausência de sinal do sensor, o valor 1 é enviado para a porta. Caso algum objeto metálico se aproxime do sensor, é enviado o valor 0.

Os dados são enviados para o display LCD 16×2 I2C, que utiliza a biblioteca Liquid_Crystal_I2C, instalada a partir da IDE Arduino.

Para instalar a biblioteca, abra a IDE e acesse o menu Sketch -> Incluir Biblioteca -> Gerenciar Bibliotecas. Na janela do Gerenciador de Bibliotecas, procure por liquidcristal_I2c e instale a biblioteca LiquidCrystal I2C by Frank de Brabander, conforme abaixo:

Biblioteca LiquidCrystal_I2C IDE Arduino

Dúvidas na instalação da biblioteca? Confira o post Como instalar uma biblioteca na IDE Arduino.

Observe que na linha 8 do programa estamos utilizando o endereço I2C 0x27, e que o seu display LCD pode ter um endereço diferente. Neste caso, utilize o programa I2CScanner (que eu mostro neste post) para identificar o endereço correto.

No loop, realizamos a leitura do pino digital 7 e, caso haja uma alteração para o valor 0, o contador é incrementado, o valor desse contador é enviado para o display e também mostrado no serial monitor.

//Programa: Contador com sensor indutivo e Arduino
//Autor: Arduino e Cia

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

// Inicializa o display no endereco 0x27
LiquidCrystal_I2C lcd(0x27, 16,2);

int pino_sensor = 7;
int valor = 1; //Variavel leitura sensor
int contador = 0;

void setup()
{
  Serial.begin(9600);
  //Define o pino do sensor como entrada
  pinMode(pino_sensor, INPUT);
  //Inicializa o display LCD 16x2 I2C
  lcd.init();
  //informacoes iniciais
  lcd.setCursor(0, 0);
  lcd.print("Sensor indutivo");
  lcd.setCursor(0, 1);
  lcd.print("Contador: 0");
  Serial.println("Contador com sensor indutivo");
}

void loop()
{
  //Le o pino do sensor
  valor = digitalRead(pino_sensor);
  //Verifica se algum objeto foi detectado (valor = 0)
  if (valor == 0)
  {
    //Incrementa o contador
    contador++;
    //Mostra o valor do contador no display
    lcd.setCursor(10, 1);
    lcd.print(contador);
    //Mostra o valor do contador no serial monitor
    Serial.print("Contador: ");
    Serial.println(contador);
    //Loop caso o objeto fique parado em frente ao sensor
    while (digitalRead(pino_sensor) == 0)
    {
      delay(100);
    }
  }
}

Você pode alterar o programa para que o display mostre outras informações, como um contador diário total, um contador parcial de peças (de 10 em 10, por exemplo), implantar funções de reset, contador regressivo, etc. São inúmeras aplicações para esse tipo de sensor.

Confira também outro post aqui no Arduino e Cia sobre como montar um Contador Remoto com Sensor Indutivo e módulo wireless HC-12.

4.2/5 - (18 votes)