背景
为了启动我重返电子行业的长期抱负,我决定尝试制造一种设备,用于测量盆栽植物的土壤水分,以确定它们是否需要浇水。第一个化身的目的是让一个 LED 显示植物的当前水位(加水是红色的!),但当然我有一个疯狂的计划,让植物在路上自动浇水。
我的第一次刺伤是基于Garduino instructable,特别是这里的这个电路:
它是一个简单的分压器,使用一个已知的电阻器和两个粘在土壤中的铜线电极作为测量装置。在我的Teensy++A0
上使用 ADC测得的电压与电阻的比率成正比,我可以返回到实际的土壤电阻。
然而,在实践中,土壤阻力会发生非常大的漂移。几乎在打开设备后,测得的土壤电阻开始下降。(如果您将万用表插入植物,也会发生这种情况。)经过几天的测量,我发现测量值和湿度水平之间没有可用的联系。取下探头并检查它发现阳极上有相当多的失去光泽。对我来说,这表明某种化学反应正在发生(电解?)。万用表测量几十毫伏的电压差:我把我的工厂变成了电池!
为了避免这个问题,我使用了一个由不锈钢螺丝制成的探头。由于它们的反应性远低于铜,因此氧化应该不是问题。此外,为了避免“充电”土壤,我将分压器放在了 Teensy 的两个数字输出引脚之间。测量发生如下:
- 当没有进行测量时,两个引脚都保持低电平。
- 我把一根针推高。我等待一毫秒,然后测量分压器中心的电压。
- 我反转引脚电压(高<->低),等待一毫秒并再次测量。我现在应该测量第一次测量的补码。
- 两个引脚再次拉低,设备休眠直到下一次测量。
这确实减少了氧化问题,但是一旦我开始测量,测得的土壤电阻似乎仍然开始下降。
题
- 谁能推荐一种可靠的方法来测量土壤水分?
- 谁能解释这里到底发生了什么?