Sensores de Flujo de Agua para Arduino

El sensor de flujo de agua, también llamado flujómetro o caudalímetro, podemos utilizarlo en muchos proyectos con Arduino donde tengamos que mover líquidos y necesitemos medir el caudal que está pasando por nuestro sistema.

El caso típico de uso es en los sistemas de riego por aspersión o riego por goteo donde podríamos necesitar conocer  cuánta agua estamos mandando a las plantas o en situaciones donde utilicemos bombas de agua y para proteger el motor necesitemos saber en todo momento si está pasando líquido por nuestra bomba.

Qué es caudal?

El caudal es la cantidad de l√≠quido o fluido que circula a trav√©s de una ca√Īer√≠a, tuber√≠a o manguera por unidad de tiempo. Por lo general se expresa en la unidad de volumen dividida por la unidad de tiempo (por ejemplo: l/m, l/h, m¬≥/h, etc.).

Recordemos que un litro de agua es equivalente a un dec√≠metro c√ļbico (d¬≥), por lo que 1000 litros equivalen a un metro c√ļbico (m¬≥).

Tipos de Caudalímetro

Podemos elegir entre diferentes tipos de caudal√≠metros o medidores de caudal seg√ļn el uso que le daremos y los recursos con los que contamos. Existen caudal√≠metros que sirven para medir distintos fluidos (agua, combustibles, aceites) y distintos vol√ļmenes con mayor o menor precisi√≥n, y van desde los 2 u$s hasta los 10.000 u$s.¬† Veamos algunos tipos de sensores de flujo:

  • Caudal√≠metro Mec√°nico de Turbina: Es el t√≠pico medidor de¬† agua que tenemos todos en nuestras viviendas. El flujo hace girar un molino cuyo eje mueve un contador mec√°nico que acumula las lecturas. Al ser mec√°nico no sirve para arduino.
  • Caudalimetro Ultras√≥nico: Se utilizan en la industria y cuestan miles de d√≥lares.¬†Mide a trav√©s de ca√Īer√≠as de cualquier material el tiempo que tarda el ultrasonido en atravesar el fluido a medir.
  • Caudal√≠metro Electromagn√©tico: Utilizado en la industria para ca√Īer√≠as de hasta 40 pulgadas y altas presiones. Tambi√©n cuesta miles de d√≥lares.
  • Caudal√≠metro Electr√≥nico a Turbina: Son de bajo costo y bastante precisos. La desventaja que tienen es que al ser intrusivos tienen alta perdida de carga y sufren alto deterioro en sus piezas, pero son los ideales para utilizar en nuestros proyectos con Arduino.

Cómo funciona el sensor de flujo con Arduino

El funcionamiento del sensor de flujo electrónico a turbina que utilizaremos con Arduino es simple y complejo a la vez. Simple por que basicamente consta de una turbina que gira al pasar el agua a través de ella, y complejo por utiliza un sensor de efecto Hall para calcular el flujo de agua. No entraremos en este artículo a describir el efecto Hall, ya que no es necesario comprenderlo para hacer un buen uso del flujómetro.Vista interior del caudalímetro de turbina con sensor de Efecto Hall

El agua circula a través del cuerpo del medidor de flujo haciendo girar la turbina o hélice que tiene dentro. Cuanto más flujo haya más rápido girarán las aspas de la turbina. Un imán situado en la turbina genera un pulso positivo cada vez que pasa por el sensor de efecto Hall. De esta forma podemos conocer las RPM que general la hélice y calcular el caudal de agua con una sencilla ecuación.

Modelos de sensores de flujo para Arduino

Son 4 los sensores de caudal m√°s utilizados con Arduino, las mayor diferencia entre ellos es el tama√Īo de las roscas de conexi√≥n y por supuesto el caudal que miden, ve√°moslo comparativamente:

Invalid table id.

Conexión del sensor

La conección eléctrica es muy sencilla, todos los sensores de flujo tienen 3 cables: rojo y negro para positivo y GND y amarillo para la salida de los pulsos. Como es necesario utilizar interrupciones externas, podemos utilizar los pines 2 ó 3 de Arduino UNO, que son los que manejan interrupciones. Nos decidimos por el pin 2 para que funcione también el código en otras placas arduino que manejan interrupciones externas en ese pin (mega, nano, mini y micro).

Importante: todos los sensores de flujo tienen en la carcasa una flecha que indica el sentido en el que debe circular el liquido. Debe respetarse el sentido para que el sensor funcione correctamente y no se da√Īe.

Sketch Arduino

La conversión de frecuencia de pulsos (Hz) a caudal (L/min) varía entre modelos y depende de factores como la presión, la densidad de líquido e incluso del mismo caudal.

Para calcular el caudal debemos usar un factor de conversión y una formula provistos por el fabricante. Este factor de conversión sólo nos servirá de referencia, ya que en la mayoría de los casos deberemos ajustarlo realizando pruebas.

Fórmula:   f(Hz) = K * Q(L/min)

Donde f es la frecuencia de pulsos, K es el factor de conversión y Q es el caudal en litros por minuto. Despejando Q en la ecuación obtenemos que Q = f/K

Factores de conversi√≥n para cada sensor de flujo seg√ļn el fabricante:

Sensor de ¬ľ¬Ľ:¬† ¬†S
Sensor de ¬Ĺ¬Ľ: 7,5
Sensor de ¬ĺ¬Ľ: 5,5
Sensor de 1″: 4,8

En el siguiente código de ejemplo usamos interrupciones para contar la cantidad de pulsos que se generan en un segundo y dividir el total por el factor de conversión para obtener el caudal de litros por minuto.

volatile int CantPulsos;	//Variable que acumula los pulsos recibidos
int LxM;			//Variable que acumula el calculo de Litros por Minuto 
int pinsensor = 2;		//Numero de pin donde conectamos el sensor
float FacConv = 7.5; 		//Factor de Conversion para calcular caudal


void rpm ()  {			//Función que se ejecuta durante la interrupción
	CantPulsos++;		//Incrementa el contador de pulsos
} 


void setup() { 
	pinMode(pinsensor, INPUT); 		//inicializa el pin digital 2 como entrada
	Serial.begin(9600); 			//inicializa el puerto serie
 	attachInterrupt(0, rpm, RISING); 	//(Interrupcion 0(Pin2),funcion rpm,Flanco de subida, cuando pasa de LOW a HIGH)
} 


void loop () {
	CantPulsos = 0;      			//Pone en 0 el contador de pulsos
 	Interrupts();            		//Habilitamos las interrupciones, equivalente a sei();
 	delay (1000);      			//Esperamos un segundo
 	noInterrupts();            		//Deshabilitamos las interrupciones, equivalente a cli();
 	LxM = (CantPulsos / FacConv); 		//Calcula los Litros por Minuto 
 	Serial.print (LxM, DEC); 		//Imprime la cantidad de litros por minuto
 	Serial.print (" L/minrn"); 		//Imprime "L/min" y salta a una nueva linea
}

En nuestra web estamos subiendo informaci√≥n continuamente, por lo que podr√°s encontrar los mejores proyectos arduino. Tambi√©n puedes seguir visitando esta secci√≥n eligiendo en el listado alg√ļn otro sensor que te interese.

Además del sensor de flujo tenemos información sobre otros sensores de Arduino que te pueden interesar para tus proyectos. Puedes comprar los mejores sensores en nuestra tienda online o ver mas tutoriales con ejemplos de uso de algunos de ellos:

: