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.
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.
Neste tutorial, vamos aprender a utilizar o sensor de nível lateral boia com o Arduino.
MATERIAIS NECESSÁRIOS
- 1x Placa UNO SMD Atmega328 compatível com Arduino;
- 1x Cabo USB Tipo A-B compatível com Arduino UNO;
- 1x Sensor de nível / boia de água lateral;
- 1x Protoboard;
- 1x LED verde difuso;
- 1x LED vermelho difuso;
- 2x Resistores 220 Ω;
- 1x Resistor 10 kΩ;
- Jumpers macho-macho.
ESQUEMÁTICO DE FUNCIONAMENTO
Monte o circuito da Figura 3 utilizando o sensor boia, os LEDs e os Jumpers.
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:
- 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:
/* - USO DO SENSOR DE NÍVEL / BOIA DE ÁGUA COM ARDUINO - ===================================================== ===== BLOG DA ROBOTICA - www.blogdarobotica.com ===== ===================================================== Autora: Carol Correia Viana 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 ===================================================== */ #define SensorBoia 10 //Define o pino em que o sensor está conectado #define LedVermelho 11 //Define a porta em que o LED vermelho está conectado #define LedVerde 12 //Define a porta em que o LED verde está ligado int leiturasensor ; //Declaração da variavel que armazenará os valores de leitura do sensor void setup() { Serial.begin(9600); // Inicialização a comunicação serial pinMode(SensorBoia, INPUT); //Define o pino de sensor da boia como pino de entrada pinMode(LedVermelho, OUTPUT); //Define o LED vermelho como pino de saída pinMode(LedVerde, OUTPUT); //Define o LED verde como pino de saída } void loop() { leiturasensor = digitalRead(SensorBoia); //Realiza a leitura do sensor e armazena na variável leiturasensor Serial.print("Leitura do sensor: "); Serial.println(leiturasensor); if (leiturasensor == HIGH) { //Se o sinal de leitura do sensor for HIGH, teremos que a água está com nível alto e o LED verde deve ser ligado Serial.println("Nível de água alto"); digitalWrite(LedVermelho, LOW); digitalWrite(LedVerde, HIGH); } else { Serial.println("Nível de água baixo");//Se o sinal de leitura do sensor for LOW, teremos que a água está com nivel baixo e o LED vermelho deve ser ligado digitalWrite(LedVermelho, HIGH); digitalWrite(LedVerde, LOW); } delay(300); }
Espero ter ajudado,
Obrigada a todos e em caso de dúvidas deixe seu comentário abaixo!
Carol Correia Viana
Bacharel em Engenharia Elétrica com ênfase em Eletrônica, mestra em Engenharia Industrial e especialista em Docência com ênfase em Educação Inclusiva. Atua no setor de Desenvolvimento de Produtos na Casa da Robótica. Editora chefe e articulista no Blog da Robótica. Fanática por livros, Star Wars e projetos Maker.