Cambio de sensor de nivel ayuda

Hola amigos

actualmente tengo un sensor de nivel en un tanque que me entrega de 0 a 5V.

El codigo para mostrar en un lcd los centimetros me funciona perfecto, pero ahora me surge un problema, mi jefe quiere que cuando el tanque reciba un rellenado, el arduino haga el calculo y diga cuanto recibio.

El comportamiento del tanque es lineal.

con saber el cambio de cms podria calcular los litros.

Pero no tengo ni idea como hacerlo =( =( =(

Ejemplo: el tanque esta en 50 litros que correponden a 50 cm (para hacerlo mas ideal)
y de un momento a otro el nivel comienza aumentar hasta 70 cm, osea que quedo en 70 litros....el cambio fue de 20cm.(esto es lo que quiero calcular)

alguien puede ayudarme?

comparto el codigo

#include <LiquidCrystal.h>
const float sensorPin = A0;
const int ledPin = 13;
LiquidCrystal lcd(12,11,5,4,3,2);

float outputValue = 0;
//
void setup()
{
lcd.begin(16, 2);
Serial.begin(9600);
}
/
/
void loop()
{

outputValue = analogRead(sensorPin);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Centimetros:");
lcd.setCursor(12, 0);
lcd.print((outputValue153/1023)+1.4);//el sensor no toca el fondo del todo queda a 1.4cm y 153 es el tope del tanque
lcd.setCursor(0,1);
lcd.print("Litros:");
lcd.setCursor(12,1);
lcd.print(outputValue
8/91);
delay(3000);

}

No es necesario código solo geometría.

El volumen es: V = A x h (en que 'A' es la área y 'h' es la altura).

Si el tanque es de base rectangular la area de la base es fácil de calcular, si no y si tiene una forma regular también es fácil. Si tiene una forma "rara" se puede hacer echando una cantidad de liquido conocida y midiendo la variación en altura (y sacando la área 'A').

EDIT: Una cosa mas que puede no ser clara. Haciendo el cálculo con 'A' en decímetros cuadrados y 'h' en decímetros da el volumen en dm3 (o sea en litros). Haciendo el cálculo con 'A' en centímetros cuadrados y 'h' en centímetros da el volumen en cm3 (o sea en mililitros).

alguien que me ayude?

Muchas Gracias

Lui...calcular el volumen lo tengo claro

Lo que no se como hacer es para que el Arduino me haga solo el calculo de cambio de alturas al repostar (rellenar)
y me diga que subio 10cm...por ejemplo

Y como se sabe cuando se inicia el relleno?

Hola Lui...justamente ese es mi problema.
No se que hacer, pues lo ideal seria que arduino detectara cuando el nivel empieza subir y no esta estatico o bajando.

Pero eso justamente es lo que no se como hacer

Hola.
Falta conocer un detalle importante.
¿Cómo o cuándo deberían establecerse los puntos a y b de los que quieres hallar la diferencia? Porque si el depósito sube de 20 a 40 cm, va a pasar por infinidad de puntos intermedios. ¿Cómo debemos identificar los puntos "desde aquí quiero medir" y "hasta aquí quiero medir"?

Hola Noter

Gracias por tu aporte, creeme que ando perdido en el tema, la idea es que el micro sea capaz de tomar esa decision por si solo, pero eso es lo que no se como hacer, que el identifique, aqui empeze a llenar y guarde ese valor en algun lado y luego diga, hasta aqui llene y guarde el segundo valor y finalmente haga la resta sencilla.

No se si tenga que usar un hardware adicional como una memoria o algo asi.

Les agradezco a ambos por responder y espero de verdad me puedan ayudar

Bueno. Claro que es posible, hombre. Puedes simplemente indicar con un pulsador el inicio y final de llenado, por ejemplo. Si quieres que el micro lo detecte por sí, lo que hay que saber es de qué forma se produce el llenado o vaciado; principalmente la velocidad. Entonces, controlando el tiempo y la medida (velocidad de llenado o vaciado) deberíamos poder detectar cuándo podemos dar por finalizado el llenado (y calcular la diferencia). Luego se podrá complicar la cosa tanto como se quiera (Hacer medias de las medidas, establecer umbrales de variación para no detectar falsos llenados...).
Un buen comienzo sería monitorizar y estudiar lecturas cada cinco minutos (por ejemplo) durante un tiempo de uso que incluya un llenado, a ver primero cómo lo harías tú a ojo, y después intentar decirle al arduino cómo decidir eso mismo.
Saludos.

Yo intentaría (un poco como dice noter) ver si es fácil ver cuando se inicia y finaliza el llenado. Creo que bastaría almacenar algunas mediciones y hacer algunas cálculos para ver si se está llenando, si se está vaciando o si está estático.
Creo que un dato importante seria saber cual es el caudal de llenado y vaciado. Cuanto tiempo se tiene que monitorar el nivel vara para saber si se está llenando o vaciando. ¿Qual es el caudal?

Amigos el caudal es variable.

Lo de ir almacenando datos me parece la opcion mas viable, y a eso es lo que quiero llegar, pero no lo se hacer.

o sea crean me no tengo ni idea como convertir el arduino en un dattaloger.

almacenando medidas seria la forma mas facil de hacer las comparaciones y calculos, pero no se que hacer, imagino que necesito un dispositivo externo como una SD para almacenar...pero no se como hacerlo

Me pueden ayudar y disculpen la ignorancia

Hay un ejemplo muí simple de datalogger en el site de Arduino:

Solo es necesario adaptar-lo.

Lo del datalogger no es necesario implementarlo en sí finalmente. Su utilidad es principalmente analizar patrones a buscar para establecer los puntos de cálculo. Si no tienes un shield SD o ethernet, podrías realizar log por el puerto serie en el monitor serie o, un poco más elaborado, con otro terminal. Podrías analizar datos de altura cada x tiempo, o datos de tiempo cuando hay una variación.

También se puede hacer con la EEPROM interna del Arduino. Hay aquí en el foro un ejemplo que me parece que está bien hecho:
http://forum.arduino.cc/index.php/topic,111366.0.html

Pero el hace 3 sketches diferentes:
1- para limpiar la EEPROM
2- para almacenar los datos (el datalogger propiamente dicho)
3- para descargar los datos para el ordenador.

Por eso, si hay posibilidad de hacer-lo como dice noter (por ejemplo con puerto serie) creo que es la opción mas fácil.