Capacitive Soil Moisture Sensor – Analog Output Always 0V

Hi everyone,
I've designed a capacitive soil moisture sensor based on the commonly available TLC555 circuit (used as a pulse generator ~1.5 MHz).
The circuit includes a soil probe (capacitive sensor), an RC filter, and a peak detector – based on a widely shared design.

Unfortunately, after assembling the circuit, I ran into a problem:

:right_arrow: The analog output (A_OUT) always reads 0V on the ADC.


Here's what I noticed:

  • If I touch the soil probe with my finger, the A_OUT voltage slightly increases – but it's still very low.

  • According to how the circuit should work:

    • Dry soil → higher voltage on A_OUT
    • Wet soil → lower voltage
  • But in my case, it's always near 0V, even in dry conditions.

  • I'm using an Arduino Pro Mini (3.3V / 8 MHz) to read the analog values.

  • The code is confirmed to work, because it reads correct values with an original capacitive soil sensor v2.0 — so the issue seems to be hardware-related, not software.

  • Power supply is stable at 3.3V

below is the schemes I used:

below is my schemes and pcb project:

Did you inspect your soldering?

Yes, all the connections are clear. I’ve checked for any incorrect or bad wiring, but everything seems to be in order.

Looks like your copper strips are about four times longer than those on the working sensor.

You can't have exposed copper on the sensor part.
Your copper strips don't form a capacitor.
Look at the traces on the board and design your copper strips to be similar.

Thanks for the feedback!
I actually made similar copper traces using tape, following the pattern from the original soil sensor design — two long, parallel strips (not exposed to the soil directly).

After making this change, I do get a slightly higher analog reading on A_OUT — now around 40, whereas before it was only 20–30.
However, I still only get a response when I physically touch the copper strips with my hand, which shouldn’t be the case.

As I understand it, I should be getting:

  • High analog values when the probe is in dry soil
  • Low analog values when it's in wet soil

But in my case, there's almost no change unless I touch the sensor directly — so it still seems like the capacitive sensing isn’t working properly yet.

Are you using a TLC555 and not a different version. The LM555 for instance will not work at 3.3V.

I would also buzzout all the ground connections between J1 pin 1 and all other grounds. It looks like you used very small vias for ground

@jim-p I've used this one:

Yes, I’ve already checked — all ground connections have continuity.

The IC is OK but I'd redo those solder connections on the white wires to the PCB

And also on the white wires, I see they are single solid conductor. Always use stranded wires for flexibility.

The sensors that can be purchased work badly or erroneously. Are you thinking you can do better?
It may be that is as good as it gets.
Good luck.

Not true, maybe you used them wrong.

It depends what IC you are using...

They do work for a short period, but not for long. I was thinking of trying again with some sort of enclosure that keeps water away from the connections. Copper oxidizes very fast however.
What I do today is use 6 off the shelf types and throw out the highest and lowest then average the remaining 4.

Common sense

Just to clarify, the off the shelf types are the single probe style with the two sensor halves divided by an insulator. I use fine sandpaper to keep the sensor part fresh. They are replaced every season.

I have only one, from DFRobot, and it still works fine.

Epoxy or adhesive heat shrink tubing.

Did you check the ground connections and re-solder the wire?