Hola buenas tardes. Me he propuesto realizar la medición de sondeo de un pozo de agua. Mi objetivo es medir la altura que se encuentra el agua respecto a la superficie, y añadir una alarma cuando baja de cierto nivel. Agradecería mucho opiniones, mejoras etc...
La medición de nivel la realizo partiendo de la presión hidrostática:
Con el compresor de hinchar las ruedas del coche, manómetro (bar) y una llave que cierra la tubería para que no pierda presión. No tomaré encuentra los efectos de la temperatura, densidad ni gravedad. Ya que es para tener una medida más o menos real.
La bomba del pozo está sumergida en el agua y el nivel del agua no debe de bajar más de este nivel de la bomba. Por eso también añadiré una alarma de bajo nivel, para cuando llegue a este me avise o pare directamente el motor.
De la superficie hasta la parte inferior de la bomba, hay un tubo de plástico de 6 mm donde conecto el manómetro y el compresor. Al aplicarle presión con el compresor, el manómetro nos indica la presión en bares. Donde 1 bar es equivalente a más o menos 10 mts.
Lo que realizo es, calcular la distancia que se encuentra el extremo sumergido del tubo y el nivel del agua.
Por ejemplo, si el extremo del tubo está sumergido en el agua a 100 mts. de la superficie, y la medición del manómetro nos indica 2 bares. Esto nos dice que:
Como 2 bares son 20 mts. 100 - 20= 80 mts es la altura que se encuentra el nivel del agua respecto a la superficie.
Todo esto lo realizo manualmente.
Esta medición la quiero realizar con Arduino, que me indique en pantalla lcd los bares de presión, los metros a descontar y altura a la que se encuentra el agua respecto a la superficie. Además quiero poner una alarma de nivel para evitar que la bomba se quede sin agua y funcione en vacio.
Los materiales que tengo pensado utilizar son: Arduino Uno, sensor de presión y pantalla lcd 16x2.
El sensor de presión me está llevando quebraderos de cabeza, cual utilizo... Y además, son muy caros de 100€ no bajan. Yo tengo pensado utilizar uno que no sea menor a 4 Bares ni mayor a 10 bares. Voy a poner como ejemplo este:
Lo primero que me encuentro, la variación del sensor es de 0 a 10 V. Por lo tanto tendría que hacer un divisor de tensión en la entrada analógica de Arduino para que no entrara más de 5v. Utilizaría 2 resistencias de 1kohm. En esta página se explica muy bien:
http://www.luisllamas.es/2014/09/entradas-analogicas-en-arduino/
Otras de las cosas que creo que tendré que tener en cuenta es, realizar medida de cuando el sensor este en 0 bar, y ver que tensión tiene de salida, para así tomar esa tensión como 0 bar en el Arduino. Igualmente tendré que realizar medida de cuando el sensor llegue a 6 bares y ver que tensión tiene (esta ultima medida supongo que me será mas difícil).
Según las características del sensor me dice que la alimentación es de 24 VDC. Con un transformador de 240V a 24DC podría alimentarlo. Pero para alimentar el Arduino no puedo aplicarle esta tensión, ya que su voltaje de entrada limites son de 6 a 20v, que es la optima de trabajo para Arduino. Tendría que utilizar un regulador que me pasara de 24V a 9V, (LM7809 el límite de voltaje de entrada para este regulador es de 35V, tendría que colocar un buen disipador, o bajar la tensión por medio de un divisor a un voltaje apropiado).
Expongo mi sketch realizado:
#include <LiquidCrystal.h> ///////////MEDICION NIVEL AGUA
LiquidCrystal lcd(7,8,9,10,11,12);
float AN0; //entrada analogica, conversion, precision de 0 a 1023.
float V; //equivalencia conversion, AN0 a Voltaje. De 0 a 5V.
float BarPresion; //equivalencia conversion, AN0 a Bares. De 0 a 6Bar.
float UnBar=1; //para calcular equi 1 bar son 10.2Mts.
float EquiBarMts=10.2; //equivalencia 1Bar son 10,2Mts.
float BarMax=6; //Bares maximo del sensor.
float VMax=5; //Voltaje maximo de entrada arduino.
float AnConverMax=1024; //Entrada analogica conversion maxima.
float BombaMts=267; //Metros profundidad a la que esta la bomba.
float DescuentoMts; //Metros a descontar a BombaMts.
float NivelAguaMts=0; //Metros nivel del agua respecto al suelo.
float AlarmaMts=264; //Alarma de nivel. Si sube de este nivel activa alarma pin 2.
int Alarma=2; //Salida digital pin 2 de activacion/desactivacion alarma nivel.
void setup() {
pinMode(Alarma,OUTPUT);
lcd.begin(16,2);
Serial.begin(9600);
}
void loop() {
AN0=analogRead(A0); //sera un valor comprendido entre 0 y 1023.
V=AN0*0.00488; //variacion de voltaje de 0 a 5 V.
lcd.setCursor(0,0);
//CentBar=map(AN0,0,1023,0,600); //mapeo a 600 centibares. NO REALIZO MAPEO me resulta mas complicado.
//Serial.println(CentBar,2);
BarPresion=(BarMax*AN0)/AnConverMax; //Pasamos Conversion a Bar.
DescuentoMts=(EquiBarMts*BarPresion)/UnBar; //Mts a descontar ha MtsBomba.
NivelAguaMts=BombaMts-DescuentoMts;
lcd.print("S:");
lcd.print(NivelAguaMts,2); //Medida resultado nivel del agua respecto suelo.
lcd.print("-");
lcd.print(DescuentoMts,2); //Mts ha descontar.
lcd.setCursor(0,1);
lcd.print("Bar:");
lcd.print(BarPresion,2); //Bares de presion obtenidos.
lcd.print("-V:");
lcd.print(V,2); //voltaje en la entrada analogica.
delay(10000); //tiempo de resfresco 1 segundo.
lcd.clear();
////////////////////ALARMA DE NIVEL////////////////////////////////////////////////////
if(AlarmaMts<=NivelAguaMts)
{
digitalWrite(Alarma,HIGH);
Serial.println("Alarma ON");
}
else
{
digitalWrite(Alarma,LOW);
Serial.println("Alarma OFF");
}
}
Me gustaría que me aportarais alguna idea, ayuda o si estoy equivocado en algunas de las líneas anteriores. Muchas gracias de antemano.