Paso #1 Descripción
Este sensor se acopla muy bien a la tubería de agua de cualquier edificio o casa y contiene un sensor de molino para medir la cantidad de líquido que ha pasado a través de él. También tiene un sensor magnético de efecto Hall que emite un impulso eléctrico con cada revolución. El sensor de efecto Hall está sellado para permanecer seguro y seco.
El sensor viene con tres cables: rojo (energía 5-24VDC), negro (tierra) y amarillo (salida de pulsos de efecto Hall). Al contar los pulsos de la salida del sensor, se puede calcular fácilmente el flujo de agua. Cada pulso es de aproximadamente 2.25 mililitros. Tenga en cuenta que esto no es un sensor de precisión, y la frecuencia del pulso varía un poco dependiendo de la velocidad de flujo, presión del fluido y la orientación del sensor. Si se necesita más del 10% de precisión se tendrá que hacer la calibración adecuada. Sin embargo, es genial para las tareas diarias cotidianas.
La señal de pulso es una simple onda cuadrada así que es bastante fácil de registrar y convertir en litros por minuto utilizando la siguiente fórmula.
Frecuencia de pulsos (Hz) / 7 = caudal en L / min.
Paso #2 Características
- Modelo: YF-S201
- Tipo de Sensor: Efecto Hall
- Voltaje Nominal: 5 to 18V DC (Voltaje Mínimo Requerido 4.5V)
- Máxima Corriente de operación: 15mA @ 5V
- Voltaje de Salida: 5V TTL
- Velocidad de Flujo: 1 a 30 Litros/Minuto
- Rango de Temperatura: -25 a +80℃
- Rango de Humedad: 35%-80% RH
- Precisión: ±10%
- Máxima Presión de Agua: 2.0 MPa
- Salida del Ciclo de Trabajo: 50% +-10%
- Pulsos por Litro: 450
- Durabilidad: Mínimo 300,000 ciclos
- Largo del Cable: 15cm
- Conectores nominales tubería de 1/2″
- Diámetro externo de 0.78″
- Rosca de 1/2″
- Tamaño: 2.5″ x 1.4″ x 1.4″
Paso #3 Componentes
- Arduino Uno
- Sensor de Flujo YF-S201
- 2 conectores de ½ pulgada
- 1 pedazo de manguera de ½ pulgada
- 1 embudo
- Teflón para evitar fugas en los conectores
Paso #4 Descripción del Tutorial
En este tutorial se realizará la medición del flujo de agua en L/min asi como el volumen total de agua que pasa por el sensor.
Paso #5 PinOut
- Cable Rojo: +5V
- Cable Negro: GND
- Cable Amarillo: Salida de pulsos
Paso #6 Hardware
Paso #7 Calibración
Procedimiento de Calibración:
Si se requiere más de 10% de precisión recomendamos hacer el proceso de calibración. Incluso si no se requiere es buena práctica realizarlo para mejorar el desempeño y revisar que todo se encuentre funcionando correctamente. Además de que no requiere de mucho tiempo.
Lo que haremos es conseguir una tasa de medición y realizar pruebas para ver cuántos pulsos se miden con cierto volumen de agua. Esto se repite varias veces y se obtiene un promedio.
Para obtener los pulsos simplemente podemos cargar este programa al Arduino:
volatile int pulsos; // Cantidad de pulsos del sensor. Como se usa dentro de una interrupcion debe ser volatile #define sensorDeFlujo 2 //Pin al que se conecta el sensor. DEBE ser 2 porque es unico que acepta interrpciones en el Arduino UNO void flujo () // Funcion de interrupcion { pulsos++; // Simplemente sumar el numero de pulsos } void setup() { pinMode(sensorDeFlujo, INPUT); Serial.begin(9600); attachInterrupt(0, flujo, RISING); interrupts(); } void loop () { Serial.print("Pulsos: "); Serial.println(pulsos); }
Lo que hará el programa es simplemente desplegar la cantidad de pulsos en el Serial Monitor.
Corremos el programa y se vierte el agua para que pase completamente por el sensor y anotamos la cantidad de pulsos. Esto se puede repetir varias veces con distintas cantidades de agua. Nosotros realiamos 3 pruebas con 500ml y 3 pruebas con 1000ml y los resultados son bastante evidentes.
Prueba No. | Cantidad | Pulsos |
1 | 500 ml | 209 |
2 | 500 ml | 196 |
3 | 500 ml | 199 |
4 | 1000 ml | 385 |
5 | 1000 ml | 390 |
6 | 1000 ml | 398 |
Podemos entonces inferir que por cada litro de agua que pasa por el sensor obtenemos aproximadamente 400 pulsos. Lo redondeamos por simplicidad pero puedes repetir la prueba cuantas veces sea necesario y obtener un valor más preciso. Si se requiere mucha precisión es importante cuidar que la cantidad de agua vertida sea siempre la misma.
Por lo tanto concluimos que:
400 pulsos = 1 Litro
Para calcular el flujo requermos entonces cuantos Litros/seg están pasando por el sensor. Tomando en cuenta lo que determinamos anteriormente entonces sabemos que si pasa 1 Litro en 1 minuto tendíamos 400 pulsos/min. Lo dividimos entre 60 para convertirlo a segundos y tenemos 6.67 pulsos / seg.
Entonces:
400 pulsos/min = 1 Litro / min
6.67 pulsos/seg = 1 Litro /min
6.67 Hz = 1 L/min
Esto quiere decir que si tenemos el número de Hz simplemente lo dividimos entre 6.67 para obtener el número de L/min.
Q (L/min) = f / 6.67
Si revisamos la hoja de datos vemos que estamos bastante cerca de lo que menciona. Este número puede variar dependiendo de cada sensor y te recomendamos que hagas
Paso #8 Software
/* YF-S201 Hall Effect Water Flow Meter / Sensor http://www.hobbytronics.co.uk/yf-s201-water-flow-meter Read Water Flow Meter and output reading in litres/hour */ volatile int pulsos; // Cantidad de pulsos del sensor. Como se usa dentro de una interrupcion debe ser volatile unsigned int litrosPorHora; // Calculated litres/hour unsigned char sensorDeFlujo = 2; // Pin al que esta conectado el sensor unsigned long tiempoAnterior; // Para calcular el tiempo unsigned long pulsosAcumulados; // Pulsos acumulados float litros; // Litros acumulados void flujo () // Funcion de interrupcion { pulsos++; // Simplemente sumar el numero de pulsos } void setup() { pinMode(sensorDeFlujo, INPUT); Serial.begin(9600); attachInterrupt(0, flujo, RISING); // Setup Interrupt // see http://arduino.cc/en/Reference/attachInterrupt interrupts(); // Habilitar interrupciones tiempoAnterior = millis(); } void loop () { // Cada segundo calcular e imprimir Litros/seg if( millis() - tiempoAnterior > 1000) { tiempoAnterior = millis(); // Updates cloopTime // Pulse frequency (Hz) = 6.67 Q, Q is flow rate in L/min. (Results in +/- 3% range) // Q = frecuencia / 6.67 (L/min) // Q = (frecuencia * 60) / 6.67 (L/hora) pulsosAcumulados += pulsos; litrosPorHora = (pulsos * 60 / 6.67); // (Pulse frequency x 60 min) / 7.5Q = flow rate in L/hour pulsos = 0; // Reset Counter Serial.print(litrosPorHora, DEC); // Print litres/hour Serial.print(" L/hour"); Serial.print(" Pulsos totales: "); Serial.print(pulsosAcumulados); litros = pulsosAcumulados*1.0/400; //Cada 400 pulsos = 1 litro Serial.print(" Litros: "); Serial.println(litros); } }
Hola, gracias por el tutorial. Quiero probar con caudalímetro para encender una bomba sumergible al abrir un grifo. Si la tubería quedase vacía ¿se podría mandar señal de alguna forma? ¿Con una pila e interruptor por ejemplo?
Gracias
Hola! Si entiendo correctamente, tu cuadalímetro estaría midiendo flujo en la tubería constantemente en una tubería. Si esta tuberiá se queda vacía en ese momento el sensor dejará de medir flujo y esto lo puedes utilizar como indicación para activar alguna función. Saludos.