Saltar al contenido
Blog Arduino, LabVIEW y Electrónica

Caudalímetro con Arduino YF-S201

caudalimetro con Arduino

¿QUÉ ES UN CAUDALÍMETRO?

El sensor de flujo o caudalímetro es un dispositivo que se utiliza para medir el flujo de agua. Este sensor se encuentra en línea con la tubería de agua y contiene un sensor de molinete para medir cuánto líquido ha pasado a través de él. Hay un sensor de efecto hall magnético integrado que emite un pulso eléctrico con cada revolución.

Los sensores de flujo utilizan ondas acústicas y campos electromagnéticos para medir el flujo a través de un área determinada mediante el cálculo de magnitudes físicas, como la aceleración, frecuencia, presión y volumen construido y proporciona un pulso digital cada vez que una cantidad de agua pasa a través de la tubería.

sensor-de-flujo-de-agua-34-fs300a

Indice del Artículo

FUNICIONAMIENTO DE UN CAUDALÍMETRO

El sensor de flujo de agua consiste en una válvula de plástico desde la cual puede pasar el agua. Un rotor de agua junto con un sensor de efecto Hall presenta el sentido y mide el flujo de agua. Cuando el agua fluye a través de la válvula, gira el rotor. Por esto, el cambio se puede observar en la velocidad del motor. Este cambio se calcula como salida como una señal de pulso por el sensor de efecto hall. Por lo tanto, se puede medir la tasa de flujo de agua.

El principio de funcionamiento principal detrás del funcionamiento de este sensor es el efecto Hall. De acuerdo con este principio, en este sensor, se induce una diferencia de voltaje en el conductor debido a la rotación del rotor. Esta diferencia de voltaje inducida es transversal a la corriente eléctrica.

Los caudalímetros como el YF-S201, FS300A y el FS400A están constituidos por una carcasa plástica estanca y un rotor con paletas en su interior. Al atravesar el fluido el interior el sensor el caudal hace girar el rotor.

CALCULO DE SALIDA DE UN CAUDALIMETRO

Todos los modelos tienen tres cables para su conexión, rojo y negro para la alimentación y amarillo para la salida de los pulsos.

La salida de pulsos es una onda cuadrada cuya frecuencia es proporcional al caudal. El factor de conversión de frecuencia (Hz) a caudal (L/min) varía entre modelos y  depende de la presión, densidad e incluso del mismo caudal.

Para calcular la salida del sensor, tenemos que contemplar la siguiente fórmula, donde la salida se presenta como una onda cuadrada, y la frecuencia es proporcional al caudal que circuló.

Formula de calculo de caudalimetro

En los datasheet provistos por el fabricante debemos obtener el factor de converisión entre frecuencia (K), además del caudal, se debe tomar en cuenta que K es diferente en cada caudalímetro. La precisión con el valor de referencia se encuentra entre 10% de desfase, en caso de requerir precisión superior es necesario realizar pruebas para determinar la calibración del caudalímetro.

Precio

El caudalimetro o medidor de caudal de agua tiene un costo entre $114-$136 pesos, es decir entre $4-$5 doláres.

¿Te interesa uno? Mercado Libre 

APLICACIONES DEL MODELO YF-S201

Este sensor es ideal para su uso en sistemas de conservación de agua, tanques de almacenamiento, aplicaciones domésticas de reciclaje de agua, sistemas de riego y mucho más. La salida se puede conectar fácilmente a un microcontrolador para el control de consumo de agua y el cálculo de la cantidad de agua que queda en un tanque etc. Puede ser empleado con otros líquidos de baja viscosidad, como: bebidas gasificadas, bebidas alcohólicas, combustible, etc.

aplicaciones del caudalimetro

ANÁLISIS TÉCNICO DE 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
  • Máxima Presión de Agua: 2.0 MPa
  • 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″

Caudalimetro Arduino

 

Video de Caudalimetro con Sensor de flujo YF-S201 y LCD 2004

CIRCUITO DE PRUEBA

Para este circuito vas a necesitar de un Arduino Uno y un caudalímetro modelo YF-S201. Continuemos a las conexiones. 

Diagrama de Conexión:

Diagrama de conexión Arduino y caudalímetro

CALCULAR EL CAUDAL

Se debe calcular primero la frecuencia de la señal de salida del sensor para poder leerla del caudalimetro. Esto se lleva a cabo haciendo una interrupción que cuente pulsos en un intervalo determinado, se divide el nimero de pulsos por los segundo, sacando su frecuencia. Se convierte la medición en frecuencia a caudal, para lo cuál empleamos el factor K.

 

const int sensorPin = 2;
const int measureInterval = 2500;
volatile int pulseConter;
 
// YF-S201
const float factorK = 7.5;
 
// FS300A
//const float factorK = 5.5;
 
// FS400A
//const float factorK = 3.5;
 
 
void ISRCountPulse()
{
   pulseConter++;
}
 
float GetFrequency()
{
   pulseConter = 0;
 
   interrupts();
   delay(measureInterval);
   noInterrupts();
 
   return (float)pulseConter * 1000 / measureInterval;
}
 
void setup()
{
   Serial.begin(9600);
   attachInterrupt(digitalPinToInterrupt(sensorPin), ISRCountPulse, RISING);
}
 
void loop()
{
   // obtener frecuencia en Hz
   float frequency = GetFrequency();
 
   // calcular caudal L/min
   float flow_Lmin = frequency / factorK;
 
   Serial.print("Frecuencia: ");
   Serial.print(frequency, 0);
   Serial.print(" (Hz)\tCaudal: ");
   Serial.print(flow_Lmin, 3);
   Serial.println(" (L/min)");
}

CALCULAR EL CONSUMO

Para calcular el volumen del consumo de agua, se integra respecto al tiempo.

const int sensorPin = 2;
const int measureInterval = 2500;
volatile int pulseConter;
 
// YF-S201
const float factorK = 7.5;
 
// FS300A
//const float factorK = 5.5;
 
// FS400A
//const float factorK = 3.5;
 
float volume = 0;
long t0 = 0;
 
 
void ISRCountPulse()
{
   pulseConter++;
}
 
float GetFrequency()
{
   pulseConter = 0;
 
   interrupts();
   delay(measureInterval);
   noInterrupts();
 
   return (float)pulseConter * 1000 / measureInterval;
}
 
void SumVolume(float dV)
{
   volume += dV / 60 * (millis() - t0) / 1000.0;
   t0 = millis();
}
 
void setup()
{
   Serial.begin(9600);
   attachInterrupt(digitalPinToInterrupt(sensorPin), ISRCountPulse, RISING);
   t0 = millis();
}
 
void loop()
{
   // obtener frecuencia en Hz
   float frequency = GetFrequency();
 
   // calcular caudal L/min
   float flow_Lmin = frequency / factorK;
   SumVolume(flow_Lmin);
 
   Serial.print(" Caudal: ");
   Serial.print(flow_Lmin, 3);
   Serial.print(" (L/min)\tConsumo:");
   Serial.print(volume, 1);
   Serial.println(" (L)");
}