传感器:土壤湿度传感器(XH-M214)介绍及stm32驱动代码

本文详细介绍了如何使用STM32F103通过ADC读取XH-M214土壤湿度传感器的模拟量输出,并进行数据采集。XH-M214传感器通过测量土壤电导率变化来获取湿度信息,具备防腐耐用特性。通过调整模块上的电位器可设置湿度阈值,输出数字信号。文章还提供了在Protues环境下利用滑动变阻器模拟传感器以进行测试的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

土壤湿度传感器(XH-M214)及stm32驱动代码

本篇主要介绍:stm32f103 ADC读取电压 采集土壤湿度传感器(XH-M214)数据

XH-M214简介

XH-M214的实物张这个样子:
在这里插入图片描述

那个像叉子的是传感器,测量土壤水分随土壤电导率的变化而变化(土壤电阻随干旱而增加)。在传感器的两个电极之间测量电阻。
蓝色模块是一个电压比较器和一个分压电路,其引脚定义如下:
在这里插入图片描述
一个是模拟信号输出,及测量的土壤湿度,还有一个开关信号输出,因为有个比较器嘛,当超过阈值则输出标志位。
其与原理图如下:
在这里插入图片描述
工作电压3.3v-5v,工作电流:100mA以内

优势:

  • 表面采用镀镍处理,有加宽的感应面积,可以提高导电性能,防止接触土壤容易生锈的问题,延时使用寿命
  • 宽范围控制土壤湿度,通过点位器调节控制相应阈值,湿度低于设定值时,DO输出高电平,高于设定值时DO输出低电平
  • 比较器采用LM393芯片,工作稳定

使用方法:

  • 传感器适用于土壤的湿度检测
  • 模块中的蓝色的电位器是用于土壤湿度的阈值调节,顺时针调节,控制的湿度会越大,逆时针越小
  • 数字量输出DO可以与单片机直接连接,通过单片机来检测高低电平,由此来检测土壤湿度
  • 小板模拟量输出AO可以和AD模块连接,通过AD转换,可以获得土壤湿度更精准的数值。

stm32驱动

XH-M214的接口就是一个模拟量输出,上面介绍了。所以它的软件驱动主要就是stm32的adc配置来读取模拟量。
下面来看如何配置stm32的adc接口。来实现ad值的读取

stm32f103的内置ADC有三个,可同时进行三个ADC转换。
前几个配置如下:
在这里插入图片描述
如果用ADC1的通道1则需要将外部的ad信号接到PA1引脚上,二通道则接到PA2上

void ADC1_GPIO_Config(void){
   
    GPIO_InitTypeDef GPIO_InitStructure;
	  RCC_APB2PeriphClockCmd
### 连接土壤湿度传感器STM32单片机 对于不同型号的土壤湿度传感器,其连接方式会有所差异。以下是针对两种常见类型的土壤湿度传感器——XH-M214和FC-28——与STM32单片机的具体连接方法。 #### XH-M214土壤湿度传感器连接 该款传感器通常具备模拟信号输出功能,可以方便地接入微控制器进行测量[^1]。为了实现这一目的,需按照下述方式进行连线: | **STM32 Pin** | **Sensor Pin (XH-M214)** | |---------------|--------------------------| | VCC | VCC | | GND | GND | | PA0 (ADC_IN) | AO | 这里选择了PA0作为ADC输入通道来读取来自传感器的电压值,实际应用中可根据项目需求选用其他可用的ADC引脚。 ```c // 配置 ADC 输入模式并初始化外设 void MX_ADC_Init(void){ __HAL_RCC_ADC1_CLK_ENABLE(); hadc.Instance = ADC1; hadc.Init.ScanConvMode = DISABLE; // 单次转换 hadc.Init.ContinuousConvMode = ENABLE; // 连续转换模式开启 hadc.Init.DiscontinuousConvMode = DISABLE; hadc.Init.ExternalTrigConv = ADC_SOFTWARE_START; hadc.Init.DataAlign = ADC_DATAALIGN_RIGHT; hadc.Init.NbrOfConversion = 1; HAL_ADC_Init(&hadc); } ``` #### FC-28型土壤湿度传感器连接 此类型号同样支持通过AO接口提供连续变化的电平表示当前环境下的水分含量情况[^2]。具体接法如下所示: | **STM32 Pin** | **Sensor Pin (FC-28)** | |-----|------------------------| | 3.3V | VCC | | GND | GND | | PB0 或者任意ADC引脚 | AOUT | 值得注意的是,在某些情况下可能还需要额外配置上拉电阻或其他元件以确保最佳性能表现;此外,如果计划利用IIC通信协议,则应参照官方文档进一步设置相应的管脚映射关系。 ```c // 初始化 I2C 接口用于 OLED 显示屏通讯(仅当使用时) void MX_I2C1_Init(void){ hi2c1.Instance = I2C1; hi2c1.Init.ClockSpeed = 100000; hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2; hi2c1.Init.OwnAddress1 = 0; hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; hi2c1.Init.OwnAddress2 = 0; hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; if (HAL_I2C_Init(&hi2c1) != HAL_OK){ Error_Handler(); } } ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

月照银海似蛟龙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值