We measured the weight and electrical resistance of 6 sensors, starting with sensors that were fully soaked and saturated with water, and keep repeating the measurements until the sensors were completely dry. The weight difference between fully saturated and completely dry sensors was used as calibration point for 100% and 0% moisture respectively. The idea behind this is that the soil sensor would reach moisture equilibrium with the surrounding soil, and moisture in the sensor is assumed to be the same as the surrounding soil moisture level.
The measurement results are shown in below scatter chart.
The trend line (continuous line) was used to convert measured electrical resistance into moisture level percentage. For sensor 3 and sensor 6 we found that trapped air from casting the gypsum was the probable cause for measurement differences between 40-15% moisture. Apart from that, all 6 measured sensors followed the same moisture/resistance curve pretty close. We have not made measurements at different temperatures to check temperature dependency.
Conversion equations (Excel) found for this particular type of sensor are:
The Arduino Power function was not usable for moisture levels between 100% and 50% with above formula.
The solution is a workaround using below program line, which has the same result as above equation, but with much better output granularity:
moisture_pct = pow(float(Rsense2/31.65),float (1/-1.695))*400;
Measurement data tables (Excel file) can be downloaded from this link. Sensor Calibration
For an overview of all Vinduino project related postings click here