Saltar al contenido
Control Automático Educación

Medidor de Nivel de Agua por Presión con Arduino

Hola controleros y controleras, les doy la bienvenida a otra entrada del sitio WEB donde vamos a aprender a Medir el Nivel de Agua de un tanque usando un sensor de presión (MPX5010DP) y CUALQUIER microcontrolador (En este caso usaremos la placa de desarrollo de ARDUINO)

Antes de comenzar, te hago la invitación de que veas nuestro CURSO GRATUITO DE ARDUINO (CLICK AQUI)

Y también de que te suscribas al Canal de YouTUBE si quieres seguir aprendiendo sobre microcontroladores, sensores, programación y teoria de instrumentación y control:

Medición de Nivel de Agua

En esta entrada vamos a discutir una de las formas más económicas de realizar la medición del nivel de un tanque realizado por medio de un sensor de presión diferencial.

En este sitio WEB y en el canal de YouTube, ya hemos hablado de los SENSORES de PRESIÓN. Por eso te recomiendo de que le des un vistazo a esa entrada.

Como vimos en esa entrada anterior, ya sabemos que es la presión, las diferentes presiones que existen y sobre todo que

El nivel y el caudal pueden ser derivados de una medida de presión. Por ejemplo, para medir nivel tenemos que:

\Delta P= P_H – P_L =\rho g h
Medicion del nivel por presión diferencial

Por eso a pesar de no emplear un sensor de nivel de agua en este proyecto, es posible realizar la medición de nivel empleando otra característica de la física por medio de un sensor de presión diferencial de aire con arduino.

EEPROM Arduino

EEPROM con Arduino

LCD Arduino

LCD Arduino

Sensor de Presión MPX5010DP

Existen diferentes sensores de presión diferencial en el mercado de los microcontroladores conocidos como Sensores de presión tipo MPX, MPX53DP, MPX53GP, MPX2010DP, MPX2010GP, MPX2050DP, MPX10DP, MPX5010DP, etc, y básicamente varían en la capacidad de presión que es capaz de medir el sensor.

Dependiendo de nuestra aplicación deberemos seleccionar el sensor adecuado, recordando que muchos de esos sensores necesitarán ser acoplados a circuitos amplificadores de voltaje para poder ser leidos por un microcontrolador (en este caso nuestro Arduino).

Por eso les recomiendo conseguir el MPX5010DP que ya entrega en su salida un voltaje de 0v – 5v ideal para microcontroladores, a diferencia de su hermano el MPX10DP hasta 50mV lo que requerirá de un amplificador operacional para tratar su señal.

MPX5010DP con Arduino

El transductor piezo-resistivo de la serie MPX5010 es un sensor de presión de silicio monolítico de última generación diseñado para una amplia gama de aplicaciones, pero particularmente aquellas que emplean un microcontrolador o microprocesador con entradas ADC. Este transductor patentado de elemento único combina técnicas avanzadas de micromaquinado, metalización de película delgada y procesamiento bipolar para proporcionar una señal de salida analógica precisa y de alto nivel que sea proporcional a la presión aplicada.

MPX5010 puede medir una presión de 10 kPa y MPX5100 puede medir una presión de 100 kPa (14,5 psi). Da salida lineal sobre el rango como se muestra en la figura extraída de la hoja de datos.

Voltaje vs Presión MPX5010DP

Claro está que las aplicaciones de este sensor NO se limitan únicamente a la medición de Nivel, que es el objetivo de esta entrada.

Como vemos en el gráfico anterior, la ecuación para obtener la presión del sensor viene dada por:

P=\dfrac{V_{out}-0.04V_s\pm Tol}{0.09V_s}

V_s es el voltaje de alimentación (V_s=5v) y V_{out} es el voltaje que entrega el sensor (o sea, el que leemos con arduino en bytes y lo transformamos a voltaje) y Tol es la tolerancia, un ajuste que debemos hacerle al sensor para calibrar la medida.

Medición de Nivel por Presión Hidrostática

En este caso vamos a valernos de la presión hidrostática presentada anteriormente para la medición del nivel al interior de un tanque.

El pinado del sensor de presión MPX5010DP se muestra a continuación:

IMPORTANTE: Según el datasheet, el sensor no puede entrar en contacto directo con el liquido, por lo tanto debemos crear un colchón de aire en el interior del tubo que esta conectado al sensor para evitar que el liquido entre al interior del mismo.

Circuito Nivel Tanque

Vamos a valernos de que el sensor de presión presenta una medición lineal, según lo pudimos observar en su datasheet y en la gráfica de arriba donde muestra la relación voltaje – Presión. Sin embargo, puedes perfectamente calibrar tu sensor usando una regresión lineal, como la que hicimos el el video con el sensor de temperatura con PIC.

Tomando como base la ecuación de presión diferencial que relaciona la altura (recordando que la presión a la atmosfera es cero):

P=\rho g h

donde P es la presión, \rho es la gravedad y h es la altura o nivel del tanque.

h=\dfrac{P}{\rho g}

Las unidades que necesitamos saber aqui son, la del Pascal:

Pa=\dfrac{kg}{m.s^2}

densidad del agua (aprox)

\rho_{(agua)}=1000\dfrac{kg}{m^3}

gravedad (aprox)

g=10\dfrac{m}{s^2}

EJEMPLO: Supongamos que estamos leyendo 1kPa=1000Pa, la altura sería:

h=\dfrac{1000\dfrac{kg}{m.s^2}}{1000\dfrac{kg}{m^3}10\dfrac{m}{s^2}}=0.1m=10cm

Descargar hoja de excel de calibración via regresión lineal

>> DESCARGAR AQUI <<

A continuación te dejo el código para que lo copies y lo pegues en tu compilador, recuerda que para tener acceso a él, solo basta con compartir el contenido de este post, de esa forma ayudas que este sitio web siga aportando más contenidos gratuitos y de calidad.

Eso es todo por la entrada del dia de hoy, espero les haya gustado y hayan aprendido algo nuevo. Si te ha servido el contenido de esta entrada, de los videos y los códigos de implementación y deseas apoyar mi trabajo invitandome a un café super barato, puedes hacerlo en el siguiente link:

👉 Invitar a Sergio a un Café ☕️

Que esten muy bien, nos vemos en la siguiente entrada.

Entradas relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Comentarios (5)

Hola Sergio, gracias por tu respuesta.
Vuelvo a insistir en el dispositivo mpx5010dp, para ver si lo puedo emplear en mi proyecto. Se podrá obtener una precisión de 1 mm con dicho sensor realizando una toma de datos de 0 a 35 mm, es decir 35 datos y con ellos realizar la regresión lineal y además utilizar una sonda de 70 mm?
Gracias.
Saudos!

Responder

Puedes intentarlo, te recomiendo uses el circuito del datasheet que incluye unos condensadores en los pines para la eliminación del ruido, también que uses una sonda metálica si es posible y que comiences con 1 solo sensor para ver que tal te trabaja. Y talvez implementar un filtro pasa bajos en el arduino, si te da mucha variación.

Responder

Gracias Sergio por tus sugerencias, lo tendré en cuenta.
Saludos!

Responder

Buenas tardes estimado Sergio Andrés Castaño Giraldo,
Antes que nada te quiero felicitar por el excelente trabajo que realizas brindando información que permite a los demás a realizar sus proyecto.
Me presento, mi nombre es Luis Mariano Campos de Argentina – Tucumán, estoy realizando un trabajo final en el cual debo medir el nivel de agua en un rango de 0 a 35 mm con una precisión de 1 mm, mi pregunta con el sensor que empleaste en tu explicación mpx5010dp y además realizando el valor promedio, la corrección según en el data sheet y la regresión lineal se puede obtener una la precisión de 1 mm con dicho sensor?. Al final del vídeo, no puedo apreciar si el nivel de agua se corresponde con lo que el firmware arroja por pantalla. Además te realizo esta consulta porque quiero estar seguro para realizar el gasto, ya que desde un principio necesito dos de estos sensores para mi es un poco costoso. O quizás existe otro sensor de esta misma familia que posee mayor precisión. Apelo a tu sabiduría y experiencia.
Desde ya te agradezco de antemano cualquier detalle que me puedas facilitar.
Un cordial saludo!

Responder

Hola Luis, realmente tu spam es pequeño y tu tolerancia pequeña, no te recomendaría usar este método pues a veces es engorroso tener una precisión tan elevada. Ahora este sensor mide hasta 100 cm, lo que está muy por encima de lo que necesitas y para tu caso habría que usar uno que aguente menos presión. Quizas este sensor (click) te pueda servir, pero debes verificar la precisión que tiene.

Responder