fbpx

Como utilizar o sensor de nível / boia de água lateral com Arduino

O sensor de nível / boia de água lateral (Figura 1) é um interruptor boia capaz de detectar o nível de líquido dentro de um tanque. Esse dispositivo pode ser conectado à porta digital de vários microcontroladores (ESP, Arduino e outros), sendo amplamente utilizado em projetos de monitoramento de caixas d’agua e reservatórios.

Imagem ilustrativa do sensor de nível boia de água lateral.
Figura 1: Sensor de nível boia de água lateral.

O funcionamento do sensor de nível / boia de água lateral se baseia na movimentação de sua boia que conforme o nível de água sobe ou desce e pode ser melhor entendido a partir da análise da Figura 2 e dos seguintes pontos:

  • Quando a boia estiver na posição A o sensor funcionará como uma chave aberta, indicando que o nível de água está baixo;
  • Por sua vez, quando a boia estiver na posição B o sensor funcionará como uma chave fechada, indicando que o nível de água está alto.
Imagem ilustrativa do modo de funcionamento do sensor de nível boia de água.
Figura 2: Modo de funcionamento do sensor de nível boia de água.

Neste tutorial, vamos aprender a utilizar o sensor de nível lateral boia com o Arduino.

MATERIAIS NECESSÁRIOS

ESQUEMÁTICO DE FUNCIONAMENTO

Monte o circuito da Figura 3 utilizando o sensor boia, os LEDs e os Jumpers.

Imagem ilustrativa do circuito para utilização do sensor de nível boia de água com o Arduino.
Figura 3: Circuito para utilização do sensor de nível boia de água com o Arduino.

Ao montar o circuito observe os seguintes pontos:

  • Um fio do sensor deve ser conectado com a porta digital 10 do Arduino com resistor pull down de 10 kΩ;
  • O outro fio do sensor deve ser alimentado com o 5V do Arduino;
  • Para controle do LED vermelho e verde usamos as portas digitais 11 e 12.

ELABORANDO O CÓDIGO

Após a montagem do circuito, vamos a programação do Sketch. Nosso objetivo é utilizar o sensor de nível / boia de água em conjunto com o Arduino para verificar se o nível de água de um recipiente encontra-se alto ou baixo. Acompanhe os passos a seguir para melhor compreensão da lógica de programação:

  1. Definir os pinos do Arduino que serão utilizados

Iniciamos o código definindo as constantes SensorBoia, LedVermelho e LedVerde e atribuindo a elas os pinos 10, 11 e 12 do Arduino, respectivamente.

  • Declarar a variável

Em seguida, declaramos a variável leiturasensor que será responsável por armazenar os dados de leitura do sensor boia.

  • Inicializar a comunicação serial e configurar o modo dos pinos

A comunicação serial foi inicializada por meio da instrução: Serial.begin(9600);.

Logo após, definimos o SensorBoia como entrada de dados (INPUT) e LedVermelho e LedVerde como saída (OUTPUT).

  • Realizar a leitura do sensor de nível e imprimir no monitor serial

Iniciamos o loop() realizando a leitura da porta digital 10 (SensorBoia) e imprimindo seu resultado no monitor serial

  • Realizar a comparação (Nível de água alto x Nível de água baixo)

Utilizaremos a lógica do if…else para comparar a leitura do sensor, de modo que:

  • Se a leitura do sensor for igual a nível lógico alto (HIGH), a mensagem “Nível de água alto” deve ser exibida no monitor serial e o LED indicativo verde deve ser acionado;
  • Senão (leitura do sensor igual a nível baixo), a mensagem “Nível de água baixo” será exibida no monitor serial e o LED indicativo vermelho deve ser ligado

Ao final, o Sketch deste projeto ficará da seguinte maneira:

/*
  - SENSOR DE FREQUÊNCIA CARDÍACA E OXÍMETRO MAX30100 -
  =====================================================
  ===== BLOG DA ROBOTICA - www.blogdarobotica.com =====
  =====================================================
  Autor: Jonas Souza
  E-mail: contato@blogdarobotica.com
  Facebook: facebook.com/blogdarobotica
  Instagram:@blogdarobotica
  YouTube: youtube.com/user/blogdarobotica
  =====================================================
  ===== CASA DA ROBOTICA - www.casadarobotica.com =====
  =====================================================
  Facebook: facebook.com/casadaroboticaoficial
  Instagram:@casadarobotica
  =====================================================
*/

#include <Wire.h> //Biblioteca para comunicação I2C
#include "MAX30100_PulseOximeter.h" //Biblioteca para uso do sensor de frequência cardíaca e oxímetro MAX30100 

#define REPORTING_PERIOD_MS     1000 // Intervalo entre a medição de cada amostra

uint32_t tsLastReport = 0; // Tempo da última amostra dectada

PulseOximeter pox; //Declaração objeto pox

void onBeatDetected() { //Função executada quando um pulso é detectado
  Serial.println("Batimento detectado");
}

void setup() {
  Serial.begin(9600); //Inicialização da comunicação serial
  Serial.print("Iniciando funcionamento do sensor ");

  if (!pox.begin())  //Testa a comunicação com o sensor
  {
    Serial.println("Falhou ! "); //Se a comunicação não foi realizada corretamente exibe a mensagem "Falhou"
    for (;;);
  } else
  {
    Serial.println("Sucesso ! "); //Se a comunicação foi realizada com sucesso exibe a mensagem "Sucesso !"
  }
  pox.setIRLedCurrent(MAX30100_LED_CURR_7_6MA); // Define que o sensor use 7,6 mA para o led
  pox.setOnBeatDetectedCallback(onBeatDetected); // Registra todas as vezes em que um batimento for detectado
}

void loop() {
  pox.update(); //Atualiza a leitura do sensor

  if (millis() - tsLastReport > REPORTING_PERIOD_MS) { //Imprime a leitura em intervalos de 1000ms
    Serial.print("Taxa de Batimento : ");
    Serial.print(pox.getHeartRate()); // Faz a leitura de batimento cardíaco
    Serial.print("bpm / Saturacao sangue(SP02) : ");
    Serial.print(pox.getSpO2()); //Realiza a leitura da saturação do sangue
    Serial.println("%");

    tsLastReport = millis();
  }
}

Espero ter ajudado,

Obrigado a todos e em caso de dúvidas deixe seu comentário abaixo!

Att. Jonas Souza

Dúvidas? Deixe seu comentário

Jonas Souza

Graduando em Engenharia Elétrica. Atua no setor desenvolvimento de tutoriais para o Blog da Robótica.

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.