O Sensor de Fluxo de Água é um produto que vinculado ao Arduino consegue agregar grande importância nos mais diversificados projetos e aplicações residenciais ou em geral. Auxiliando na sustentabilidade e na economia de diversas residências e empresas, o medidor de vazão possibilita medir em litros por minuto, por exemplo, o consumo de água nestes locais.
As aplicações que envolvem o Sensor de Fluxo de Água são extremamente grandes, podemos utiliza-lo tanto individualmente para a medição de fluxo como associado a outros produtos em projetos mais complexos. Podemos atribuir o mesmo a uma residência e controlar o fluxo de água isolado ou geral, possibilitando cortes de fornecimento ou alarmes para alto consumo.
O funcionamento do Sensor de Fluxo de Água baseia-se em uma turbina estilo hélice que gira conforme o fluxo de água e detecta a quantia de voltas dadas. A leitura dos dados faz-se através de um íman posicionado em uma das pás da hélice e paralelamente a um sensor de efeito hall, responsável pelo envio de sinal digital.
Como mencionado anteriormente, o equipamento possui um sistema de comunicação digital, o que faz-se necessária a utilização de um microcontrolador para sua interpretação, utilizamos em nosso projeto o Arduino UNO.
TESTE PRÁTICO:
PRODUTOS UTILIZADOS NO TESTE:
– Sensor de Fluxo de Água G 1/2 1-30 l/min;
– Display LCD 16×2 com fundo azul;
– Protoboard 830 Pontos para Projetos;
– Jumper Premium para Protoboard Macho-Macho;
MONTAGEM FÍSICA (HARDWARE):
A montagem física que envolve o projeto de Sensor de Fluxo de Água conta com uma quantia reduzida de equipamentos e faz-se parcialmente complexa apenas pela ligação do Display LCD. Como base para leitura e interpretação de dados utilizou-se o Arduino UNO e além deste, podemos destacar o potenciômetro para regulagem do contrate do display.
Nota: Antes da atualização do presente artigo, tinha-se utilizado para ajuste do contraste um trimpot, porém optamos por substituir o mesmo por um potenciômetro.
Abaixo, temos a montagem completa do projeto com seus respectivos produtos posicionados e ligados de maneira que execute as suas devidas funções.
FUNCIONAMENO DO PROGRAMA (HARDWARE)
O software para Sensor de Fluxo de Água tem a função de realizar a leitura da quantidade de pulsos gerados pelo sensor e o intervalo de tempo entre eles. Posteriormente, com os dados obtidos, o mesmo calcula a frequência, a quantia em litros e a somatória de litros que passa pelo sensor e imprime os dados em um display.
O código é extremamente simples e conta com apenas uma biblioteca, a biblioteca “LiquidCrystal.h”, originalmente já instalada com o software Arduino e de fácil acesso. Veja abaixo o código comentado e devidamente configurado de acordo com o esquema de ligação demonstrado anteriormente:
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 |
/********************************* ***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ÃO
O Sensor de Fluxo de Água é um produto que possibilita uma gama de aplicações bastante diversificada, podendo ser utilizado tanto em projetos de automação residencial quanto em projetos industriais.
A sua utilização mostra-se fácil quanto a sua conexão simplificada de apenas três fios sendo destes, dois fios para a alimentação do produto e um para comunicação de dados. A programação conta com variáveis simples de fácil compreensão, todas as conversões já estabelecidas e todas as linhas comentadas a fim de melhorar a sua usabilidade.
A capacidade de verificar a quantia de água que passa por um sistema hidráulico transforma o Sensor de Fluxo de Água um produto bastante usual. Pode ser aplicado em sistemas de monitoria como no projeto que desenvolvemos ou atribuído a um relé para a interrupção de líquidos. Sua finalidade vai depender da sua necessidade.
Desenvolva este projeto com Sensor de Fluxo em sua casa ou empresa, aplique-o nos mais diversificados ambientes e não se esqueça de compartilhar conosco suas experiências, dúvidas e ideias.
Confira a nossa linha de completa de Sensores Arduino em: https://www.usinainfo.com.br/sensores-para-arduino-474
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.
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
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
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 ?
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
Boa tarde, gostaria de saber qual o valor do resistor utilizado.
Ótimo conteúdo, parabéns.
Vinicius Teodosio
Olá Vinicius, que bom que gostou.
Sobre o resistor você consegue visualizar mais informações acessando o link do produto: link http://www.usinainfo.com.br/resistores/resistor-330r-14w-kit-com-10-unidades-2977.html.
Qualquer dúvida estamos a disposição.
Olá
Gostaria de entender do que se trata o pequeno quadrado azul ao lado do lcd
Agradeço desde já
Miguel Alt
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
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.
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.
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
Olá, gostaria de saber como faço para ler 3 sensores, como ficaria o código.
Desde já agradeço.
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
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.
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!
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?
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?
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
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
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
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!
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
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.
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
Bom dia. Excelente o tratde vcs. Estou iniciando e gostaria de substituir o display por informações direto no celular. Vcs tem esse projeto?
Boa Tarde Alexandre! Para a notificação via celular, o único projeto que temos atualmente faz uso de um GSM SIM800L, segue link do projeto: https://www.usinainfo.com.br/blog/projeto-sensor-de-umidade-do-solo-arduino-com-alerta-por-sms/
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?
Boa tarde!
Este código e este esquema de ligação podem ser utilizados com Arduino UNO sem problema.
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!
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
Obrigado pela resposta! Mais uma coisa: Qual o valor do resistor usado? Parabéns pelo site!
Olá Nelson, você pode utilizar um resistor de aproximadamente 100 Ohms.
Att
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
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.
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.
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
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?
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
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!!!
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
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.
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.
Muito bom! Mais didático que isso, impossível.
Olá, qual a perda de carga que esse sensor causa na rede? Obrigado.
Boa tarde!
Infelizmente esta informação não é disponibilizada pelo nosso fornecedor.
gostaria de saber se esse mesmo esquema pode ser utilizado para constatar corte no abastecimento de agua?
Boa tarde!
Este projeto verifica o fluxo de água, para constatar a interrupção de água, por sua vez seria necessária a alteração do código e os devidos ajustes junto ao mesmo e ao projeto para gerar um sinal de alerta, no caso.
Boa tarde, oq eu mudaria no código pra saber o total ao invés da média, ex: eu ligo uma mangueira nele por 30 segundos queria saber o total de aguá que passou nesse intervalo é possível? basta mudar somente a regra do calculo ?
Boa tarde Marcos!
Este mesmo código possui ambas as funcionalidades, além de apresentar a média de l/min, também apresenta a quantia total em litros que passou pelo mesmo.
Boa noite,
gostaria de saber as vazões minimas e máximas que o sensor é recomendado.
estou querendo montar ele para medir vazões de córregos.
Vocês teria algum sensor ou esquema que possa ser utilizado nesse meu propósito?
uma especie de medidor de nível, (a cada centímetro) para ser instalado em uma Calha Parshall?
desde já agradeço
Bom dia Hermínio!
A vazão do referente produto é de 1L/min à 30L/min.
Infelizmente até o momento não possuímos um produto que meça centímetro à centímetro o nível de água.
ola usinainfo fiz algumas alteraçoes no codigo para i2c e ao iniciar o programa tudo vai bem mas quando chega ao contador a tela nao apresenta nada
Bom dia Luis!
Você está setando o valor convertido no local certo?
Não apagou nenhuma variável de conversão que poça estar dando interferência no funcionamento?
Pessoal, tudo bem?
Gostaria de saber se ao desligar o o projeto da energia e zera tudo, ou seja, em uma falta de energia, eu perderia toda a info que o arduíno colocou.
Se eu necessitaria colocar bateria para assumir na falta de energia.
Obrigado e parabéns pelo site.
Olá Ricardo!
Sim, se o Arduino se desligar o mesmo para de coletar os dados e temporariamente para de realizar a leitura, existe a possibilidade de manter junto ao projeto um cartão de memória, por exemplo, para realizar a captura dos dados, porém a utilização de uma bateria não interromperia a leitura agregaria ainda mais funcionalidades ao seu projeto.
Fiz a ligação como consta no site, no entanto só aparecem quadradinhos, mas não sei se o LCD é o mesmo. Tem como dizer qual pino é qual pra eu confirmar a ligação?
Bom dia Júlio!
Caso tenha incluso o trimpot ou o potenciômetro, este problema pode ser resolvido girando os mesmos até obter a visibilidade dos caracteres, caso não tenha incluso, a utilização de um dos mesmos é fundamental para o projeto.
Bom dia. Qual Software vocês utilizam para fazer o desenho dos circuitos elétricos? Notei que este possui o Sensor de Controle de Fluxo, os que eu utilizo não tem muitas opções de sensores. Desde já agradeço.
Olá Ana!
Comumente utilizamos o Fritzing para desenvolver os esquemas de ligação, porém quando o mesmo não possui os sensores que utilizamos, acrescentamos os mesmos através de editores de imagem e utilizamos as imagens próprias de nossos banco de dados.
Ola boa tarde, tenho um sensor de 3/8 não lê corretamente o valor de litro. Na constante 5.5 do codigo deveria mudar para qual valor sabendo que o meu sensor é de 3/8 ou como fazer a conta para chegar no valornda constante?
Obg
Bom dia Riki!
Infelizmente desconhecemos a utilização de sensores de fluxo de água de 3/8 e até o momento não desenvolvemos nenhum projeto com o mesmo para lhe garantir a exatidão na obtenção dos dados.
Boa noite.
Super interessante o projeto de vocês. Tem inclusive mais do que precisava.
No entanto, algumas dúvidas:
1. Não compreendi o que faz as linhas:
sei(); //Habilita interrupção
cli(); //Desabilita interrupção
2. A linha cli(); tenho que deixar como comentário para funcionar. Caso contrário, após apresentação, nada aparece.
3. A linha: vazao = contaPulso / 5.5; Consta a constante 5,5. Por que deste valor? Há necessidade de mudar dependendo projeto ou modelo do equipamento?
Bom Dia Jonas!
Obrigado pelo reconhecimento. As funções sei() e cli() organizam a interrupção e liberação de dados, funcionando como uma chave geral.
A princípio não é necessário comentar a variável cli(), em meus testes sempre mantive como está no código exemplo.
A constante 5,5 neste caso determina o fator de relação existente entre o fluxo de água e a bitola do sensor de fluxo. Se mudar para outro modelo de sensor com diferente bitola, esta é a constante que deverá ser alterada para garantir a exatidão das leituras.
Bom dia, teria como programar a contagem de tempo a partir de outra variável, e caso essa variável parasse o tempo congelasse, se iniciando de onde parou quando a varíavel reiniciasse.
Boa tarde!
O processo de contagem utiliza como base os resultados obtidos e armazenados em sua memória, caso estes dados estejam arquivados em meios de consulta como cartões SD que possam ser acessados a qualquer momento podem também ser utilizados como parte do seu projeto.
Estou com o mesmo problema do Alex. Adaptei o código para o módulo I2C acoplado no display:
#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,2,1,0,4,5,6,7,3, POSITIVE);
void setup()
{
Serial.begin(9600);
lcd.setBacklight(HIGH);
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 / 9.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
}
Ele aparece a primeira mensagem definida no setup, e depois não aparece mais nada. Alguma sugestão ou idéia?
Olá!
Maiores informações quanto a adaptação e alterações junto ao código você pode encontrar através do nosso artigo “COMO ALTERAR O CÓDIGO ARDUINO PARA DISPLAYS COM I2C”, seguinte link: https://www.usinainfo.com.br/blog//modulo-adaptador-i2c-com-display-lcd-20×4-como-alterar-o-codigo-arduino-para-displays-com-i2c/
Bom dia, vi que usa a interrupção para receber os dados, posso montar sem usar isso, a variavel recebe a leitura do digital 7 por exemplo ou causa alguma inconsistência?
Olá Ederson, para este projeto optamos por permanecer com o pino de interrupção sem alterá-lo devido ao fato de que ele prioriza os dados coletados pelo sensor mesmo que existam outros equipamentos conectados ao sistema, um recurso que melhora a coleta de dados e traz maior qualidade ao projeto.
Olá usina,
Estou com um projeto para montar porém o display não apresenta se o sistema está ok ou não.
Fica todo bagunçado as mensagens..
PODERIA ME AJUDAR???
SOBRE UM SENSORIAMENTO DE FLUXO DE ÁGUA.
Boa Tarde Elielton!
O que dá para se observar com suas informações é que possivelmente o problema esteja em seu código, verifique o código e o sistema de comunicação utilizado pelo mesmo para diagnosticar o problema.
Caso esteja utilizando o nosso exato código, verifique a conexão dos seus cabos, se não estão com mal contato e se estão conectados da mesma maneira que a expressa em nossa imagem de ligação.
é so vc colocar lcd.print(DEC, vazao) só assim vc vai conseguir exibir no display, faz os testes ae e poste novamente se deu certo.
Olá, ótimo post. Só uma dúvida, em todos os códigos que eu vejo sobre esse sensor, utiliza-se a porta 2 como input. Eu gostaria de saber como alterar essa porta, já alterei a linha em que define a porta 2 coloquei o jumper na outra porta que eu defini, porém o sensor não faz a leitura. tem alguma outra modificação a se fazer ? desde já obrigado!
Boa Tarde Hitalo!
Existe um porque de sempre se utilizar a porta 2 nos projetos com este sensor, no Arduino as portas 2 e 3 são as únicas portas de interrupção, ou seja, elas interrompem sempre todas as suas demais funções para dar preferencia a leitura dos equipamentos conectados a ela, ou seja, caso deseje alterar a porta utilizada pelo sensor no Arduino UNO, as duas portas indicadas são apenas a porta 2 e 3.
Alguém tem o projeto elétrico do medidor de fluxo?
Boa tarde!
Infelizmente o referente produto não possui um esquema elétrico disponível pelos fornecedores, porém maiores informações quanto o mesmo você encontra em: https://www.usinainfo.com.br/blog/sensor-de-fluxo-de-agua-arduino-como-sensor-de-vazao-para-projetos/
olá, eu comprei os componentes aqui antes da atualização do site e onde não havia potenciômetro e havia um modelo de montagem. Eu montei o arduino seguindo seguindo aquele modelo, porém com o código atual. Vocês poderiam me passar o codigo anterior pois não estou conseguindo fazer meu arduino funcionar.
Boa Tarde Gianluca!
O código do projeto não foi alterado, apenas a imagem, porém o esquema de ligação utilizado é o mesmo.
Colocamos o Potenciômetro no lugar do trimpot que existia antes, porém a funcionalidade de ambos é a mesma.
Se eu utilizar uma Bateria de 9V para ligar o sensor, preciso de resistores? E se sim, qual?
Olá Pedro!
É possível utilizar uma bateria de 9V para alimentar o sensor, porém a utilização do resistor vai depender dos detalhes do projeto e a sua aplicação.
Qual a diferença entre as barras de pinos do display para efetuar a compra?
Bom Dia HERBERT! A Barra de pinos diferencia-se fundamentalmente pelo seu ângulo de instalação que pode ser de 180 ou 90 graus, para a instalação no display recomendo a utilização de uma barra de pinos de 180º.
Bom dia Matheus,me ajudou bastante. Mas eu precisava que o tempo inicie quando o sensor comece a girar. seria possível? Muito Obrigado.
Bom Dia Aguinaldo! Que bom que lhe foi útil este projeto, quanto a temporização, ela pode ser acionada quando estiver passando líquidos através de um if que inicie a contagem sempre que a vazão for maior que 0, por exemplo.
Boa tarde, vocês sabem se pode passar gasolina por este sensor?
Boa Tarde Jose! Não é recomendada a utilização do sensor de fluxo com gasolina infelizmente, este tipo de liquido pode diminuir a vida útil do dispositivo e causar danos ao mesmo.
Bom dia, gostaria de saber se posso armazenar essa informação em uma variável durante um di, no final do dia enviar via post para uma API php?
Boa Tarde Rafael! Por sinal compartilhei recentemente um artigo que demonstra um sistema de funcionamento bastante semelhante com este, porém enviamos os valores para o cartão SD, através das devidas alterações é possível sim, verifique o exemplo que citei: https://www.usinainfo.com.br/blog/esp32-projeto-com-sensor-de-fluxo-de-agua-para-monitoramento-via-wifi/
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.
Esse o primeiro comentário… esta acontecendo a mesma coisa, mesmo com o sensor de fluxo parado fica incrementando valores no display… Poderia me ajudar??
Boa Tarde Rogério! Tente verificar a conexão do sensor de fluxo, normalmente os seus fios são da cor vermelho, amarelo e preto, tente verificar se é mesmo o fio amarelo que está conectado à porta digital do projeto e se este está na porta D2 (terceiro pino).
Bom dia, Matheus.
Tudo bem ?
Gostaria de saber se é possível visualizar a leitura do sensor de fluxo através do computador ou via aplicativo de celular ?
Tem como enviar passar seu e-mail ?
Atte,
Lucas Figueiredo
Boa Tarde Lucas! Uma das melhores opções para exibição de dados via Computador ou celular é através do artigo que segue: https://www.usinainfo.com.br/blog/esp32-projeto-com-sensor-de-fluxo-de-agua-para-monitoramento-via-wifi/
Tudo bem. Gostaria de comprar medidor de fluxo de água de 1/4 junto com o display e tudo que é necessário para montar o Arduino e etc e a programação bem simples que apenas mede a quantidade de fluxo
Olá Elton! Todos os produtos necessários para montar o referido projeto estão disponíveis no site da Usinainfo e lincados neste artigo.
Bom dia gostaria de saber se consigo progamar minuto vazão e se consegue gravar essas eleitura de minuto a minuto.
Boa tarde!
Sim é possível realizar estas leituras, a leitura de vazão por minuto já é feita em L/min, basta adaptar para gravar aonde deseja, a cada minuto.