fbpx

Sensor de Fluxo de Água: Medindo a vazão com Arduino

O Sensor de Fluxo de Água 1/2″ – YF-S201 é um dispositivo usado para medir o volume ou a massa em fluxo de um gás, ou líquido que passa por uma turbina. Neste tutorial aprenderemos como usá-lo e visualizaremos como este pequeno componente funciona.

kit robotica educacional com Arduino ESP ou Microbit

O  que é o Sensor de Fluxo de Água?

Este componente, como todos os outros sensores, trabalha com os conceitos físicos.

– Funcionamento

Portanto, o Sensor de Fluxo de Água possui como componentes o sensor hall, a vedação externa, a turbina, um imã e a carcaça para juntar todos esses componentes como na imagem abaixo:

Imagem interna do sensor de vazão de água

Como podemos observar quando a água flui através da entrada até a turbina, esta gira e a velocidade muda conforme o fluxo de água aumenta ou diminui e enquanto as turbinas estão exercendo seu trabalho, o imã e o sensor de efeito Hall realiza a leitura e emite um sinal de pulso, respectivamente. Mas como assim? Bom, a leitura da vazão funciona da seguinte forma. Quando a água passa pela turbina, ela gira e detecta a quantia de voltas dadas. A leitura desses dados se faz pelo ímã, o qual possui um polo norte e um polo sul, posicionado em uma das pás da turbina, e o sensor de efeito hall de forma paralela envia o sinal digital para o microcontrolador e por fim a água sai pelo outro lado.

Ps: Quanto maior a intensidade da água por minuto maior será a contagem de pulsos.

Os terminais deste sensor de vazão são:

  • VCC(vermelho) – Tensão de entrada, entre 3,3 a 5 volts
  • GND(preto) – O pino de O V do módulo, conectado ao GND do Arduino ou fonte
  • Saída Digital(amarelo) – Pino de saída digital de contagem de pulsos por minuto
Módulo do sensor de vazão de água
Módulo do sensor de vazão de água

 

Mãos à obra — Configurando um Sensor de Fluxo de Água

Componentes Necessários

– Montando o projeto com Sensor de vazão de água

Primeiramente, conecte o terminal preto do sensor de fluxo no GND do Arduino e o terminal vermelho no 5V do Arduino e conecte o terminal amarelo será conectado no pino digital D2, como mostra o diagrama abaixo:

Diagrama do sensor de fluxo de água
Diagrama do sensor de fluxo de água

– Programando o Arduino para usar o Sensor de fluxo de água

Agora, que já montamos nosso projeto, vamos conectar o arduino no computador e abrir a IDE arduino.  Escreva o programa abaixo na IDE e compile o programa para o seu Arduino.

Para isso, antes de carregar o programa, você precisa selecionar qual porta você deseja usar para fazer o carregamento do seu programa no Arduino (upload). Dentro do Arduino IDE, clique no menu Ferramentas (tools) e abra o submenu Porta(Port). Em seguida, clique na porta que seu Arduino está conectado, tal como COM3 ou COM4. Geralmente aparece o nome da placa Arduino : “COM3 (Arduino/Genuino Uno)”.

int contaPulso; //Variável para a quantidade de pulsos

void setup(){
  Serial.begin(9600);
  pinMode(2,INPUT);
  attachInterrupt(0,incpulso,RISING); //Configura o pino 2(Interrupção 0)interrupção
  
}


void loop(){
  
sei(); //Habilita interrupção
delay(1000);
cli(); //Desablilita interrupção
if(contaPulso>0){
  Serial.print("Contagem de Pulsos");
  Serial.println(contaPulso);
}
else{
  Serial.println("Sem pulsos");
}
contaPulso = 0;
}

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

 

– Testando o funcionamento do Sensor de vazão de água

Enfim, caso tudo estiver correto o resultado será igual à imagem abaixo. 

Imagem do circuito do sensor de fluxo de água
Imagem do circuito do sensor de fluxo de água

 

Dessa forma, visualizamos o sensor funcionando através do monitor serial já que nos inicializamos ele com a função Serial.begin(9600) basta clicar na lupa no canto direito superior da IDE Arduino como na imagem abaixo:

Monitor serial coletando dados do sensor de vazão
Monitor serial coletando dados do sensor de vazão

 

Entendendo a fundo

Software

– Definições e variáveis utilizadas no projeto

Primeiramente, nesta instrução declaramos uma variável para podermos usá-la em nosso programa. Neste caso, a variável que declaramos é do tipo int, ou seja, possui dois bytes de memória disponível para ela.

int contaPulso; //Variável para a quantidade de pulsos

– Função Setup – Definindo pinos

Em seguida. a função setup é aquela que roda apenas uma vez no início do programa. Está função é do tipo void, ou seja, não tem retorno e também não tem parâmetros de entrada.

Nesta função, Serial.begin inicializa a comunicação serial da placa arduino com o computador. Em seguida, o comando pinMode define o que será entrada e o que será saída na nossa programação. E por fim o comando attachInterrupt define o pino de leitura como interrupção do Arduino no programa. 

Serial.begin(9600);
pinMode(2,INPUT);
attachInterrupt(0,incpulso,RISING); //Configura o pino 2(Interrupção 0)interrupção

– Função Loop – Leitura do nosso Sensor de Fluxo de Água e Estruturas de decisão

Enfim, a função loop ao contrário da setup roda tudo que estiver dentro dela varias vezes em um loop constante até que seja reiniciado ou parado o programa. A função if define uma condição para que o Arduino execute as funções dentro dele, caso a condição for verdadeira, ou seja, a variável declarada anteriormente tiver o valor maior que 0, o Arduino executa tudo o que esta nos colchetes do if. Senso assim, irá imprimir no serial monitor o texto “Contagem de Pulsos” e depois o valor que está atribuído a variável contaPulso. Entretanto, caso a condição do if seja falsa o que esta nos colchetes do else que será executado, o seja, irá imprimir no serial monitor o texto “Sem pulsos”. Logo depois, a variável contaPulso recebe o valor 0. Toda vez que houver interrupção, ou seja, houver a mudança de estado de 0V (0) para 5V(1) a função void incpulso será executada, já que na função attachInterrupt(0,incpulso,RISING) nos definimos isso. Assim será adicionado +1 a variável contaPulso.

sei(); //Habilita interrupção
delay(1000);
cli(); //Desablilita interrupção
if(contaPulso>0){
  Serial.print("Contagem de Pulsos");
  Serial.println(contaPulso);
}
else{
  Serial.println("Sem pulsos");
}
contaPulso = 0;
}

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

Considerações finais:

Por fim, neste tutorial mostramos como funciona e como utilizar o sensor de fluxo de água. Esperamos que você continue nos acompanhando e sinta-se à vontade para nos dar sugestões, críticas ou elogios. Lembre-se de deixar suas dúvidas nos comentários abaixo.

Privacy Preference Center