How to sense/detect/measure water levels

I'm working on a project right now that has two resevoirs of water, and I need to be able to tell how much water is in each of them.

The only two ideas that I have at the moment is to use either an IR distance sensor or an ultrasonic one. Is there anything that I could do/use? Thanks.

How big are the reservoirs? By how much does the water level change?
Depending on your answers there are lots of other options.

Okay, each reservoir holds 12 cups (where a cup is 6 fl. oz.). The first one is long and slender, but is about an inch and a half wide. The second one is more cylindrical, but has a base of about 3x4 inches.

Water level will probably change equally (i.e. water will run from reservoir #1 to #2, with #1 being refilled periodically).

There has been a lot of discussion on the Arduino forums along similar lines, so I suggest to use the search function.
But here is one recent thread: Looking for a level sensor in a very dirty liquid - Sensors - Arduino Forum
and you might consider the "etape" sensor: 12 eTape Liquid Level Sensor + extras : ID 464 : $39.95 : Adafruit Industries, Unique & fun DIY electronics and kits

When I was looking into this some years back, I found that some guy had patented sticking 2 wires in the water and taking one side to a transistor base to switch a beeper..... I can't find it now. I thought a patent had to be non-obvious to someone of similar standing. Using a transistor to amplify a signal, is surely what transistors are for?

[barney]True story[/barney]

A pressure sensor would be around $10 and quite precise. A bit of an old document but it explains the concepts. Assuredly better examples out there somewhere.

http://cache.freescale.com/files/sensors/doc/app_note/AN1516.pdf

You'll want a differential pressure sensor so you can take changing barometric pressure out of the equation.

jremington:
There has been a lot of discussion on the Arduino forums along similar lines, so I suggest to use the search function.
But here is one recent thread: Looking for a level sensor in a very dirty liquid - Sensors - Arduino Forum
and you might consider the "etape" sensor: 12 eTape Liquid Level Sensor + extras : ID 464 : Adafruit Industries, Unique & fun DIY electronics and kits

That etape might do the trick. It would possibly work well for the tall/skinny resevoir, but the cylindrical one, I'm not so sure. Is there etape that comes in small sizes?

Also, the sensor might need to be submerged in very hot water (i.e. almost boiling).

the sensor might need to be submerged in very hot water (i.e. almost boiling).

Read the adafruit page: max 140F, 60C

JimboZA:

the sensor might need to be submerged in very hot water (i.e. almost boiling).

Read the adafruit page: max 140F, 60C

I did see that there, but the water's probably going to be around 90C.

Would the pressure sensor opperate properly in that heat?

CuddlyKittens11:
Would the pressure sensor opperate properly in that heat?

Try http://cache.freescale.com/files/sensors/doc/data_sheet/MPXV4006.pdf

The datasheet references usage in a washing machine. That's not 90C but as long as the sensor itself is kept out of the heat it would be fine.

Washing machine pressure sensors usually operate via a trapped-air line, with the pressure sensor always well above the water level. As the water enters the machine air in the line leading to the sensor is compressed.

This works great if the machine is emptied each time, but it doesn't work well if water is always present. In such a case, the air in the tube will gradually dissolve in the water and water will move into the tube.

Another option is to use a water pressure sensor designed for the purpose. You could have a line leading to the sensor from the bottom of one of the tanks, with the pressure sensor being at room temperature. I use this technique to measure the water levels in large water tanks and have found it to be extremely accurate and reliable.

Finally, you can consider capacitive liquid level sensors. These are non-contact and relatively immune to temperature differences. There are several posts on the Arduino forum on the topic.