- Componentes requeridos
- Sensor de flujo de agua YFS201
- Diagrama de circuito
- Código del sensor de flujo de agua Arduino
- Funcionamiento del sensor de flujo de agua Arduino
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 bebidas gaseosas y químicas 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 tasa de flujo y verificar el volumen de líquido que ha pasado por 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. Además, un sensor de flujo de agua será una buena adición a proyectos como el dispensador automático de agua. y Smart Irrigation Systems donde necesitamos monitorear y controlar el flujo de líquidos.
En este proyecto, vamos a construir un sensor de flujo de agua usando Arduino. Conectaremos el sensor de flujo de agua con Arduino y LCD, y lo programaremos para mostrar el volumen de agua que ha pasado a través de la válvula. Para este proyecto en particular, usaremos el sensor de flujo de agua YF-S201, que usa un efecto hall para detectar la tasa de flujo del líquido.
Componentes requeridos
- Sensor de flujo de agua
- Arduino UNO
- LCD (16x2)
- 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 siguiente figura. El cable rojo se utiliza para el voltaje de suministro que varía de 5 V a 18 V y el cable negro está conectado a GND. El cable amarillo se utiliza para la salida (pulsos), que puede leer un MCU. El sensor de flujo de agua consta de 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 de 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 de tal manera que el sensor de efecto hall está aislado del agua y permite que el sensor se mantenga seguro y seco.
La imagen del módulo sensor YFS201 solo se muestra a continuación.
Para conectar la tubería y el sensor de flujo de agua, utilicé dos conectores con rosca hembra como se muestra a continuación.
Según las especificaciones de 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 el camino del líquido que fluye. El eje de la rueda de la turbina está conectado a un sensor de efecto Hall. Debido a esto, siempre que el agua fluye por 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, usaremos Arduino UNO. La siguiente imagen muestra la configuración de pines del sensor de flujo de agua.
Diagrama de circuito
El diagrama del circuito del sensor de flujo de agua se muestra a continuación para conectar un sensor de flujo de agua y una pantalla LCD (16x2) con Arduino. Si es nuevo en Arduino y LCD, puede considerar leer este artículo sobre Interfaz de Arduino y LCD.
La conexión del sensor de flujo de agua y la pantalla LCD (16x2) con el Arduino se muestra a continuación en formato de tabla. Tenga en cuenta que la olla está conectada entre 5V y GND y el pin 2 de la olla está conectado con el pin V0 de la pantalla LCD.
S.NO |
Pin del sensor de flujo de agua |
Pines Arduino |
1 |
Cable rojo |
5V |
2 |
Negro |
GND |
3 |
Amarillo |
A0 |
S. No |
LCD |
Arduino |
1 |
Vss |
GND (riel de tierra de la placa de pruebas) |
2 |
VDD |
5V (carril positivo de la placa de pruebas) |
3 |
Para la conexión con V0, consulte la nota anterior |
|
4 |
RS |
12 |
5 |
RW |
GND |
6 |
mi |
11 |
7 |
D7 |
9 |
8 |
D6 a D3 |
3 a 5 |
Usé una placa de pruebas, y una vez que se realizó la conexión según el diagrama de circuito que se muestra arriba, mi configuración de prueba se veía así.
Código del sensor de flujo de agua Arduino
El código completo de Arduino del sensor de flujo de agua se encuentra en la parte inferior de la página. La explicación del código es la siguiente.
Estamos usando el archivo de encabezado de la pantalla LCD, lo que facilita nuestra interfaz de la pantalla LCD con Arduino, y los pines 12,11,5,4,3,9 están asignados para la transferencia de datos entre LCD y Arduino. El pin de salida del sensor está conectado al pin 2 de Arduino UNO.
volatile int flow_frequency; // Mide los pulsos del sensor de flujo // Litros calculados / hora flotador vol = 0.0, l_minute; sensor de flujo de caracteres sin signo = 2; // Entrada de sensor unsigned long currentTime; unsigned long cloopTime; #incluir
Esta función es una rutina de servicio de interrupción y se llamará siempre que haya una señal de interrupción en el pin2 de Arduino UNO. Por cada señal de interrupción, el recuento de la variable flow_frequency aumentará en 1. Para obtener más detalles sobre las interrupciones y su funcionamiento, puede leer este artículo sobre interrupciones de Arduino.
void flow () // Función de interrupción { flow_frequency ++; }
En la configuración vacía, le decimos al MCU que el pin 2 del Arduino UNO se usa como ENTRADA dando el comando pinMode (pin, OUTPUT). Al usar el comando attachInterrupt, siempre 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. comienzo (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 de circuitos"); currentTime = millis (); cloopTime = currentTime; }
La función if asegura que por cada segundo se ejecute el código que contiene. De esta forma, podemos contar el número de frecuencias que produce el sensor de flujo de agua por segundo. Las características del pulso de 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 litros / seg. Este valor se suma a la variable vol por cada segundo.
bucle vacío () {tiempo actual = milis (); // 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 el caudal 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 ("Tasa:"); 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"); frecuencia_flujo = 0; // Reset 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 ("Tasa:"); lcd.print (frecuencia_flujo); lcd.print ("L / M"); lcd.setCursor (0,1); lcd.print ("Vol:"); lcd.print (vol); lcd.print ("L"); }
Funcionamiento del sensor de flujo de agua Arduino
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 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 toma el valor de flow_frequency 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.
El trabajo completo también se puede encontrar en el video vinculado al final de esta página. Espero que haya disfrutado del tutorial y haya disfrutado de algo útil, si tiene algún problema, déjelo en la sección de comentarios o use nuestros foros para otras preguntas técnicas.