土壤湿度传感器模块驱动教程

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1. 传感器简介

土壤湿度传感器模块用于检测土壤中的含水量。模块通过两个裸露的导电探针插入土壤,利用土壤导电性随湿度变化的原理来测量湿度。模块上集成了 LM393 比较器,同时提供模拟量输出(AO)和数字量输出(DO)。

参数规格

参数
工作电压 3.3V ~ 5V
模拟输出 AO,0~VCC(随湿度变化)
数字输出 DO,TTL 电平(湿度超阈值 → HIGH/LOW)
比较器 LM393
灵敏度 可通过电位器调节

引脚定义

引脚 说明
VCC 电源 3.3V~5V
GND
DO 数字信号输出
AO 模拟信号输出(电压越低,湿度越高)

硬件接线

土壤湿度模块 GD32E23x AT32F403A
VCC 3.3V 3.3V
GND GND GND
AO PA0 PA0
DO PA1 PA1

注意: 探针长期通电会加速氧化腐蚀,建议仅在需要测量时通电,或使用交流激励方案。


2. 工作原理

2.1 电阻分压原理

模块内部,两个探针之间等效为一个可变电阻,与固定电阻组成分压电路:

  • 土壤干燥 → 导电性差 → 电阻大 → AO 电压高
  • 土壤湿润 → 导电性好 → 电阻小 → AO 电压低

2.2 数字输出(DO)

LM393 比较器将 AO 电压与电位器设定的阈值比较,超过阈值时 DO 翻转。


3. 驱动实现

初始化

void soil_moisture_init(void)
{
    RCU_AHBEN |= RCU_AHBEN_GPIOA_EN;
    GPIO_SET_MODE(GPIOA_BASE, 0, GPIO_MODE_INPUT);  /* PA0 = AO */
    GPIO_SET_MODE(GPIOA_BASE, 1, GPIO_MODE_INPUT);  /* PA1 = DO */
    /* ADC 初始化:时钟、采样时间、校准 */
    RCU_APB2EN |= RCU_APB2EN_ADC1_EN;
}

读取湿度

uint16_t soil_moisture_read(void)
{
    ADC_RSQ3(ADC1_BASE) = 0;           /* 通道 0 */
    ADC_CTL1(ADC1_BASE) |= (1 << 14);  /* 软件触发 */
    while (!(ADC_STAT(ADC1_BASE) & (1 << 5)));
    return ADC_DATA(ADC1_BASE) & 0x0FFF;
}

百分比转换

uint8_t soil_moisture_percent(uint16_t adc)
{
    if (adc < 200) return 100;   /* 完全湿润 */
    if (adc > 3800) return 0;    /* 完全干燥 */
    return (uint8_t)(100 - (adc - 200) * 100 / 3600);
}

4. AT32F403A 适配

项目 GD32E23x AT32F403A
GPIO 模式 GPIO_SET_MODE(port, pin, GPIO_MODE_INPUT) GPIO_CFG(port, pin, GPIO_MODE_INPUT)
ADC 寄存器 ADC_CTL1 ADC_STAT ADC_CTRL1 ADC_STS
时钟使能 RCU_APB2EN CRM_APB2EN

5. 编译与烧录

cd 01_Sensors/SoilMoisture/GD32 && make
cd 01_Sensors/SoilMoisture/AT32 && make
平台 text data bss 总大小
GD32E23x 1984 B 0 B 2056 B 4040 B
AT32F403A 1960 B 0 B 4 B 1964 B

6. 运行效果

========================================
  土壤湿度传感器测试 (GD32E23x)
========================================

[OK] ADC: 3800 (73%)  DO: HIGH (干燥泥土)
[OK] ADC: 3240 (62%)  DO: HIGH
[OK] ADC: 480  (12%)  DO: LOW  ← 浇水后
[OK] ADC: 210  (0%)   DO: LOW  ← 完全湿润

7. 注意事项

  1. 探针腐蚀:直流测量会加速探针电化学腐蚀,建议间歇通电
  2. 标定:不同土壤类型导电性不同,建议针对目标土壤做标定
  3. 温度影响:土壤导电性受温度影响,精确测量需温度补偿

完整工程源码(含 Keil 工程文件)已整理完毕,详见博主主页。

Logo

免费领 150 小时云算力,进群参与显卡、AI PC 幸运抽奖

更多推荐