Medir caudal y consumo de agua con Arduino y caudalímetro


arduino-caudalimetro

¿Qué es un caudalímetro?

Un caudalímetro es un sensor que permite medir la cantidad de agua que atraviesa una tubería. Podemos conectar un caudalímetro a un procesador como Arduino para obtener la medición del sensor.

El nombre del caudalímetro proviene del término caudal, que es la relación entre volumen y tiempo. Las unidades en el sistema internacional son m^3/s, siendo otras unidades habituales l/s y l/min. El caudal depende de diversos factores, principalmente de la sección de tubería y la presión de suministro.

En instalaciones domésticas diámetros habituales de tuberías 1” (DN25), 3/4” (DN20) y 1/2” (DN15), siendo esta última la normal en grifos. La presión debería estar en el rango de 100 kPA (1 Kg/cm2) a 500kPA (5 Kg/cm2)

Caudales habituales para instalaciones para tuberías de 1/2″ (las normales en grifos) 0.1 l/s (6 l/min) y 0.2 l/s (12 l/min). Para tuberías de 3/4″ podemos tener caudales en torno a 20 l/min, y para tuberías de 1″ en torno a 35 l/min.

Anuncio:

Dentro del campo de caudalímetros que podemos emplear en nuestros proyectos de electrónica y domótica caseros tenemos diversos modelos como el YF-S201, FS300A, FS400A. Cada uno dispone de distintas características, aunque el criterio de selección entre estos tres será el diámetro de la tubería.

Podemos usar un caudalímetro en nuestros proyectos por ejemplo, para determinar el consumo de una instalación, regular el flujo actuando sobre una bomba, controlar el llenado de un depósito o controlar un sistema de riego.

Precio

Podemos encontrar el YF-S201 (conexión de 1/2″) por 2.50€, el FS300A (conexión de 3/4″) por 4.50€ y el FS400A (conexión de 1″) por 6.50€, buscando en vendedores internacionales en eBay o AliExpress.

arduino-caudalimetro-componente

¿Cómo funciona un caudalímetro?

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.

La velocidad de giro se determina mediante un imán fijado al rotor, que es detectado mediante un sensor hall externo a la carcasa. Por tanto, ninguna parte eléctrica está en contacto con el fluido.

La salida del sensor es una onda cuadrada cuya frecuencia es proporcional al caudal atravesado.

f \left ( Hz \right ) = K \cdot Q \left (l/min \right) \Rightarrow  Q \left (l/min \right) = \frac{f \left( Hz\right)}{K}


El factor K de conversión entre frecuencia (Hz) y caudal (L/min) depende de los parámetros constructivos del sensor. El fabricante proporciona un valor de referencia en sus Datasheet. No obstante, la constante K depende de cada caudalímetro. Con el valor de referencia podemos tener una precisión de +-10%. Si queremos una precisión superior deberemos realizar un ensayo para calibrar el caudalímetro. 

ModeloConexiónCaudalesK
YF-S2011/2″1-30 L/min7.5
FS300A3/4″1-60 L/min5.5
FS400A1”1-60 L/min3.5

Esquema de montaje

La conexión del caudalímetro es muy sencilla. Por un lado alimentamos el sensor conectando Vcc y Gnd, respectivamente, a 5V y Gnd en Arduino. Por otro lado, conectamos la salida del sensor SIG a un pin digital que permita emplear interrupciones.

arduino-caudalimetro-esquema

Mientras que la conexión, vista desde Arduino, sería la siguiente.

arduino-caudalimetro-conexion

Ejemplos de código

Calcular el caudal

Para realizar la lectura del caudalímetro debemos calcular la frecuencia de la señal de salida del sensor. Para ello emplearemos una interrupción que cuente pulsos en un determinado intervalo, y dividiendo el número de pulsos entre el intervalo en segundos, obtendremos la frecuencia.

A continuación, convertimos la medición en frecuencia a caudal, para lo cuál empleamos el factor K, que como hemos dicho depende del modelo de caudalímetro que estemos empleando.

Calcular el consumo

Si queremos calcular el volumen de agua consumido, simplemente debemos realizar la integración respecto del tiempo

Si te ha gustado esta entrada y quieres leer más sobre Arduino puedes consultar la sección
Tutoriales de Arduino

Anuncio:

Previous Comunicación RS485 con Arduino y conversor MAX485
Next Regular temperatura con ventilador y Arduino
1000
12 Comment threads
6 Thread replies
1 Followers
 
Most reacted comment
Hottest comment thread
13 Comment authors
newest oldest
Santiago

Estimado, gracias por compartir este artículo con la comunidad. Le hago una pegunta, si quisiera medir cerveza, tendría que utilizar algun caudalimetro ultrasonico? de ser asi, sabe si existe alguno compatible con arduino? muchas gracias

Didac Vives

Hola Luis,
He tenido que multiplicar el flow_Lmin por 0.031 para obtener un valor real del caudal. Puede ser devido al ruido?
Gracias

Gabriel

Hola, para que esos datos me los mande a una pantalla ldc?me ayudas porfa no se mucho de arduino

Cesar

hola, una pregunta, la parte: volume += dV / 60 * (millis() – t0) / 1000.0;
t0 = millis(); el 60 es la cantidad de litros de agua ?

Manuel

Saludos, si quisiera solo medir si hay flujo o no hay flujo y en dependencia de esto tomar determinadas acciones como pudiera quedar el codigo. Gracias de antemano

kache

Estimado, gracias por esta info, nunca he hecho nada con arduino pero necesito realizar ese caudalimetro

Uriel

Hola, como puedo programarlo para conectar 2 caudalímetros al mimo arduino??

Luis Guevara

Hola yo quiero saber si esto se puede utilizarse en una fumigadora agrícola o si hay algo que se pueda utilizarse para medir la cantidad de producto que aplican los operarios y así controlar la cantidad que aplican de producto y no lo están tirando por el tapón de drenaje de la fumigadora me gustaría tener contacto con ustedes para desarrollar algo para el campo agrícola y decirle la necesidad que tengo porque quiero aplicarlo

Mirasu

Hay un error en attachInterrupt(digitalPinToInterrupt(1), ISRCountPulse, RISING); el 1 debería ser el pin donde conectas el sensor.

Rolando

Hola Luis buenas noches, primero quiero agradecerte por el trabajo que realizas. Mi consulta es si podrías subir el código para poder usar dos caudalímetros iguales y poder leer en el display la diferencia entre ambos caudalímetros. Esto es algo que estoy necesitando para un proyecto que vengo desarrollando y ya lo estaría necesitando. Gracias por tu tiempo Luis. Saludos. Rolando.

Raúl

Buenas Luis, gracias por tus post gran trabajo! estoy implementando este código junto al del LCD+I2C para mostrar por pantalla los valores del caudalímetro y no me muestra nada, creo que el problema es que mientras se esté ejecutando la interrupción no puedo mandar por el ic2 nada al lcd y el programa se cuelga, ya que ni por el serial me muestra los datos, ¿qué recomiendas? he intentado detener la interrupción antes de mandar los datos al lcd con detachinterrupt() y con nointerrupt() y sigue sin ir, ¿me podrías echar un cable? muchas gracias.

Ignacio

hola ,mezclando un poco las formulas llegue a la conclucion de que el volumen es v=(p/k)*ln(t) donde p son los pulsos en un tiempo determinado y k es la constante del caudalimetro.Me podrias decir si eso esta bien?.
Saludos