Quite a bit of reading has suggested that capacitive FDR (Frequency-Domain Reflectometry) and TDR (Time-Domain Reflectometry) approaches are going to be impractical when very low cost is a requirement. Resistive continues to look pretty unattractive, so I think TDT (Time-Domain Transmissive) is going to be the approach I focus on.
All this would be much easier if the abundant prior work on this topic weren't locked away behind expensive journal paywalls or commercial secrecy agreements. The few people who seem to have done it for hobby purposes mostly show up asking questions on forums and mailing lists; they never seem to write their results up. Needless to say, I'm frustrated, but I'm going to try to do something about it.
So: In TDT, capacitance is measured by sending a pulse or wave down an insulated loop or line through the soil. The capacitance in the line is altered by the amount of water surrounding the line. As the capacitance of a conductor alters the time it takes for a pulse to propagate through the wire, the capacitance can be measured by timing how long a high pulse takes to propagate through the line.
Alternatives wise, resistive measurement will work, but electroplating and corrosion make an AC resistive approach preferable. Generating AC from a +5VDC to 0V potential difference is a pain, especially if you want a balanced current. Measuring the resistance is challenging too; it's possible to use an RC oscillator but determining the reference frequency requires calibration (and a way to store that calibration) or tightly matched components for a reference oscillator. It's a PITA.
Naturally, a neutron probe is out of the question.
So: I'm now aiming to produce a TDT (time-domain transmissive) sensor. They're easier to make because you can use a crystal to produce a reference sine wave. You compare that wave to the output of putting that wave through the insulated transmissive loop in the ground, and the phase shift gives you a measure of your moisture level. That's the concept, anyway.
The main downsides of TDT are:
- It requires a trench to install the sensor, so there's plenty of soil disturbance and it can be annoying to install around existing plants.
- If voids are left around the buried line or soil it packed too densely around it when it's covered, the readings can be misleading.
- It's fiddlier to build than resistive
- It measures total H2O content in the soil, not available water. For absolute measurements, soil-specific calibration is required to account for differing soil composition. It seems this is true of all cap sensors, resistive sensors, and neutron probes; only tensiometers can measure available water. It doesn't matter much if you only want to measure relative moisture change.
Still, I think it's likely to be the best option. Design work and experiments to come now I've decided what I need to build and learned enough to have some idea what's involved.
I'm going to be working on the other parts of the system in parallel as I study up on scary soil physics stuff and read lots of papers. There won't be fast results here. Expect designs on the rest of the system, though.
Hi Craig, really glad to find your posts. Experienced the same frustration about the lack of details on the subject. I am working to build an automated irrigation system (Arduino and/or Jeenode) system for our tomato culture.ReplyDelete
It seems to me that the interesting thing about TDT is that you can have two sensors, one horizontal (actually just a double wire shorted at one end) and one vertical. This would allow the system to have information about the water penetrating the soil. The other interesting thing is that the horizontal sensor could be long enough to average the readings over a greater area. However, calibration would be needed for each installed probe.
Really waiting to see how this is moving on. Florin
In terms of having multiple sensors, I've seen reports that TDT cap sensors can interfere with each other. I'm not yet at the point of testing this experimentally, but it's something to be aware of the possibility of.Delete