The tank is around 4 gallons. I don't have exact dimensions at the moment, but I do know its about 9 to 10 inches deep. The water in the tank will be reverse osmosis deionized water, so its very clean. There is no debris what so ever. The temp is essentially room temp.

James,
The Sparkfun idea looks good and can be linked to the ADC of an arduino or Pic chip easily. I am not an expert, but that looks like a very straight forward fluid level solution if you have access to the top of the fluid and it is not under pressure. Good luck and don't forget some pics of your project when it's done.
Bob

If, for the fun of it, you want to play with making a homemade sensor, then one way to do it would be to take a glass or plastic tube (say 1/4" ID or so) and afix foil along the long axis on both sides making a capacitor. You could also just take two strips of copper (or brass or other metalic material) and put spacers between them. The idea is to make a water/air capacitor in which the amount of water dialectric is determine by the water level in the tank. Since the dialectric constant of water is about 80 times that of air, you get a pretty good capacitance change as the water level changes. You can then put this capacitor in a bridge circuit to get your readings.

If you don't mind the cost, this looks like a reasonable solution. Simple, no moving parts. Should work fine in a lab environment.

The documentation is awfully sparse on the precision and accuracy. Does it get thrown off by day-to-day changes in atmospheric pressure? Fluid density changes with temperature (and of course composition), so how does this effect the reading? It's a small thing, but always an issue in the real world. How well does it hold up to cleaning, or what happens when it gets coated in lime scale or algae? Just sayin'

Ok, so I got the eTape and the arduino. I used some basic code from adafruit.com and I'm getting resistance readings in the debug panel.

Here is the exact code I put in:

Code ( (Unknown Language)):

// the value of the 'other' resistor

#define SERIESRESISTOR 560

// What pin to connect the sensor to

#define SENSORPIN A0

void setup(void) {

Serial.begin(9600);

}

void loop(void) {

float reading;

reading = analogRead(SENSORPIN);

Serial.print("Analog reading ");

Serial.println(reading);

// convert the value to resistance

reading = (1023 / reading) - 1;

reading = SERIESRESISTOR / reading;

Serial.print("Sensor resistance ");

Serial.println(reading);

delay(1000);

}

And this is the way I wired it.

I connected pin #2 of the sensor to ground, then pin #3 to a 560 ohm resistor. The other side of the 560 ohm resistor to VCC to create a resistor divider. Pin #4 is between the sensor and the resistor and pin#1 to A0 on the arduino.

Also, most of the documentation on the eTape is for an older version. The version written about has only two pins, the newer version has four pins.

At the end of the day, what I want is for the arduino to printout a "percent" that tells me the water level. From that point, I want to have that info uploaded via ethernet to Cosm or possibly send me an email with the reading once a day.

I connected pin #2 of the sensor to ground, then pin #3 to a 560 ohm resistor. The other side of the 560 ohm resistor to VCC to create a resistor divider. Pin #4 is between the sensor and the resistor and pin#1 to A0 on the arduino.

Click to expand...

I don't follow. Can you state that another way? Actually a drawing would be better.

I know you seem to be "past" this step, but if you wired it the way I think you might have, then your reading will never go to zero, and it will be nonlinear. These are things you can correct for in your code, but I need to make sure it's as I suspect.