Si alguna vez ha visitado empresas de fabricación a gran escala, lo primero que notará es que todas están automatizadas. Las industrias de refrescos y química tienen que medir y cuantificar constantemente los líquidos que manejan durante este proceso de automatización, y el sensor más común utilizado para medir el flujo de un líquido es un sensor de flujo . Al usar un sensor de flujo con un microcontrolador como Arduino, podemos calcular la velocidad de flujo y verificar el volumen de líquido que ha pasado a través de una tubería y controlarlo según sea necesario. Además de las industrias manufactureras, los sensores de flujo también se pueden encontrar en el sector agrícola, procesamiento de alimentos, gestión del agua, industria minera, reciclaje de agua, máquinas de café, etc.

Componentes requeridos

  • Sensor de flujo de agua
  • Arduino UNO
  • LCD (16×2)
  • Conector con rosca interna
  • Cables de conexión
  • Tubo

Sensor de flujo de agua YFS201

El sensor tiene 3 cables ROJO, AMARILLO y NEGRO como se muestra en la figura a continuación. El cable rojo se usa para el voltaje de alimentación que varía de 5V a 18V y el cable negro está conectado a GND. El cable amarillo se utiliza para la salida (pulsos), que puede ser leída por una MCU. El sensor de flujo de agua consiste en un sensor de molinete que mide la cantidad de líquido que ha pasado a través de él.

El funcionamiento del sensor de flujo de agua YFS201 es fácil de entender. El sensor de flujo de agua funciona según el principio del efecto Hall. El efecto Hall es la producción de la diferencia de potencial a través de un conductor eléctrico cuando se aplica un campo magnético en la dirección perpendicular a la del flujo de corriente. El sensor de flujo de agua está integrado con un sensor de efecto hall magnético, que genera un pulso eléctrico con cada revolución. Su diseño es tal que el sensor de efecto hall está sellado del agua y permite que el sensor permanezca seguro y seco. 

La imagen del módulo sensor YFS201 solo se muestra a continuación.

De acuerdo con las especificaciones YFS201, la corriente máxima que consume a 5 V es de 15 mA, y el caudal de trabajo es de 1 a 30 litros / minuto. Cuando el líquido fluye a través del sensor, hace contacto con las aletas de la rueda de la turbina, que se coloca en la trayectoria del líquido que fluye. El eje de la rueda de la turbina está conectado a un sensor de efecto hall. Debido a esto, cada vez que el agua fluye a través de la válvula genera pulsos. Ahora, todo lo que tenemos que hacer es medir el tiempo para las ventajas o contar el número de pulsos en 1 segundo y luego calcular las tasas de flujo en litros por hora (L / Hr) y luego usar una fórmula de conversión simple para encontrar el volumen del agua que lo había atravesado. Para medir los pulsos, vamos a utilizar Arduino UNO. La imagen a continuación muestra el pinout del sensor de flujo de agua.

Diagrama de circuito

La conexión del sensor de flujo de agua y LCD (16×2) con el Arduino se muestra a continuación en formato de tabla. Tenga en cuenta que el bote está conectado entre 5V y GND y el pin 2 del bote está conectado con el pin V0 de la pantalla LCD.

S.NOPin del sensor de flujo de aguaAlfileres Arduino
1Cable rojo5V
2NegroGND
3AmarilloA0
S.NoLCDArduino
1VssGND (riel de tierra de la placa de pruebas)
2VDD5V (riel positivo de la placa de pruebas)
3Para la conexión con V0 verifique la nota anterior
4 4RS12
5 5RWGND
6 6mi11
7 7D79 9
8D6 a D33 a 5

Utilicé una placa de prueba, y una vez que la conexión se realizó según el diagrama de circuito que se muestra arriba, mi configuración de prueba se parecía a esto.

Código del sensor de flujo de agua Arduino

Estamos utilizando el archivo de encabezado de la pantalla LCD, que facilita nuestra interfaz de la pantalla LCD con Arduino, y los pines 12, 11, 5, 4, 3, 9 se asignan para la transferencia de datos entre la pantalla LCD y Arduino. El pin de salida del sensor está conectado al pin 2 de Arduino UNO.

volátil int flujo_frecuencia; // Mide pulsos del sensor de flujo 
// Calculo de litros / hora 
flotante vol = 0.0, l_minute; 
sensor de flujo de caracteres sin signo = 2; // Entrada del sensor 
unsigned long currentTime; 
unsigned long cloopTime; 
#include <LiquidCrystal.h> 
LiquidCrystal lcd (12, 11, 5, 4, 3, 9);

Esta función es una rutina de servicio de interrupción y se llamará cada vez que haya una señal de interrupción en el pin2 de Arduino UNO. Para cada señal de interrupción, el recuento de la frecuencia de flujo variable aumentará en 1. Para obtener más detalles sobre las interrupciones y su funcionamiento, puede leer este artículo sobre las interrupciones de Arduino .

void flow () // Función de interrupción 
{ 
   flow_frequency ++; 
}

En la configuración de vacío, le decimos a la MCU que el pin 2 del Arduino UNO se usa como ENTRADA al dar el comando pinMode (pin, OUTPUT). Al usar el comando attachInterrupt, cada vez que hay un aumento en la señal en el pin 2, se llama a la función de flujo. Esto aumenta el recuento en la variable flow_frequency en 1. La hora actual y cloopTime se utilizan para que el código se ejecute cada 1 segundo.

configuración vacía () 
{ 
   pinMode (sensor de flujo, ENTRADA); 
   digitalWrite (sensor de flujo, ALTO); 
   Serial.begin (9600); 
   lcd.begin (16, 2); 
   attachInterrupt (digitalPinToInterrupt (sensor de flujo), flujo, RISING); // Configuración de interrupción 
   lcd.clear (); 
   lcd.setCursor (0,0); 
   lcd.print ("Medidor de flujo de agua"); 
   lcd.setCursor (0,1); 
   lcd.print ("Resumen del circuito"); 
   currentTime = millis (); 
   cloopTime = currentTime; 
}

La función if asegura que por cada segundo se ejecute el código dentro de él. De esta manera, podemos contar el número de frecuencias producidas por el sensor de flujo de agua por segundo. Las características del pulso de la tasa de flujo de la hoja de datos indican que la frecuencia es 7.5 multiplicada por la tasa de flujo. Entonces el caudal es frecuencia / 7.5. Después de encontrar el caudal que está en litros / minuto, divídalo por 60 para convertirlo en litro / segundo. Este valor se agrega a la variable vol por cada segundo.

bucle vacío () 
{ 
   currentTime = millis (); 
   // Cada segundo, calcula e imprime litros / hora 
   if (currentTime> = (cloopTime + 1000)) 
   { 
    cloopTime = currentTime; // Actualiza cloopTime 
    if (flow_frequency! = 0) { 
      // Frecuencia de pulso (Hz) = 7.5Q, Q es la velocidad de flujo en L / min. 
      l_minuto = (frecuencia_flujo / 7.5); // (Frecuencia de pulso x 60 min) / 7.5Q = caudal en L / hora 
      lcd.clear (); 
      lcd.setCursor (0,0); 
      lcd.print ("Velocidad:"); 
      lcd.print (l_minute); 
      lcd.print ("L / M"); 
      l_minute = l_minute / 60; 
      lcd.setCursor (0,1); 
      vol = vol + l_minuto; 
      lcd.print ("Vol:");
      lcd.print (vol); 
      lcd.print ("L"); 
      frecuencia_flujo = 0; // Restablecer contador 
      Serial.print (l_minute, DEC); // Imprimir litros / hora 
      Serial.println ("L / Sec"); 
        }

La función else funciona cuando no hay salida del sensor de flujo de agua dentro del período de tiempo dado.

else { 
      lcd.clear (); 
      lcd.setCursor (0,0); 
      lcd.print ("Velocidad:"); 
      lcd.print (flujo_frecuencia); 
      lcd.print ("L / M"); 
      lcd.setCursor (0,1); 
      lcd.print ("Vol:"); 
      lcd.print (vol); 
      lcd.print ("L"); 
    }

Sensor de flujo de agua Arduino funcionando

En nuestro proyecto, conectamos el sensor de flujo de agua a una tubería. Si la válvula de salida de la tubería está cerrada, la salida del sensor de flujo de agua es cero (sin pulsos). No se verá ninguna señal de interrupción en el pin 2 del Arduino, y el recuento de la frecuencia de flujo será cero. En esta condición, el código que está escrito dentro del bucle else funcionará.

Si se abre la válvula de salida de la tubería. El agua fluye a través del sensor, que a su vez hace girar la rueda dentro del sensor. En esta condición, podemos observar pulsos, que se generan desde el sensor. Estos pulsos actuarán como una señal de interrupción para el Arduino UNO. Para cada señal de interrupción (flanco ascendente), el recuento de la variable flow_frequency se incrementará en uno. El tiempo actual y la variable cloopTIme aseguran que por cada segundo se tome el valor de la frecuencia de flujo para calcular el caudal y el volumen. Una vez finalizado el cálculo, la variable flow_frequency se establece en cero y todo el procedimiento se inicia desde el principio.

https://circuitdigest.com/

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *