1. 土壤湿度传感器标定与灌溉阈值确定
标定对象与实验设计
本次标定对象为电容式土壤湿度传感器(输出为模拟电压或数字原始计数,记为 raw),目标土壤为壤土(砂粒约 40%、粉粒约 40%、黏粒约 20%)。电容式传感器测量的是介电常数,而介电常数与体积含水率 θv(单位 m³/m³)呈非线性关系,且受土壤类型、容重、盐分与温度影响,因此必须针对具体土壤做多点标定,而不能直接套用厂家通用曲线。
标定实验的关键设计要点:
- 取样点数量:至少 5 个含水率水平(干、偏干、中、偏湿、饱和附近),覆盖灌溉决策关心的区间(本例关注 0.10–0.35 m³/m³)。
- 参考真值:以烘干法(105 ℃ 恒重 24 h)测得的重量含水率换算体积含水率,作为标定基准。
- 装填一致性:同一容重装填,传感器探针完全插入土样,每次读数稳定后取 10 次平均。
- 温度记录:同步记录土温,用于后续温度修正判断。
标定数据与映射关系建立
下表为壤土的一组教学示例数据(示例值,非实测):
| 样本 | raw 计数 | 烘干法 θv (m³/m³) | 土温 (℃) |
|---|---|---|---|
| S1 | 3120 | 0.082 | 22.1 |
| S2 | 2480 | 0.146 | 21.8 |
| S3 | 1960 | 0.203 | 22.4 |
| S4 | 1510 | 0.258 | 22.0 |
| S5 | 1180 | 0.311 | 22.6 |
观察数据可见 raw 增大时 θv 减小,且斜率随含水率升高而变化,说明存在明显非线性。工程上常用两种处理方式:
- 分段线性插值:直接用标定点构成查找表,实现简单、无需拟合,适合微控制器。
- 多项式拟合:用二次多项式
θv = a·raw² + b·raw + c拟合,便于解析计算阈值对应的 raw。
下面给出可直接运行的 Python 标定脚本,完成拟合、误差评估与阈值反解:
import numpy as np
# 教学示例标定数据(raw 计数, 体积含水率)
raw = np.array([3120, 2480, 1960, 1510, 1180], dtype=float)
theta = np.array([0.082, 0.146, 0.203, 0.258, 0.311])
# 二次多项式拟合 theta = a*raw^2 + b*raw + c
coef = np.polyfit(raw, theta, 2)
a, b, c = coef
print(f"拟合系数: a={a:.3e}, b={b:.3e}, c={c:.4f}")
# 拟合值与残差
theta_fit = np.polyval(coef, raw)
for r, t, f in zip(raw, theta, theta_fit):
print(f"raw={r:6.0f} theta={t:.3f} fit={f:.3f} err={f-t:+.4f}")
rmse = np.sqrt(np.mean((theta_fit - theta) ** 2))
print(f"RMSE = {rmse:.4f} m3/m3")
# 由目标含水率反解 raw(取物理合理的根)
def theta_to_raw(target):
# a*raw^2 + b*raw + (c - target) = 0
disc = b*b - 4*a*(c - target)
r1 = (-b + np.sqrt(disc)) / (2*a)
r2 = (-b - np.sqrt(disc)) / (2*a)
return sorted([r1, r2])
# 灌溉阈值设定:下限 0.18(启动),上限 0.28(停止)
for name, th in [("启动阈值", 0.18), ("停止阈值", 0.28)]:
roots = theta_to_raw(th)
valid = [r for r in roots if 1000 <= r <= 3300]
print(f"{name} theta={th:.2f} -> raw≈{valid[0]:.0f}")
示例输出(由上述输入直接推出):拟合系数约为 a≈2.1e-8, b≈-1.6e-4, c≈0.55,RMSE 约 0.004 m³/m³,说明二次模型对壤土在该区间内拟合良好。反解得到启动阈值 θv=0.18 对应 raw≈2210,停止阈值 θv=0.28 对应 raw≈1380。
标定完成后应把
a、b、c 与阈值 raw 值写入控制器配置,并在现场用一次独立取样复核:若复核点误差超过 ±0.02 m³/m³,需检查装填容重或重新标定。阈值确定与滞回控制
灌溉启停不能使用单一阈值,否则在阈值附近会频繁抖动。本例采用滞回区间:当 θv 低于启动阈值 0.18 时开启灌溉,高于停止阈值 0.28 时关闭,中间区间保持当前状态。下图展示了从标定曲线到阈值反解、再到滞回控制判定的完整关系。
标定结果落地与验证
把标定结果写入控制器时,建议保存为如下配置结构(示例):
soil_calib:
type: loam
model: quadratic
a: 2.1e-8
b: -1.6e-4
c: 0.55
theta_start: 0.18
theta_stop: 0.28
raw_start: 2210
raw_stop: 1380
temp_ref_c: 22.0
验证方法:将传感器插入目标地块,记录一次自然干燥过程(约 1–2 天)的 raw 序列,用拟合式换算 θv,观察其是否在 0.18 附近触发启动、在 0.28 附近停止,且启停之间无高频抖动。若抖动仍存在,可适当拉大滞回区间(例如启动 0.17、停止 0.29)。
电容式传感器对土壤盐分与温度敏感,长期使用后探针周围可能形成空隙或结垢,建议每季度用一次烘干法取样复核,必要时重新标定。