- Componentes necessários
- Sensor de fluxo de água YFS201
- Diagrama de circuito
- Código do sensor de fluxo de água Arduino
- Sensor de fluxo de água Arduino funcionando
Se você já visitou empresas de manufatura em grande escala, a primeira coisa que notará é que todas são automatizadas. Indústrias de refrigerantes e indústrias químicas têm que medir e quantificar constantemente os líquidos que estão manuseando durante este processo de automação, e o sensor mais comum usado para medir o fluxo de um líquido é um sensor de fluxo. Usando um sensor de fluxo com um microcontrolador como o Arduino, podemos calcular a taxa de fluxo e verificar o volume de líquido que passou por um tubo e controlá-lo conforme necessário. Além das indústrias de manufatura, os sensores de fluxo também podem ser encontrados no setor agrícola, processamento de alimentos, gerenciamento de água, indústria de mineração, reciclagem de água, máquinas de café, etc. Além disso, um sensor de fluxo de água será um bom complemento para projetos como o Dispensador Automático de Água e Sistemas Inteligentes de Irrigação, onde precisamos monitorar e controlar o fluxo de líquidos.
Neste projeto, vamos construir um sensor de fluxo de água usando o Arduino. Faremos a interface do sensor de fluxo de água com o Arduino e o LCD e o programaremos para exibir o volume de água que passou pela válvula. Para este projeto específico, vamos usar o sensor de fluxo de água YF-S201, que usa um efeito Hall para detectar a taxa de fluxo do líquido.
Componentes necessários
- Sensor de fluxo de água
- Arduino UNO
- LCD (16x2)
- Conector com rosca interna
- Fios de conexão
- Tubo
Sensor de fluxo de água YFS201
O sensor possui 3 fios VERMELHO, AMARELO e PRETO conforme mostrado na figura abaixo. O fio vermelho é usado para a tensão de alimentação que varia de 5 V a 18 V e o fio preto é conectado ao GND. O fio amarelo é usado para saída (pulsos), que pode ser lido por um MCU. O sensor de fluxo de água consiste em um sensor cata-vento que mede a quantidade de líquido que passou por ele.
O funcionamento do sensor de fluxo de água YFS201 é simples de entender. O sensor de fluxo de água funciona segundo o princípio do efeito hall. O efeito Hall é a produção da diferença de potencial através de um condutor elétrico quando um campo magnético é aplicado na direção perpendicular ao fluxo da corrente. O sensor de fluxo de água está integrado a um sensor de efeito Hall magnético, que gera um pulso elétrico a cada revolução. Seu design é de tal forma que o sensor de efeito Hall fica isolado da água e permite que o sensor permaneça seguro e seco.
A imagem do módulo sensor YFS201 sozinho é mostrada abaixo.
Para conectar ao tubo e ao sensor de fluxo de água, usei dois conectores com rosca fêmea, conforme mostrado abaixo.
De acordo com as especificações YFS201, a corrente máxima que ele consome em 5 V é 15 mA e a vazão de trabalho é de 1 a 30 litros / minuto. Quando o líquido flui pelo sensor, ele entra em contato com as aletas da roda da turbina, que é colocada no caminho do líquido que flui. O eixo da roda da turbina é conectado a um sensor de efeito Hall. Por isso, sempre que a água passa pela válvula ela gera pulsos. Agora, tudo o que temos a fazer é medir o tempo para os sinais de adição ou contar o número de pulsos em 1 segundo e, em seguida, calcular as taxas de fluxo em litros por hora (L / Hr) e, em seguida, usar a fórmula de conversão simples para encontrar o volume da água que passou por ele. Para medir os pulsos, vamos usar o Arduino UNO. A foto abaixo mostra a pinagem do sensor de fluxo de água.
Diagrama de circuito
O diagrama do circuito do sensor de fluxo de água é mostrado abaixo para fazer a interface de um sensor de fluxo de água e LCD (16x2) com o Arduino. Se você é novo no Arduino e LCDs, pode considerar a leitura deste artigo sobre interfaces entre Arduino e LCD.
A conexão do sensor de fluxo de água e LCD (16x2) com o Arduino é fornecida a seguir em formato de tabela. Observe que o potenciômetro está conectado entre 5V e GND e o pino 2 do potenciômetro está conectado ao pino V0 do LCD.
S.NO |
Pino do sensor de fluxo de água |
Arduino Pins |
1 |
Fio vermelho |
5V |
2 |
Preto |
GND |
3 |
Amarelo |
A0 |
S.Não |
LCD |
Arduino |
1 |
Vss |
GND (trilho de aterramento da placa de ensaio) |
2 |
VDD |
5V (trilho positivo da placa de ensaio) |
3 |
Para conexão com V0 verifique a nota acima |
|
4 |
RS |
12 |
5 |
RW |
GND |
6 |
E |
11 |
7 |
D7 |
9 |
8 |
D6 a D3 |
3 a 5 |
Usei uma placa de ensaio e, depois que a conexão foi feita de acordo com o diagrama de circuito mostrado acima, minha configuração de teste ficou mais ou menos assim.
Código do sensor de fluxo de água Arduino
O código Arduino completo do sensor de fluxo de água é fornecido na parte inferior da página. A explicação do código é a seguinte.
Estamos usando o arquivo de cabeçalho do LCD, que facilita nossa interface do LCD com o Arduino, e os pinos 12,11,5,4,3,9 são atribuídos para transferência de dados entre o LCD e o Arduino. O pino de saída do sensor é conectado ao pino 2 do Arduino UNO.
volatile int flow_frequency; // Mede pulsos do sensor de fluxo // Litros / hora calculado float vol = 0.0, l_minute; sensor de fluxo de char sem sinal = 2; // Sensor Input unsigned long currentTime; long cloopTime sem sinal; #incluir
Esta função é uma rotina de serviço de interrupção e será chamada sempre que houver um sinal de interrupção no pino 2 do Arduino UNO. Para cada sinal de interrupção, a contagem da variável flow_frequency será aumentada em 1. Para mais detalhes sobre as interrupções e seu funcionamento, você pode ler este artigo sobre interrupções do Arduino.
void flow () // Interrompe a função { flow_frequency ++; }
Na configuração void, informamos ao MCU que o pino 2 do Arduino UNO é usado como INPUT, dando o comando pinMode (pin, OUTPUT). Usando o comando attachInterrupt, sempre que houver um aumento no sinal no pino 2, a função de fluxo é chamada. Isso aumenta a contagem na variável flow_frequency em 1. A hora atual e o cloopTime são usados para que o código seja executado a cada 1 segundo.
void setup () { pinMode (flowsensor, INPUT); digitalWrite (sensor de fluxo, ALTO); Serial.begin (9600); lcd.begin (16, 2); attachInterrupt (digitalPinToInterrupt (flowsensor), flow, RISING); // Configuração da interrupção lcd.clear (); lcd.setCursor (0,0); lcd.print ("Medidor de fluxo de água"); lcd.setCursor (0,1); lcd.print ("Circuit Digest"); currentTime = millis (); cloopTime = currentTime; }
A função if garante que, a cada segundo, o código dentro dele seja executado. Desta forma, podemos contar o número de frequências produzidas pelo sensor de fluxo de água por segundo. As características do pulso da taxa de fluxo da folha de dados são fornecidas que a frequência é 7,5 multiplicada pela taxa de fluxo. Portanto, a taxa de fluxo é frequência / 7,5. Depois de encontrar a vazão que está em litros / minuto, divida por 60 para convertê-la em litros / s. Este valor é adicionado à variável vol a cada segundo.
void loop () { currentTime = millis (); // A cada segundo, calcula e imprime litros / hora if (currentTime> = (cloopTime + 1000)) { cloopTime = currentTime; // Atualiza cloopTime if (flow_frequency! = 0) { // Frequência de pulso (Hz) = 7,5Q, Q é a taxa de fluxo em L / min. l_minuto = (fluxo_frequência / 7,5); // (frequência de pulso x 60 min) / 7,5Q = vazão em L / hora lcd.clear (); lcd.setCursor (0,0); lcd.print ("Taxa:"); lcd.print (l_minuto); lcd.print ("L / M"); l_minuto = l_minuto / 60; lcd.setCursor (0,1); vol = vol + l_minuto; lcd.print ("Vol:"); lcd.print (vol); lcd.print ("L"); flow_frequency = 0; // Reinicia o contador Serial.print (l_minute, DEC); // Imprimir litros / hora Serial.println ("L / Sec"); }
A outra função funciona quando não há saída do sensor de fluxo de água dentro do intervalo de tempo determinado.
else { lcd.clear (); lcd.setCursor (0,0); lcd.print ("Taxa:"); lcd.print (flow_frequency); lcd.print ("L / M"); lcd.setCursor (0,1); lcd.print ("Vol:"); lcd.print (vol); lcd.print ("L"); }
Sensor de fluxo de água Arduino funcionando
Em nosso projeto, conectamos o sensor de fluxo de água a uma tubulação. Se a válvula de saída do tubo estiver fechada, a saída do sensor de fluxo de água é zero (sem pulsos). Não haverá sinal de interrupção visto no pino 2 do Arduino e a contagem de flow_frequency será zero. Nessa condição, o código que está escrito dentro do loop else funcionará.
Se a válvula de saída do tubo estiver aberta. A água flui através do sensor, que por sua vez gira a roda dentro do sensor. Nesta condição, podemos observar pulsos, que são gerados a partir do sensor. Esses pulsos atuarão como um sinal de interrupção para o Arduino UNO. Para cada sinal de interrupção (borda ascendente), a contagem da variável flow_frequency será aumentada em um. A hora atual e a variável cloopTIme garantem que, para cada segundo, o valor de flow_frequency seja considerado para o cálculo da taxa de fluxo e do volume. Após a conclusão do cálculo, a variável flow_frequency é zerada e todo o procedimento é iniciado desde o início.
O trabalho completo também pode ser encontrado no link do vídeo no final desta página. Espero que você tenha gostado do tutorial e de algo útil, se você tiver algum problema, por favor deixe-os na seção de comentários ou use nossos fóruns para outras questões técnicas.