Capacitance sensing

I have a boat with what's politely called a "blackwater tank", and as you can imagine, it's important to know when it's getting full, so you can get a pumpout before it's TOO full. The level sensor that's in the tank works well, except that it doesn't indicate FULL until the tank is really full - like, no more flushing until we get a pumpout! I looked all over for various ways to sense tank levels, and found a very excellent video showing how you can do it by sensing capacitance. (It's based on this Adafruit tutorial: Overview | Adafruit MPR121 12-Key Capacitive Touch Sensor Breakout Tutorial | Adafruit Learning System)

To test it out, I soldered some short wires to three strips of copper tape, which I stuck to the side of a 1/2 gallon bucket. Connected the wires to the MPR121 breakout board, and it worked great! I was interested in the raw numbers coming through from each copper tape sensor, and they clearly showed a significant difference when there was water on the other side of the bucket wall, or not. It would be easy to convert those numbers (or more accurately, the relationship among the numbers from all of the sensors) to tank level.

Today, I tried it on my actual blackwater tank. The tank is a heavy plastic (1/8" maybe?), and unfortunately, it's installed in the boat with a significant angle iron frame aroud the bottom perimeter, and up each corner. I tried it with different lengths of copper tape, different thicknesses (by layering the tape), different positions of everything... but nothing I did gave results that were even close to what I saw with my small test bucket. The numbers were all so close together, there would be no way to make an accurate assessment of the level in the tank.

So, questions about capacitance, and sensing it with an Arduino.

  1. Is there a way to "amplify" the field that surrounds the capacitor (in my case, the copper tape)? And would doing so make it penetrate the thicker plastic of my blackwater tank? Since the MPR121 is really intended for use as a touch sensor, maybe it doesn't send as much voltage to its sensor pins as I need to penetrate my tank? Should I try the experiment without this breakout board, and alter the output by varying the size of the resistors I use?

  2. How important is it that my wiring (between the copper tape sensors and Arduino) be kept away from metal? If that can't be avoided, is there something I can wrap around the wires to insulate them from sensing the metal frame around my tank?

  3. Should I use something other than copper tape for my sensors? Something with a little more mass, maybe? If so, what? Heavier gauge copper?

Thanks so much for any help anyone can give.

This kind of capacitive sensor goes on the outside of the tank and can read levels through a plastic shell. NPN output so easy to interface with an Arduino or so to relay the signal to a more convenient point.

Link is from Taobao where I bought them before, but these sensors are also sold on E-bay, Aliexpress, Amazon and the other usual suspects.

wvmarle,

That looks like it will be a whole lot easier than creating my own. However - since that page you linked is in Chinese, I don't know what to search for in English to find them. I've tried "liquid sensor", "capacitive sensor", and several variations, but can't get anything like these to turn up in my searches. Can you help?

Thanks!

I think I found it by searching for water level sensor. Or look by part number, that usually works best.

高低电平输出接口 —— 型号:Y25-T12V
NPN输出接口 —— 型号:Y25-NO(NPN)
PNP输出接口 —— 型号:Y25-NO(PNP)
RS485接口 —— 型号: Y25-RS485

Thank you! I was able to find some on Amazon for $7. Three on order.

Brian