viernes, 15 de abril de 2016

Caudalímetro con sensor de flujo YF-S201 y LCD 2004


En el POST de hoy os voy a enseñar cómo medir el caudal de agua en L/hora que atraviesa la alcachofa de nuestra ducha, así como la cantidad de agua que gastamos cada vez que nos duchamos, para ello, vamos a montar y programar un sencillo caudalímetro basado en el sensor de flujo YF-S201, un display LCD 2004 para poder visualizar los valores a tiempo real y una serie de elementos auxiliares necesarios para que le llegue el caudal de agua a nuestro sensor.


Sensor de flujo YF-S201

El sensor de flujo YF-S201 está constituido por una carcasa de plástico, un rotor de agua y un sensor de efecto Hall. El funcionamiento de este sensor es muy simple, es decir, en el rotor tiene un pequeño imán adherido para poder registrar una vuelta cada vez que pasa por el sensor magnético de efecto Hall que hay en el otro lado del tubo, generándose pulsos de salida a una velocidad proporcional a la del flujo. En la parte posterior del sensor hay una flecha para indicar la dirección del flujo. Cada pulso en la salida del sensor equivale aproximadamente a 2,25 mililitros. Una de las cosas a tener en cuenta es que no es un sensor de precisión, por lo que la frecuencia del pulso varía un poco dependiendo de la velocidad de flujo, la presión del fluido y la orientación del sensor,  necesitándose una cuidadosa calibración si se requiere más que un 10% de precisión. A continuación os muestro algunas de las características más relevantes de este sensor.

Tabla de características del sensor de flujo YF-S201

La salida del sensor (cable amarillo) la vamos a conectar a nuestro Arduino para que mediante una correcta programación podamos visualizar a través del LCD 2004 el caudal que sale por nuestra ducha en L/hora, además del consumo de agua en litros que hemos realizado en un determinado espacio de tiempo, por ejemplo, mientras nos duchamos (el cable rojo a +5V y el negro a GND de nuestro Arduino). Como la señal del pulso de salida es una simple onda cuadrada es muy fácil de registrar mediante interrupciones, para posteriormente convertir los pulsos en caudal. Según la hoja de datos del fabricante, por cada litro de agua que pasa por el sensor obtenemos aproximadamente 450 pulsos, entonces:


Esto quiere decir que si tenemos la frecuencia (pulsos por segundo), simplemente lo tenemos que dividir entre 7.5 para obtener el número de L/min. Para el caudal en L/hora tenemos que multiplicar la frecuencia por 60 minutos que tiene una hora.

  

La instalación del sensor a nuestra ducha es muy sencilla, lo primero que tenemos que hacer es dejar libre de conexiones el grifo de la ducha, para enroscar allí un extremo de la manguera con conexiones hembra de ½”, conectando el extremo libre de la manguera a la entrada del sensor. Por último en la salida del sensor conectaremos la manguera con la alcachofa que habíamos retirado anteriormente del grifo de la ducha. El sensor en ambos extremos tiene roscas macho estándar de ½”, lo que nos facilita la conexión. También es muy recomendable aplicar teflón en cada uno de los extremos del sensor para evitar posibles fugas de agua.


Caudalímetro con Arduino UNO


Lista de Materiales:


·         Arduino UNO Rev.3.

·         Cable USB tipo A-B.

·         Sensor de flujo YF-S201.

·         Manguera con conectores hembra de ½”.

·         Alcachofa de ducha con manguera y conector hembra de ½”.

·         Módulo LCM 2004 I2C V1.

·         Display 20x4 LCD 2004.

·         Teflón.

·         Batería de 12VDC/3000mAh (DC12300).

·         Protoboard.

·         Cables de conexión.



Código del programa:



Video:

42 comentarios:

  1. me parece un gran proyecto lo tendre en mente saludos

    ResponderEliminar
  2. HOLA MI ESTIMADO TENGO UNA CONSULTA, TENGO UN PROBLEMA CUANDO INCLUYO LA LCD_2004() ME DA UN ERROR QUE NO ESTA DECLARADA EN EL SCOPE

    ResponderEliminar
    Respuestas
    1. Revisa el ; del final de la función. Si utilizas el programa tal cual te tiene que funcionar perfectamente.

      Eliminar
    2. MUCHAS GRACIAS POR ESTE APORTE, ME AYUDADO MUCHO :)

      Eliminar
  3. Mchas gracias por el aporte.
    Te voy hacer un par de consultas como puedo hacer que cuando llegue una cantidad de litros x que pueda selecionar en una pantalla corte una electro valvula y mande a a una bomba de otro deposito que abra su electro valvula y eche x litros de ese liquido para que la mezcla salga a un % selecionado en la anterior pantalla o Menu.

    muchas gracias por tu ayuda

    te dejo mi correo si me quieres echar una mano fmartintornero@gmail.com

    ResponderEliminar
    Respuestas
    1. Con una serie de pulsadores puedes seleccionar el numero de litros. En uno de mis POST anteriores hay un contador que por medio de dos pulsadores aumentas o disminuyes el valor de una variable, que en tu caso serían los litros. Una vez seleccionada una cantidad de litros la tienes que evaluar mediante sentencias if para cada caso y dentro de las cuales activaras o no las diferentes electrovalvulas por medio de reles, puesto que estas suelen trabajar a 12V. Un saludo.

      Eliminar
    2. No lo encuentro como se llama el post??
      Muchas Gracias por la respuesta.

      un saludo

      Eliminar
  4. Podría por favor explicarme de qué frecuencia habla en esta parte? Me confunde un poco
    "Esto quiere decir que si tenemos la frecuencia (pulsos por segundo), simplemente lo tenemos que dividir entre 7.5 para obtener el número de L/min. Para el caudal en L/hora tenemos que multiplicar la frecuencia por 60 minutos que tiene una hora."

    ResponderEliminar
    Respuestas
    1. La frecuencia es el número de pulsos que nosotros obtenemos al moverse la turbina del caudalimetro. Si te fijas en la programacion se obtiene el numero de litros de consumo y la cantidad de litros por hora que atraviesan el caudalimetro. Símplemente montalo y obtendrás esos dos valores. Si quieres litros por minuto simplemente quita el 60 de la fórmula. Un saludo

      Eliminar
  5. Amigo disculpa una pregunta, esta parte: "Esto quiere decir que si tenemos la frecuencia (pulsos por segundo), simplemente lo tenemos que dividir entre 7.5 para obtener el número de L/min. Para el caudal en L/hora tenemos que multiplicar la frecuencia por 60 minutos que tiene una hora."
    En esa parte no entiendo de donde sale ese valor de 7,5, es lo que se obtiene al dividir los pulsos por litro: 450/60 = 7.5 pulsos/segundo = 7.5 Hz ? o es alguna constante? es que tengo un modelo de caudalimetro diferente, de 1/4" y quiero implementarlo en proyecto parecido al suyo, de antemano muchas gracias!

    ResponderEliminar
    Respuestas
    1. Simplemente es una constante a efectos de calculo que nos ofrece el fabricante del caudalimetro para poder transformar los pulsos de la salida del sensor en litros o litros/hora. Un saludo

      Eliminar
    2. Y como bien dices se obtiene de dividir 450/60 porque asi lo establece el fabricante para que atraviese el caudalimetro un litro en un minuto se producen 450 pulsos

      Eliminar
  6. hola, mire tengo una problema al compilar dice:C:\Users\Nataly\Desktop\Sensor_flujo_YFS210\Sensor_flujo_YFS210.ino:57:55: fatal error: LiquidCrystal_I2C.h: No such file or directory

    #include // Librería LCD I2C

    ResponderEliminar
    Respuestas
    1. Te falta la librería para el LCD I2C. La puedes encontrar en uno de los primeros POST del BLOG.

      Eliminar
  7. buenas tardes:
    si quisiera ocupar un display 16x2 que se tendria que cambiar aparte de la libreria??
    lo digo por que no tengo el l2c
    espero tu respuesta

    saludos

    ResponderEliminar
    Respuestas
    1. Tienes que modificar la programación en si del LCD. Aunque te recomiendo I2C por su sencillez.

      Eliminar
  8. Hola! Lo de la vida útil está verificado? Porque si fuera cierto a los 600 litros ya se tendría que romper y eso es prácticamente un tanque de agua chico. Gracias!

    ResponderEliminar
  9. El fabricante hace referencia a 300.000 ciclos y no "pulsos". Realmente no se a que cantidad de litros equivale pero por supuesto que a una cifra elevadamente superior a la pequeña cantidad de la que me estás hablando. Saludos

    ResponderEliminar
    Respuestas
    1. Si, no me había dado cuenta que decía ciclos en vez de pulsos. Gracias por la respuesta y por toda la información del dispositivo!

      Eliminar
  10. Hola, en la lista de materiales dice : ''Módulo LCM 2004 I2C V1'' , esto seria el display 20*04 ?? o algun otro modulo adicional al display ?

    ResponderEliminar
    Respuestas
    1. Si quieres comunicar el LCD 2004 mediante I2C debes de tener soldado este modulo adicional a tu LCD. Algunas veces ya viene con el propio LCD y en otras ocasiones es necesario añadirlo. Saludos

      Eliminar
  11. Mariano gracias por este aporte me sirvio mucho para armar el caudalimetro y logre solucionar el problema con el lcd 20x4 pero tengo un problema con el medidor de flujo ya que si bien la pantalla me bota el print no me indica los datos que toma el flujometro asi que no se a que se puede deber?... gracias de antemano

    ResponderEliminar
  12. Revisa las conexiones del sensor de flujo y la alimentación. Saludos

    ResponderEliminar
  13. Como es que usas el "sda" y "scl" en otrospines distintos a los que marca la hoja de datos del aurduino uno (pines analogicos a5 y a4)?

    ResponderEliminar
    Respuestas
    1. Ya me fije bien, y se utilizan esos pines debido al modulo que controla el display de 20x4

      Eliminar
  14. Hola, hasta cuantos litros puede contar con esta configuracion ? 1000 , 10.000 , ?

    ResponderEliminar
  15. Este comentario ha sido eliminado por un administrador del blog.

    ResponderEliminar
  16. que tal una pregunta como le puedo hacer para leer varios caudalimetro a la vez?

    ResponderEliminar
  17. excelente me ayuda bastante para un proyecto, pero me esta presentando un error
    Usando librería Wire con versión 1.0 en la carpeta: C:\Users\Usuario1\Desktop\arduino-1.6.7\hardware\arduino\avr\libraries\Wire
    exit status 1
    Error de compilación

    ResponderEliminar
  18. Hola, Necesitaria saber si me podes ayudar con un codigo de que cuando llegue a ciertos litros corte la electrovalvula.

    ResponderEliminar
  19. Respuestas
    1. Instala el IDE 1.6.4 y mis librerías que esta todo en los primeros POST de mi BLOG y luego me lo cuentas. El código funciona porque en el video se demuestra, otra cosa es que te falten cosas a ti o no sepas como hacerlo, podías haber comentado lo que te ocurre y no simplemente tirar pir tierra el trabajo de los demás. Un saludo

      Eliminar
  20. Saludos Mariano. disculpa creo que tengo un problema en la conexión y no veo donde, tendrá de casualidad un esquema más detallado del circuito? Saludos, gracias por el aporte.

    ResponderEliminar
    Respuestas
    1. Dentro del código tienes la relación de conexión de los pines de todo el sistema en un diagrama. Un saludo

      Eliminar
  21. Hola, me ha gustado vuestro tutorial. Me pregunto si hay alguna forma de usar el sensor sin hechar mano de interrupciones ya que estoy haciendo un programa con varios sensores y un modulo sim900 y las interrupciones me afectan al correcto funcionamiento del programa. Queria hacer una funcion que simplemente contase un pulso y el tiempo que este tarda y asi traducirlo en litros pero no se como. He probado de todo y no hay manera.

    Gracias de antemano, saludos.

    ResponderEliminar
    Respuestas
    1. No se si existen más maneras de utilizar este sensor, pero yo solamente lo he hecho mediante interrupciones. Siento no poder ayudarte

      Eliminar
    2. al final he podido configurar el timer1 para que actue como contador de pulsos cuando llamo a la función, luego uso las ecuaciones que has indicado en este tutorial y parece que funciona bien.

      Eliminar
  22. buen dia me gustaria saber si este sensor tambien sirve para medir aire

    ResponderEliminar
  23. Si que te sirve para aire y para cualquier fluido que no sea corrosivo.

    ResponderEliminar
  24. Estoy utilizando un shield lcd sobre el Arduino, el mismo permite únicamente hacer conexiones sobre los pines analógicos. Se puede igual utilizar el sensor bajo el código?

    ResponderEliminar
  25. Lo tendría que investigar, pero si quedan libres los pines que utiliza el sensor no hay ningún problema. El LCD le tendrías que reprogramar dentro del código para que te funcione correctamente.

    ResponderEliminar