Tank Level Sensing

A project log for Shower water saver

An attempt to recycle the water wasted during the warm-up period at the start of a shower.

mechatweakMechaTweak 03/23/2015 at 04:000 Comments

Part of the problem with getting people to care about water saving is that water is so cheap. At less than a penny/gallon you really have to save a lot of water to make any device seem worth while. Of course the ideal scenario would be to have a system that would eventually pay for itself. If this could be achieved, consumers wouldn't have to care about conservation. They would want the system simply because it would save them money. I know that this build will never pay for itself, but the hope to prove the concept. Maybe in a mass production environment, a version of this device could be produced for cheap enough to make economic sense for the average consumer.

With this in mind, I will be attempting to make this build as cheaply as possible. One of the first parts I started researching was float switches/liquid level sensors. I think that both the holding tank, and the toilet tank will have to have a level sensor of some kind. These will help prevent overflows and let the system know when to refill the toilet. The low end float switches were around $10 (automation direct) I would need two. The low end level sensors were $40 (adafruit). After doing a little digging, I found that some people had been using capacitive touch sensors to read liquid levels. I had an arduino and an adafruit MPR121 on hand so I ran the following test:

I wrapped a plugged PVC pipe with four 1" strips of tin foil. Each strip was taped on, and roughly placed at quarter, half, three quarter, and full positions. I then soldered wires onto each strip and connected them to the MPR121 inputs.

I then wrote some code to test the sensor. At first I used the example code from Adafruit, this worked fine for my hand touching the strips, but did not sense water in the column. Even after I set the MPR121 for maximum sensitivity, it didn't register water as "touches". I then set the MPR121 to output the raw data, and noticed that a change was noticeable. All I had to do at this point was record the empty values and full values and write the code to look for these. It worked like a charm. Right now the plan is to use a 4" (maybe 6") pvc pipe as the holding tank. This would have foil sensors wrapped around it for level checks. For the toilet level check, I am going to try to do the same thing, but inside out. A dry-on-the-inside tube with the foil on the inside lowered into the water. Thats all for now....