Capacitive Soil Moisture Sensor Trouble

Hello,

I have trouble with my DFRobot capacitive soil moisture sensor

By default analogRead gives value 0, if I put it in the water it only goes up to 6 but if I touch it with my finger value goes up to 150. I tried 2 arduino boards and 2 sensors but none of them worked.

Picture of the sensor: Imgur: The magic of the Internet
Connection diagram: Imgur: The magic of the Internet

I hope that someone can help me

Hi, @haberty1
Welcome to the forum.

Your images;


Can you please post your code?

Tom.. :smiley: :+1: :coffee: :australia:

Hi,
Have you read this page?

Thanks.. Tom.. :smiley: :+1: :coffee: :australia:

one thing you may want is a 3d printed stand which allows you to put the sensor in at the same soil depth every time (or each sensor as the case may be).
I designed one a few years ago as a demo for building 3D printed parts in VR.
here is the model:

here is the way too long video:

Best thing for calibration I have found (despite the wiki, which is good) is to use soil. Get some as dry as you would want your crop to be in. If rocky or silty ground, I dig a small depression and screen rocks out. they will scratch the solder mask and cause corrosion or create voids which prevent good measurement. fill the hole in with the screened dirt and lightly compact. Use the printed base to make sure the sensor is at a known depth. take a few readings and average them and use that as your lowest range.
then water the soil around the sensor and let it soak in until it is looking good for your plant. take some more measurements and use that as the high end of the range.

the sensor should not be powered all the time as it will eventually corrode out. Best to switch it's power with a fet, but it also only draws 5ma so you could get away with powering it from another pin. just dont tell anyone on the arduino forums I said that.
I have also found they are a little bit temperature sensitive though hard to tell if this is a result of surface evaporation. Best to cover with some shade cloth.

void setup() {
  Serial.begin(9600);
}
void loop() {
  int val;
  val = analogRead(A0);
  Serial.println(val);
  delay(500);
}

Yes, it didn't help

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.