O Sensor de Nível de Água possibilita aos projetos integrados, controlar o nível de água nos mais diversificados reservatórios. Como os reservatórios estão comumente instalados em locais altos e de difícil acesso fica complicado controlar sua quantidade de água. Nestes casos o Sensor de Nível torna-se indispensável para facilitar e proporcionar melhores experiências à quem utiliza desta estrutura.
A quantidade de água em reservatórios trás consigo algumas informações valiosas que nos auxiliam na resolução de problemas e prevenções. Através desta quantidade podemos determinar o melhor momento para reabastecimento e pode nos estabelecer um melhor controle de gastos.
O Sensor de Nível de Água verifica apenas um determinado ponto ou nível dos reservatórios aos quais está instalado. O que obriga-nos como projetistas utilizar mais de uma unidade do mesmo para uma verificação de qualidade e maior exatidão. Porém para quem deseja um controle apenas de cheio e vazio, a utilização de dois sensores já é o suficiente.
Sensor De Nível De Água Com Boia Horizontal
O sensor de nível de água é um equipamento com diversos modelos, todos com suas especificações e características próprias. A principal diferença está em seu método de verificação com boia que pode ser tanto horizontal quanto vertical. Tendo em vista o local de instalação e seu funcionamento neste projeto, optamos pelo Sensor de Nível com Boia Horizontal.
O funcionamento deste equipamento é extremamente simples uma vez que conta com apenas dois fios para sua comunicação e acionamento. O sinal para detecção junto ao Arduino é gerado através de um Reed Switch e um imã, um instalado na base e outro na boia.
Sempre que o imã localizado na boia aproxima-se do reed switch, o mesmo gera um sinal através do contato estabelecido. Este contato faz com que a alimentação introduzida em uma das extremidades do fio circule até a oura.
O sensor é extremamente simples e pode ser utilizado em diversos projetos, incluindo aplicações sem a necessidade de um Arduino. Já que possui uma tensão de chaveamento de 100V, pode ser utilizado em projetos com alimentações superiores às do Arduino.
Produtos Utilizados no Projeto
– 5 Sensores de Nível de Água com Boia Horizontal;
– 5 Resistores 10K ¼W;
– Display LCD 16×2 com fundo azul;
Esquema de Ligação do Sensor de Nível de Água sem Display
O esquema de ligação deste projeto é tão simples quanto o funcionamento do Sensor de Nível de Água. O que dificulta a ligação é a utilização de cinco sensores de nível e a necessidade de resistores Pull Down. Os resistores são responsáveis por evitar a oscilação do sinal de nível lógico estabelecendo um nível LOW como padrão.
O esquema de ligação segue um sequencial que auxilia no desenvolvimento do código e na compreensão do projeto. É fundamental que os sensores estejam posicionados em uma sequência específica que possibilite a verificação do nível da água. Para quem prefere, segue o esquema elétrico dos sensores de nível do projeto:
Com isto, podemos desenvolvermos a conexão elétrica do nosso projeto, porém algumas informações valem ser elencadas quanto ao esquema elétrico. Os elementos S (1, 2, 3, 4 e 5) representam o Reed Switch de cada sensor de nível de água. Enquanto que os elementos R (1, 2, 3,4 e 5) representam os resistores Pull Down de 10K.
Código de Funcionamento do Sensor de Nível de Água
O código do Sensor de Nível para Caixa D’Água é extremamente simples, porém limita nossas visualizações apenas ao Monitor Serial. Desta maneira necessitamos de um computador sempre por perto para realizar as verificações e impôs um limite aos nossos trabalhos. Segue o Código:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
// Código de Verificação para Nível de Água // Arduino IDE Versão 1.8.13 // Exemplo de visualização no Monitor Serial #define Sensor1 7 #define Sensor2 8 #define Sensor3 9 #define Sensor4 10 #define Sensor5 11 #define rele 13 int sensor1 = 1, sensor2 = 1, sensor3 = 1, sensor4 = 1, sensor5 = 1; int nivelinicial = 0; void setup() { Serial.begin(9600); pinMode(Sensor1, INPUT); pinMode(Sensor2, INPUT); pinMode(Sensor3, INPUT); pinMode(Sensor4, INPUT); pinMode(Sensor5, INPUT); pinMode(rele, OUTPUT); Serial.println("Nivel do Reservatorio"); Serial.println(); } void loop() { int sensor1 = digitalRead(Sensor1); int sensor2 = digitalRead(Sensor2); int sensor3 = digitalRead(Sensor3); int sensor4 = digitalRead(Sensor4); int sensor5 = digitalRead(Sensor5); if ((sensor1 == 1) && (sensor2 == 1) && (sensor3 == 1) && (sensor4 == 1) && (sensor5 == 1)) { Serial.println("Reservatorio Cheio"); digitalWrite(rele, LOW); } else if ((sensor1 == 1) && (sensor2 == 1) && (sensor3 == 1) && (sensor4 == 1) && (sensor5 == 0)) { Serial.println("Nivel de 100 a 75%"); } else if ((sensor1 == 1) && (sensor2 == 1) && (sensor3 == 1) && (sensor4 == 0) && (sensor5 == 0)) { Serial.println("Nivel de 75 a 50%"); } else if ((sensor1 == 1) && (sensor2 == 1) && (sensor3 == 0) && (sensor4 == 0) && (sensor5 == 0)) { Serial.println("Nivel de 50 a 25%"); } else if ((sensor1 == 1) && (sensor2 == 0) && (sensor3 == 0) && (sensor4 == 0) && (sensor5 == 0)) { Serial.println("Nivel Critico"); digitalWrite(rele, HIGH); } else if ((sensor1 == 0) && (sensor2 == 0) && (sensor3 == 0) && (sensor4 == 0) && (sensor5 == 0)) { Serial.println("Reservatorio Vazio"); } else { Serial.println("ALERTA - ERRO"); } delay(1000); } |
O código está pronto, porém por depender de um computar torna-se inviável para uso contínuo, é um código para teste. Para quem deseja um projeto ainda mais acabado, com display, continue lendo que vamos desenvolver agora.
Esquema de Ligação do Sensor de Nível de Água com Display
Com a adição de um display ao projeto elevamos a sua utilização e melhoramos a qualidade do nosso projeto. Tornando possível a instalação em locais mais distantes, o display pode ser instalado no local onde melhor tiver visualização.
Quanto ao display, tendo em vista a utilização elevada de pinos para os sensores, optou-se por utilizar um conversor I2C. A comunicação I2C possibilita o envio de dados por apenas dois pinos analógicos e simplifica bastante a nossa conexão.
Para maiores detalhes quanto a Utilização de Displays I2C e sua biblioteca principal, CLIQUE AQUI e acesse nosso artigo relacionado.
O presente esquema de ligação difere-se do demonstrado anteriormente apenas pela adição de um Display 16×2 com Conversor I2C. Com exceção do display, os de mais detalhes da ligação são os mesmos. Veja abaixo o esquema de ligação do Sensor de Nível para Reservatório D’Água com Display:
Assim como no esquema de ligação o código é também bastante simplificado com poucas alterações. Veja no transcorrer deste artigo o código base para funcionamento do referente projeto.
Código de Funcionamento do Sensor de Nível de Água com Display
Com alterações no modo de exibição das mensagens e na inclusão de variáveis referentes ao display, o código é de fácil compreensão e modificação. O único diferencial deste código é a inclusão de duas bibliotecas, uma já presente na pasta Arduino e outra que precisa ser adicionada. Segue código completo com todas as funções prontas para uso.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
// Código de Verificação para Nível de Água com Display // Arduino IDE Versão 1.8.13 #include "Wire.h"; #include "LiquidCrystal_I2C.h"; #define Sensor1 7 #define Sensor2 8 #define Sensor3 9 #define Sensor4 10 #define Sensor5 11 #define rele 13 LiquidCrystal_I2C lcd(0x27, 16, 2); int sensor1 = 1, sensor2 = 1, sensor3 = 1, sensor4 = 1, sensor5 = 1; int nivelinicial = 0; void setup() { lcd.init(); lcd.backlight(); Serial.begin(9600); pinMode(Sensor1, INPUT); pinMode(Sensor2, INPUT); pinMode(Sensor3, INPUT); pinMode(Sensor4, INPUT); pinMode(Sensor5, INPUT); pinMode(rele, OUTPUT); } void loop() { lcd.clear(); lcd.setCursor(0, 0); lcd.print("Verificando ..."); lcd.setCursor(6, 1); lcd.print("ERRO"); int sensor1 = digitalRead(Sensor1); int sensor2 = digitalRead(Sensor2); int sensor3 = digitalRead(Sensor3); int sensor4 = digitalRead(Sensor4); int sensor5 = digitalRead(Sensor5); if ((sensor1 == 1) && (sensor2 == 1) && (sensor3 == 1) && (sensor4 == 1) && (sensor5 == 1)) { lcd.setCursor(0, 1); lcd.print("Nivel: Cheio"); digitalWrite(rele, LOW); } else if ((sensor1 == 1) && (sensor2 == 1) && (sensor3 == 1) && (sensor4 == 1) && (sensor5 == 0)) { lcd.setCursor(0, 1); lcd.print("Nivel: 100 a 75%"); } else if ((sensor1 == 1) && (sensor2 == 1) && (sensor3 == 1) && (sensor4 == 0) && (sensor5 == 0)) { lcd.setCursor(0, 1); lcd.print("Nivel: 75 a 50%"); } else if ((sensor1 == 1) && (sensor2 == 1) && (sensor3 == 0) && (sensor4 == 0) && (sensor5 == 0)) { lcd.setCursor(0, 1); lcd.print("Nivel: 50 a 25%"); } else if ((sensor1 == 1) && (sensor2 == 0) && (sensor3 == 0) && (sensor4 == 0) && (sensor5 == 0)) { lcd.setCursor(0, 1); lcd.print("Nivel: Critico"); digitalWrite(rele, HIGH); } else if ((sensor1 == 0) && (sensor2 == 0) && (sensor3 == 0) && (sensor4 == 0) && (sensor5 == 0)) { lcd.setCursor(0, 1); lcd.print("Nivel: Vazio"); } else { lcd.setCursor(0, 1); lcd.print("ALERTA - ERRO"); } delay(1000); } |
Este modelo de ligação e código possibilitam a instalação do projeto em diversos locais sem a necessidade direta de um computador para visualização de dados, uma vez que estão estarão sendo exibidos diretamente através do display LCD.
Conclusão
O projeto é extremamente simples e sua funcionalidade extremamente grande, seu funcionamento é básico, mas impressiona. Uma das maiores dificuldades para quem deseja desenvolvê-lo refere-se à sua instalação e métodos de fixação. Para auxiliar no projeto, desenvolvemos uma barra de MDF, uma opção temporária que poderia ser substituída por Acrílico, por exemplo.
As ideias e as possibilidades para utilização junto deste projeto são bastante diversas, a criatividade é a base para um projeto de sucesso. Ponha em prática o que aprendeu, desenvolva suas respectivas melhoras, complete o projeto como entender. Só não se esqueça de compartilhar suas experiências e dúvidas conosco através dos comentários.
Muito bom o artigo parabéns.
Olá Parabéns muito bem feito este projecto, só não consegui perceber uma parte, estou a fazer o projecto com display, e no Esquema de ligação do Sensor de Nível com Display e Conversor I2C, podia me mandar uma imagem aonde o display é ligado, deixo o meu email rpml.agricultura@gmail.com, obrigado.
Olá, com este sistema é possível eu por no meu poço artesiano? 16
60 metros distância do poço até a onde será o quadro. Estou criando um quadro elétrico com proteção e direcionamento para a bomba e gostaria de criar um sistema deste para informar quantos litros tem no meu poço e na minha caixa de água. É possível fazer para este uso? Caso que seja, mudará alguma coisa no projeto?
Bom Dia ! A princípio, desde que sejam desenvolvidos métodos adequados de fixação não teria problema, o problema é realmente a distância do sensor até o quadro de controle. Módulos e sensores normalmente são desenvolvidos para serem instalados o mais próximo possível de dispositivos de controle, além de que este produto utilizado no projeto possui um limite máximo de corrente de 0,5A e interferências internas podem influenciar na leitura.
parabens, você está me ajudando bastante em meus projetos!!
Muito obrigado Italo!
Fico feliz em saber que gostou do meu trabalho.
Consigo realizar o projeto com Arduino mega ?
Boa tarde Leandro!
Sim, este projeto pode ser desenvolvido também através de um Arduino Mega, vale verificar apenas os pinos se irá utilizar os mesmos e caso opte por realizar alguma alteração lembre-se de também alterar o código do projeto.
My brother suggested I would possibly like this blog.
He was once totally right. This submit truly made my day.
You cann’t imagine just how so much time I had spent for this information! Thank you!
Boa tarde!
Fico feliz em saber que o projeto lhe foi útil, continue de olho em nosso blog, sempre que possível estamos adicionando novos projetos.
Oi Matheus meu nome É ELVIS gostaria de um projeto com mais 2 sensores e adcionar uma bomba dagua para ligar no nível baixo, com visor de led ou lcd. vc pode me dar uma força ? ou voce cobra um valor? elvisreginaldo@hotmail.com
Boa Tarde Elvis!
Infelizmente não trabalho com o desenvolvimento de projetos externos, porém com o código disponível aqui é possível desenvolver o que deseja sem dificuldade, basta adicionar mais suas variáveis para o Sensor em #define, pinMode e int assim como as que já existem, adicionar dois comandos if e alterar a lógica de cada um deles para o que deseja.
nao estou conseguindo fazer o download da biblioteca
Boa Tarde manoel silva! Peço desculpas pelo ocorrido, o link já foi inserido novamente e está disponível para acesso.
Muito bom seu projeto, poderia disponibilizar este esquema ou somente o sensor boia.fzpz ou fzz para que eu possa utiliza-lo em meu projeto??
Bom Dia Lucas. Infelizmente o Fritzing não possui um arquivo de imagem para o sensor de nível de água no momento, este esquema de ligação foi complementado em outro software de edição de imagem. Uma dica que posso dar para o desenvolvimento do seu projeto é utilizar no lugar do sensor um reed switch, este já vem incluso no Fritzing e é base para o funcionamento do sensor.
Bom dia,
Pode me ajudar com a placa PCB do projeto com display,
estou começando a estudar, mas estou tendo dificuldade.
Boa Tarde Carlos! Pelo que entendi, gostaria de maiores informações sobre o conversor I2C, então segue outro artigo meu aqui no blog que pode lhe auxiliar: https://www.usinainfo.com.br/blog/projeto-arduino-com-display-lcd-e-adaptador-i2c/
Não foi bem isso.
No esquema da imagem, você ligou os componentes no protoboard, pra mostrar ligação.
Para fazer ele real, preciso desenhar na placa de fenolite por exemplo, esse esquema que precisava.
Boa tarde estou utilizando cod parecido o meu projeto tem 13 sensor de nivel … ele da um erro
sketch_oct21d:1:17: error: expected unqualified-id before numeric constant
#define Sensor1 2
^note: in expansion of macro ‘Sensor1’
int Sensor1 = 1, Sensor2 = 1 ,Sensor3 = 1, Sensor4 = 1, Sensor5 = 1, Sensor6 = 1, Sensor7 = 1, Sensor8 = 1,Sensor9 = 1, Sensor10 = 1, Sensor11 = 1, Sensor12 = 1;
^~~~~~~
exit status 1
expected unqualified-id before numeric constant
consegue me ajudar?
Boa Tarde Luana! Pelo que pude observar, você está duplicando os nomes, por exemplo, para definir o pino do sensor você utiliza “Sensor1” e para definir o estado do sensor você utiliza a mesma nomenclatura “Sensor1”. Se observar no código deste artigo, para indicar o estado dos sensores a palavra sensor está escrita com a primeira letra minúscula, o suficiente para diferenciar ambos os casos.
Olá,existe a possibilidade de acionar uma bomba dagua quando o sensor de nivel baixo estiver acionado e também a colocação de um sensor para não ativar a bomba caso não tenha água na cisterna para não queimar a bomba?
Olá Vander! É possível fazer uma relação de dados para acionar apenas quando o sensor de nível estiver baixa e quando houver água na cisterna, porém terá que incluir sensores de verificação em ambos os locais e realizar as devidas alterações no esquema de ligação e código.
Olá Matheus,teria como ativar um relé quando estiver no nivel critico para ativar uma bomba e se manter ativo até o nivel cheio?,e também ter um buzzer para alertar a ativação do relé?
Olá Vander! É possível fazer este processo sem problema, basta incluir no if de reservatório vazio o comando para acionar a bomba e no if de reservatório cheio um comando para desligar a bomba e acionar um buzzer sem problema.
Olá Matheus estou tentando implementar um rele como no post acima para ativar e desativar uma bomba.
Sou iniciante em arduino seria possível passar algumas dicas de como implementar esse comando.
Olá Andre! Fiz uma atualização no esquema de ligação e no código de funcionamento, agora o projeto já está com módulo relé e Válvula Solenoide incluídos e em funcionamento.
Matheus muito obrigado ficou muito bom. Eu montei e fiz algumas modificações para colocar um botão de acionamento manual
Olá Andre! Perfeito, que bom que deu tudo certo!
Olá Matheus, estou fazendo um sistema com a utilização do mesmo sensor de nível de água, estou utilizando o Fritzing, poderia me dizer se também utilizou e se possível teria o componente disponível para download fzpz? Desde já gradeço
Olá Murilo! Infelizmente para o Fritzing, não encontrei nenhum componente compatível com o Sensor de Nível tipo boia, realizei a finalização do esquema através de um aplicativo de edição de imagem. Mas tenho uma dica para lhe dar, o Sensor de Nível é apenas um case desenvolvido para proteger um sistema de funcionamento via Reed Switch, e este componente você encontra no Fritzing para incluir em seu esquema.
Olá, é possível adicionar mais sensores e fazer a leitura de uma segunda caixa d’água usando essa configuração? grato.
Olá Junior! Para controlar outros sensores e consequentemente outro reservatório, é necessário incluir novos sensores e fazer as devidas alterações no código.