Sensor de Fluxo de Água para Arduino 1-30 l/min

Aplicação e funcionamento: O sensor de fluxo de água é um dispositivo indicado para realizar a verificação do consumo de água de uma residência e, por meio dessa informação,...

Aplicação e funcionamento:

O sensor de fluxo de água é um dispositivo indicado para realizar a verificação do consumo de água de uma residência e, por meio dessa informação, é possível aplicar para os mais diversos fins.

O sensor de fluxo de água trabalha com uma turbina, no seu interior existe um tipo de hélice que ao receber o atrito da água gira, junto a esta hélice temos fixado um íman, e paralelamente ao íman temos um sensor de efeito Hall, esse sensor detecta cada volta dada pelo íman.

Para aplicação prática é necessário a utilização do sensor de fluxo de água em conjunto com uma plataforma de prototipagem, o Arduino, por exemplo, utilizando as portas digitais.
No teste prático abaixo, será realizada a contagem do volume e da velocidade do fluxo da água que estarão passando pelo sensor.

 

Teste prático:

 

Produtos utilizados no teste:

arduino-mega-2560sensor-de-fluxo-de-agua-para-arduino

Sensor de Fluxo de Água

Display LCD 16×2

Arduino Mega

Jumpers

– Resistores

Protoboard

 

Montagem Física (Hardware):

A montagem é simples, basta seguir as orientações da imagem abaixo:

esquema-sensor-de-fluxo-de-agua-para-arduino

 

Funcionamento do Programa (Software):

Nosso software tem a função de realizar a leitura da quantidade de pulsos recebidos pelo sensor de fluxo de água, bem como o intervalo de tempo entre eles, e deste modo calcular através da frequência, a quantidade em litros por minuto, bem como a quantidade total. Além disso, ele tem a função de apresentar as informações no display.                     

Código para teste: Download AQUI

 /*********************************
 ***Autor: Leonardo Dalla Porta****
 ***********02/08/2014*************
 *************Atenção**************
 ***O Codigo esta livre para uso,**
 *desde que seja mantida sua fonte*
 ********e seu autor.**************
 ********Faça um bom uso***********
 ******Att. Equipe UsinaInfo*******
 *********************************/
 
#include <LiquidCrystal.h>
 
float vazao; //Variável para armazenar o valor em L/min
float media = 0; //Variável para fazer a média
int contaPulso; //Variável para a quantidade de pulsos
int i = 0; //Variável para segundos
int Min = 00; //Variável para minutos
float Litros = 0; //Variável para Quantidade de agua
float MiliLitros = 0; //Variavel para Conversão
 
 
LiquidCrystal lcd(8, 7, 6, 5, 4, 3);
 
 
void setup()
{
 Serial.begin(9600);
 
 lcd.begin(16, 2);
 lcd.setCursor( 0, 0);
 lcd.print("Sensoriamento de");
 lcd.setCursor( 0, 1);
 lcd.print(" fluxo de Agua ");
 delay(3000);
 lcd.clear();
 
 pinMode(2, INPUT);
 attachInterrupt(0, incpulso, RISING); //Configura o pino 2(Interrupção 0) interrupção
}
 
 
void loop ()
{
 contaPulso = 0;//Zera a variável
 sei(); //Habilita interrupção
 delay (1000); //Aguarda 1 segundo
 cli(); //Desabilita interrupção
 
 vazao = contaPulso / 5.5; //Converte para L/min
 media = media + vazao; //Soma a vazão para o calculo da media
 i++;
 lcd.setCursor(0, 0);
 lcd.print(vazao); //Escreve no display o valor da vazão
 lcd.print(" L/min "); //Escreve L/min
 lcd.setCursor(0, 1);
 lcd.print(Min);
 lcd.print(":"); //Escreve :
 lcd.print(i); //Escreve a contagem i (segundos)
 lcd.print("Min "); //Escreve :
 MiliLitros = vazao / 60;
 Litros = Litros + MiliLitros;
 lcd.print(Litros);
 lcd.print("L ");
 
 // Neste conjunto de linhas fizemos a média das leituras obtidas a cada 1 minuto
 if (i == 60)
 {
 Min++;
 lcd.print(Min);
 
 if (Min >= 60)
 {
 Min = 0;
 }
 media = media / 60; //faz a média
 Serial.print("nMedia por minuto = "); //Imprime a frase Media por minuto =
 Serial.print(media); //Imprime o valor da media
 Serial.println(" L/min - "); //Imprime L/min
 media = 0; //Zera a variável media para uma nova contagem
 i = 0; //Zera a variável i para uma nova contagem
 }
 
}
 
 
void incpulso ()
{
 contaPulso++; //Incrementa a variável de pulsos
}

Conclusões:

O sensor de fluxo de água é um ótimo dispositivo para você estar aplicando em sua residência. Sua comunicação é simples e seu tamanho reduzido torna mais prático a aplicação em qualquer lugar da casa. Para utilização é necessário alguns adaptadores que podem ser encontrados em qualquer loja de ferragens e materiais hidráulicos. As informações oferecidas pelo sensor são confiáveis e de grande importância para monitorar a quantia de água que esta passando por determinado local, a finalidade de aplicação vai depender da sua necessidade.

 

Autor: Leonardo Dalla Porta

Categorias
ArduinoAutomação Residencial
42 Número de Comentários
  • JOSE MARCOS
    17 julho 2016 at 18:59
    Enviar Resposta

    Olá, sou iniciante no arduino e eu utilizei um sensor de fluxo de água e o esquema elétrico com o sketch postado nesse tópico, no entanto, quando ligo a placa arduino uno na usb, o sensor já começa a contagem mesmo com rotação zero e seu se eu sopro no sensor para ter uma rotação mais alta não faz diferença. O que pode estar acontecendo? Se alguém puder me ajudar agradeço.

  • David
    26 julho 2016 at 08:28
    Enviar Resposta

    Olá. É o seu projecto muito bem. Eu tenho uma pergunta para você. Se em vez de usar um sensor de fluxo 1/2 I utilizar um sensor de fluxo 3/4 (modelo FS300A) Devo fazer as correções no código de programação?

    Muito obrigado.

    David Rodriguez

    educatica2@gmail.com

    • Ana Paula de Oliveira
      29 julho 2016 at 17:08
      Enviar Resposta

      Sim, o código utilizado pode ser o mesmo … somente será necessária alguma alteração caso o projeto seja alterado de alguma maneira.
      Att Equipe Usinainfo

  • HELIO SATO
    18 agosto 2016 at 17:53
    Enviar Resposta

    Olá, sou leigo no assunto, seria possivel instalar um sensor de fluxo de água, junto com um registro de água eletrico, para que quando o volume de consumo de água de casa chegasse a 10 m3, o registro fosse desligado para que cortasse a passagem de água e eu pudesse religar caso quisesse ?

    • Equipe Usinainfo
      19 agosto 2016 at 19:21
      Enviar Resposta

      Boa Tarde Helio, é possível sim. Vai depender somente do esquema de instalação do seu projeto e do código utilizado para o funcionamento do mesmo.
      Att Equipe Usinainfo

  • Vinicius teodosio
    1 setembro 2016 at 16:12
    Enviar Resposta

    Boa tarde, gostaria de saber qual o valor do resistor utilizado.

    Ótimo conteúdo, parabéns.

    Vinicius Teodosio

    • Equipe Usinainfo
      1 setembro 2016 at 18:47
      Enviar Resposta
      • Miguel alt
        16 outubro 2016 at 00:16
        Enviar Resposta

        Olá
        Gostaria de entender do que se trata o pequeno quadrado azul ao lado do lcd

        Agradeço desde já

        Miguel Alt

        • Equipe Usinainfo
          21 outubro 2016 at 17:08
          Enviar Resposta

          Boa Tarde ! O componente azul presente no projeto é um trimpot e tem a função de regular o contraste do display, tornando-se fundamental em seu projeto e podendo ser substituído por um potenciômetro. Em determinados casos usa-se um resistor para diminuir o brilho da luz de fundo, porém a utilização do mesmo não se torna obrigatória para o seu projeto.
          Att Equipe Usinainfo

  • Lucas Moraes
    2 dezembro 2016 at 13:38
    Enviar Resposta

    Olá, eu comprei um sensor de vazão de 0,3 a 6L/min, gostaria de saber qual é a relação de pulsos e quantidade de litros, pois neste é de 5.5 e neste meu sensor não está funcionando. Se puderem me responder o mais breve possível eu ficaria muito agradecido.

  • Stephanie santos
    19 janeiro 2017 at 01:52
    Enviar Resposta

    Olá Leonardo Dalla,

    Gostei muito do seu projeto, porém estou com uma duvida, na imagem da montagem Física é usado o arduino UNO e um display de LCD, qual é o nome do componente azul que esta localizado do lado esquerdo do display, por gentileza.

    • Equipe Usinainfo
      23 janeiro 2017 at 13:29
      Enviar Resposta

      Olá, O componente azul presente no projeto é um trimpot e tem a função de regular o contraste do display, tornando-se fundamental em seu projeto e podendo ser substituído por um potenciômetro.
      Att Equipe Usinainfo

  • MARCOS CHAPRÃO
    20 fevereiro 2017 at 03:34
    Enviar Resposta

    Olá, gostaria de saber como faço para ler 3 sensores, como ficaria o código.

    Desde já agradeço.

    • Equipe Usinainfo
      9 março 2017 at 14:56
      Enviar Resposta

      Bom dia!
      A leitura de 3 sensores vai precisar de uma alteração física de seu projeto já que terá que escolher outros pinos para
      conexão de seus sensores e terá que adaptar o código adicionando novas variáveis e novos comandos ao seu código fonte.
      Att Equipe Usinainfo

  • Stephanie santos
    22 fevereiro 2017 at 14:24
    Enviar Resposta

    Bom dia,

    Eu tentei reproduzir o projeto, porém não estou conseguindo ligar o display com o sensor.
    Acredito que seja por causa da potencia do Resistor, posso estar usando um que não potente o suficiente, Qual a potencia do resistor que foi utilizado no projeto.

  • Pedro Rela
    17 março 2017 at 01:47
    Enviar Resposta

    Boa noite!

    não estou conseguindo rodar o codigo juntamente com um LCD 16×2 via I2C.
    Tudo funciona perfeitamente utilizando o monitor serial, mas quando coloco para “aparecer” qualquer tipo de informação no LCD o arduino simplesmente para de funcionar… Ele coleta o primeiro dado, apresenta no monitor serial, e depois para…

    você saberia dizer se este tipo de interrupção interfere com a comunicação I2C?

    obrigado!

    • Equipe Usinainfo
      17 março 2017 at 20:06
      Enviar Resposta

      Boa tarde! O código não foi desenvolvido para ser utilizado com display I2C,
      você realizou o ajuste no código para adaptação?

  • Daniel
    23 março 2017 at 14:32
    Enviar Resposta

    Bom dia,

    Com esse sensor, qual a máxima taxa de amostragem que ele é capaz de fornecer?
    Observei que nesse código ele disponibiliza uma medição a cada 1 segundo. É possível obter mais amostras por segundo?

    • Equipe Usinainfo
      24 março 2017 at 11:55
      Enviar Resposta

      Bom dia.
      A maior taxa de amostragem vai depender do seu código e do limite que irá definir previamente.
      O código pode ser alterado como desejado com o intuito de aumentar e diminuir precisão, vale
      cuidar somente para não exceder a sua capacidade.
      Att Equipe Usinainfo

  • Marcelo
    23 março 2017 at 16:50
    Enviar Resposta

    Boa tarde
    Gostaria de colocar um medidor de fluxo de agua de 1 polegada, teria que alterar e se alterar onde na programação ?
    Obrigado

    • Equipe Usinainfo
      27 março 2017 at 19:57
      Enviar Resposta

      Boa tarde!
      A princípio a bitola do cano não interfere na programação do equipamento,
      porém vale ressaltar que o mesmo precisará de um adaptador e a pressão que
      flui pelo sistema deve respeitar a igualdade de x ≤ 1.75MPa.

      Att Equipe Usinainfo

  • gUILHERME
    6 abril 2017 at 18:02
    Enviar Resposta

    Boa tarde, tenho dúvida em relação a constante para conversão de L/M, ela sofrerá variações se a pressão do sistema mudar? o projeto que desejo é ligar ela na rede de água residêncial, e aos finais de semana a pressão sempre decai, obrigado!

    • Equipe Usinainfo
      17 abril 2017 at 12:16
      Enviar Resposta

      Bom dia! A pressão da água que flui pelo cano do sensor não é fator de ajuste junto ao código,
      vale somente respeitar o nível máximo da pressão que o equipamento suporta.
      Att Equipe Usinainfo

  • Diego
    20 maio 2017 at 04:37
    Enviar Resposta

    Preciso ligar dois sensores deste em um Arduíno. é Possível? Não estou conseguindo. Todos só funcionam na porta digital dois do Arduíno.

    • Equipe Usinainfo
      22 maio 2017 at 14:08
      Enviar Resposta

      Bom dia Diego!
      A instalação de dois sensores de fluxo será possível somente com a adaptação do código para mais de um equipamento,
      pois este projeto foi desenvolvido somente para utilização de um sensor.
      Att Equipe Usinainfo

  • Nelson
    6 junho 2017 at 20:33
    Enviar Resposta

    Olá, na primeira etapa do texto fala que foi utilizado um arduíno Mega, mas no esquema de ligação temos um arduíno uno. Pode-se utilizar um arduíno uno então?

    • Equipe Usinainfo
      7 junho 2017 at 20:23
      Enviar Resposta

      Boa tarde!
      Este código e este esquema de ligação podem ser utilizados com Arduino UNO sem problema.

  • Nelson
    8 junho 2017 at 00:15
    Enviar Resposta

    Obrigado! Excelente site. Recomendo a todos os amigos. Mais uma dúvida: Como foi feita a conexão dos jumpers com as entradas no display? Foi feita alguma solda? Ou apenas “encostou”o jumper no orifício e conectou na protoboard? Obrigado!

    • Equipe Usinainfo
      12 junho 2017 at 19:10
      Enviar Resposta

      Boa tarde!
      Para o desenvolvimento deste projeto, foi soldados junto ao display uma barra de pinos, o simples contato do jumper não assegura a funcionalidade do projeto.
      Att Equipe Usinainfo

  • Nelson
    11 junho 2017 at 01:34
    Enviar Resposta

    Obrigado pela resposta! Mais uma coisa: Qual o valor do resistor usado? Parabéns pelo site!

    • Equipe Usinainfo
      12 junho 2017 at 19:46
      Enviar Resposta

      Olá Nelson, você pode utilizar um resistor de aproximadamente 100 Ohms.
      Att

  • Jose Cavalcante neto
    17 agosto 2017 at 23:18
    Enviar Resposta

    Olá, muito bom seu projeto. Quero utilizar essa tecnologia para calcular o volume total de uma passagem de CO2 por uma tubulação. É possível utilizar esse método de medição para gases ao invés de água? Agradecido

    • Equipe Usinainfo
      24 agosto 2017 at 20:46
      Enviar Resposta

      Boa tarde!
      Este sensor é desenvolvido com o intuito de controlar o Fluxo de água, a utilização do mesmo para o controle de Ar pode apresentar incompatibilidade com o valor real que circula no seu sensor.

  • marcelo baffeo
    15 setembro 2017 at 18:34
    Enviar Resposta

    Olá boa tarde, gostaria de saber como eu posso multiplicar esse valor que o sensor me dá em litros por exemplo 20 centavos ?,para eu pode comparar com minha conta de água mensal, pois vi que um litro aqui na região onde resido o litro é quase 20 centavos.

    • Equipe Usinainfo
      26 setembro 2017 at 19:09
      Enviar Resposta

      Boa tarde!
      Para isto basta adicionar uma variável que realize a multiplicação do valor obtido pelo valor fixo de cada litro, é simples e totalmente possível de ser realizado.
      Qualquer duvida estamos a disposição.
      Att Equipe UsinaInfo

  • Jeconias
    23 setembro 2017 at 16:46
    Enviar Resposta

    Boa tarde. Através desse mesmo projeto, pode-se adicionar quatro sensores de fluxo de água no Arduíno e armazenar os dados coletados por exemplo; durante o final do dia para cada sensor individualmente. Sendo que ao desligar o sistema, as informações não serão perdidas?

    • Equipe Usinainfo
      26 setembro 2017 at 19:08
      Enviar Resposta

      Boa tarde!
      É possível adicionar mais sensores de fluxo em seu projeto sem problema, cada um terá sua porta independente e consequentemente seus valores individuais, basta somente realizar as alterações necessárias junto ao código base disponibilizado em nosso projeto. Quanto a obtenção de dados, pode ser feita através de um cartão SD que você retira do projeto sempre que desejar acessar os dados obtidos durante o dia ou através de uma memória EEPROM para mandar estes dados através de um meio de comunicação como Ethernet, Blueooth ou até mesmo através de um GSM.
      Att Equipe UsinaInfo

  • Emerson Santos
    11 outubro 2017 at 19:10
    Enviar Resposta

    Olá, boa tarde, sou iniciante com programação amigo, vc poderia me dizer como faço para armazenar o valor em litros do consumo mensal?,para que eu possa comparado com a conta enviada pela concessionária. ou seja eu teria que coletar os valores coletados durante os 30 dias do mês e depois multiplicar por 30, daí eu tbm poderia pegar esse total em litro e multiplicar pelo valor do litro por hora e ver se bate com o valor da minha conta de água.
    desde já obrigado Usinainfo!!!

    • Equipe Usinainfo
      11 outubro 2017 at 20:47
      Enviar Resposta

      Boa tarde Emerson!
      Você pode armazenar os dados tanto em uma memória EEPROM quanto em um cartão SMD, vai depender do seu projeto.
      Vale ressaltar porém que como vai ser um equipamento de leitura contínua, necessitaria de um sistema de alimentação com bateria, por exemplo, para os casos em que acabe a luz.
      Att Equipe UsinaInfo

  • Alex
    7 novembro 2017 at 01:25
    Enviar Resposta

    Boa noite!

    Estou com projeto de TCC utilizando o sensor de vazão porem para economizar portal digital do arduino UNO, utilizo adaptador I2C. A unica alteração que realizei foi na biblioteca onde o código ficou dessa forma :

    #include
    #include

    float vazao ; //Variável para armazenar o valor em L/min
    float media = 0; //Variável para fazer a média
    int contaPulso; //Variável para a quantidade de pulsos
    int i = 0; //Variável para segundos
    int Min = 00; //Variável para minutos
    float Litros = 0; //Variável para Quantidade de agua
    float MiliLitros = 0; //Variavel para Conversão

    LiquidCrystal_I2C lcd(0x27,16,2);

    void setup()
    {

    lcd.init(); // initialize the lcd
    lcd.backlight();
    lcd.begin(0x27,16,2);
    lcd.setCursor(0, 0);
    lcd.print(“Sensoriamento de”);
    lcd.setCursor(0, 1);
    lcd.print(” fluxo de Agua “);
    delay(10000);
    //lcd.clear();

    pinMode(4, INPUT);
    attachInterrupt(0, incpulso, RISING); //Configura o pino 2(Interrupção 0) interrupção
    }

    void loop ()
    {
    contaPulso = 0;//Zera a variável
    sei(); //Habilita interrupção
    delay (10000); //Aguarda 1 segundo
    cli(); //Desabilita interrupção

    vazao = contaPulso / 5.5; //Converte para L/min
    media = media + vazao; //Soma a vazão para o calculo da media
    i++;
    lcd.setCursor(0, 0);
    lcd.print(vazao); //Escreve no display o valor da vazão
    lcd.print(” L/min “); //Escreve L/min
    lcd.setCursor(0, 1);
    lcd.print(Min);
    lcd.print(“:”); //Escreve :
    lcd.print(i); //Escreve a contagem i (segundos)
    lcd.print(“Min “); //Escreve :
    MiliLitros = vazao / 60;
    Litros = Litros + MiliLitros;
    lcd.print(Litros);
    lcd.print(“L “);

    // Neste conjunto de linhas fizemos a média das leituras obtidas a cada 1 minuto
    if (i == 60)
    {
    Min++;
    lcd.print(Min);

    if (Min >= 60)
    {
    Min = 0;
    }
    media = media / 60; //faz a média
    Serial.print(“\nMedia por minuto = “); //Imprime a frase Media por minuto =
    Serial.print(media); //Imprime o valor da media
    Serial.println(” L/min – “); //Imprime L/min
    media = 0; //Zera a variável media para uma nova contagem
    i = 0; //Zera a variável i para uma nova contagem
    }

    }

    void incpulso ()
    {
    contaPulso++; //Incrementa a variável de pulsos
    }

    O código compila e o texto é apresentado no display, porem ao colocar água no recipiente as informações não são apresentadas.

    Desde já obrigado Usinainfo pelo fórum.

    • Equipe Usinainfo
      9 novembro 2017 at 13:52
      Enviar Resposta

      Bom dia! Quando trabalhamos com equipamentos de comunicação I2C um dos maiores problemas que encontramos refere-se ao endereçamento, antes de mais nada, verifique o endereço do seu conversor I2C para constatar se não está com algum problema neste detalhe.

  • Celso
    20 novembro 2017 at 12:40
    Enviar Resposta

    Muito bom! Mais didático que isso, impossível.

  • Enviar Resposta

    *

    *

    Sobre nós

    Hoje a Usinainfo é um dos maiores ecommerces de Ferramentas, Peças para Eletrônica, Componentes Eletrônicos, Sensores e Arduino do Brasil, contando com uma grande diversidade de produtos na linha de eletrônica.

    Sugestões

    Artigos Relacionados