There’s nothing quite like a real Christmas tree, but as anyone who’s had one will know there’s also nothing like the quantity of needles that a real tree can shed when it runs short of water. It’s a problem [RK] has tackled, with a Christmas tree water level monitor that has integration with Adafruit’s cloud service to give a handy phone notification when more watering is required.
The real interest in this project lies in the sensor development path. There are multiple ways of water level sensing from floats and switches through resistive and light scattering techniques, but he’s taken the brave step of using a capacitive approach. Water can be used as a dielectric between two parallel metal plates, and the level of the water varies the capacitance. Sadly the water from your tap is also a pretty good conductor, so the first attempt at a capacitive sensor was not effective. This was remedied with a polythene “sock” for each electrode constructed with the help of a heat sealer. The measurement circuit was simply a capacitive divider fed with a square wave, from which an Adafruit Huzzah board could easily derive an amplitude reading that was proportional to the water level. The board then sends its readings to Adafruit.io, from which a message can be sent to a Slack channel with the notification enabled. All in all a very handy solution.
Plant care is a long-running theme in Hackaday projects, but not all of them need a microcontroller.
If you can get the input frequency to around 5-10 MHz and measure the output amplitude with a peak detector, you can largely eliminate the effect of dissolved salts. I was once thinking about using the oscillator output pin of an ATTiny for the job.
And if you have two capacitors in series like that, you can calculate your reference capacitor’s impedance at the excitation frequency and replace it with a resistor of equal value, which is much more accurate because it doesn’t drift around with temperature so much and you can measure resistors better than capacitors. The RC circuit forms a low pass filter, which makes the ADC timing less critical.
However, since the SAR ADC on the chip has some picofarads of input capacitance in the sample & hold circuitry, you really want to buffer the sensor with an op-amp unity gain amplifier, because you’re charging this second capacitor in parallel with your water level sensor, which is probably what makes it non-linear. Just check that you’re not using some ancient op-amp with unreasonable input leakage current.
Thanks for the advice!
Fun project! I did a similar one, same purpose but different approach: measuring the distance to the water surface. RFM69 -> wifi -> mqtt -> influxdb -> grafana -> telegram
Cool! How did you do the sensing for your project? Ultrasonic?
Yep, HC-SR04. The measurements oscillate with a period of a few hours, never bothered to investigate that.