A soil impedance spectrometer.
A homemade EIS rig. A Pico 2 W drives AC through the ground and measures the voltage, from millihertz to about 100 kHz. Sweeps are logged with soil temperature, moisture and air.
Browse the data → Trends Compare sweepsFrom the archive ●
Summary unavailable. Browse the archive.
How it works
Why a spectrum
Soil conductivity depends on water and dissolved salts. How it changes with frequency separates effects at grain and electrode surfaces that a single DC reading can't.
Four rods
Contact resistance at a rod is often larger than the soil's own. The outer rods (C1, C2) carry the current; the inner pair (P1, P2) only sense voltage, so the contacts drop out. This is the Wenner layout: four rods in a line at spacing a, here 60 mm in a 3D-printed holder.
Push-pull drive
The DAC swings 0 to 3.3 V. An op-amp stage recentres that to a line A around 0 V, and an inverter makes B = −A. A drives C1 through a current-sense shunt, B drives C2, so the middle of the soil stays near 0 V.
One point
- Play a sine at one frequency.
- Record current (across a known shunt) and voltage (P1 to P2).
- Lock-in demodulation gives amplitude and phase of each.
- Z = V / I, corrected for timing skew, gain and fixture strays.
- Step to the next frequency.
Hardware
The rig today
| Pico 2 W | Rust firmware. Sine out, samples in, sensors, USB or Wi-Fi. |
| MCP4921 | 12-bit DAC |
| Drive A / B | Op-amp push-pull to the current rods |
| Sense | Buffers and difference amps |
| PCM1808 | 24-bit stereo ADC: current and voltage |
| Low-f paths | Pico ADC and ADS1115, below what the audio ADC reaches |
| Sensors | BME680, DS18B20, HW-390 |
| Software | PyQt6 app: sweeps, calibration, live scope, analysis |