【PlantSaver】电容式土壤湿度传感器使用及原理(并以Arduino进行校准实验)

1.湿度检测原理

关于这个传感器检测的原理,网上找的资料不多。类似传感器经典的设计是美国DECAGON 公司生产的ECH2O 系列传感器。其结构如下:

式中:

ε0 = 8.854×10-12 为真空介电常数,单位 F/m;

S 为板间遮盖面积,单位 m2 ;

C 为板间电容量,单位F;

δ 为板件厚度,m;

ε 为含高湿敏性基材板件聚合物外膜介电常数,F/m。

测量原理为:薄膜聚合物由于周围湿度条件改变,引发板件聚合物外膜相对介电常数(ε)与电容量变化。(等式右边在使用中是定值)

 

这个看起来很像我们传感器的原理,但我们买的传感器太便宜了,与是我用砂纸打磨掉,传感器PCB的覆油,如下图:

 

仔细观察我们发现,该模块并不是上面所讲的结构,也没有薄膜聚合物,没有上下电极之分。该模块的结构应该是这样:

其实它就是把两个电容的极板插到了土壤里,只是这个两个极板在同一水平面。土壤加板子上的漆构成了电容的介质层.

2.常见的电容式土壤湿度传感

世面上常见的电容式土壤湿度传感器模块基本都是capactive soil moisture sensor系列的。现在常见的有三个版本v1.0,v1.2(最便宜),v2.0。
v1.0

v1.2

v2.0

以上就是常见的电容式土壤湿度传感器。他们看起来都差不多,其实这些版本都是从v1.0版本改进的。

3.对该模块的电路进行分析

V1.0的原理图

这个电路是所有该类型传感器的基础,剩下的所有版本都是在这个基础上修修改改。V1.2在V1.0的基础上用普通的NE555换了TI的555芯片,删除了5V转3V电路(用0欧电阻跳线如下图)。删除了555第5脚的旁路电容。所以其只要3,4块的售价。

V1.2的电路原理图如下:

V1.2与V1.0电路的核心一致,V2.0在V1.2的基础上加回了5V转3V的芯片。所以V1.2版本的模拟口输出是大于3V的,而且需要5V供电。这个许多买家描述的不一样。

这电路的核心是用555芯片构成的多谐振荡器,其原理如下(数电课本上的):

所以这个震荡器的频率主要由电容C(v1.0电路中的C5)决定,v1.0电路中圈1部分的电阻,决定其输出方波的占空比。在V1.2的原理图中标出土壤等效电容的位置,这与V1.0板的位置一样。该脉冲信号由555的三脚送到电容的等效电容中。

在V1.2原理图中,B点波形为:

A点波形为:

用的示波器太老了。我们可以看到这方波的占空比很小,频率在2MHZ左右。脉冲信号不断给电容(土壤)充放电,就有了A点的波形。

随着土壤湿度的变化,(土壤的等效)电容发生变化,其充放电时间常数发生改变。其波形的峰值会改变。类似下图:

再通过峰值检波电路如下图,输出电压信号给单片机采样。

4.Arduino实验

用arduino读取v1.2版本(输出不是3V)传感器数值,在空气中采样值为900多,在水中,采样值为700多,其测量范围不如电阻式的宽。代码如下:

 void setup() {
  Serial.begin(9600); // open serial port, set the baud rate to 9600 bps
 // analogReference(EXTERNAL); 
}

void loop() {
  
  int n = analogRead(A0);
  Serial.println(n); //connect sensor and print the value to serial
  delay(1000);
}

用读取v2.0(这个一般比较贵)版本,读取数据如下:

注:如果要获得准确的土壤含水量需要做标定。

 

5. 电容式土壤湿度传感器的校准测试

电容式土壤湿度传感器规格:

工作电压:DC 3.3-5.5V

输出电压:DC 0-3.0V(模拟输出)

首先请将该传感器放置在空气中读取模拟值,代表干燥时的读数。然后拿一杯水,把传感器插入水中一定深度(做一下标记(红虚线),此深度为你将要插入泥土的深度),一定不能超过红色警戒线(红实线)!并记录此时读到的模拟值,代表100%湿度。(输出数据与湿度成反比,在水中的输出量最小)插入深度如图推荐(红虚线处)。

传感器上部零件区最好能做些防水处理,比如防水漆,热胶等。

区间设定

由于传感器数值会受到入土深度、土壤松紧度的影响,只能检测到土壤的相对湿度,我们把湿度的范围分为三等分,分别表示干燥、湿润、非常潮湿。之前记入的两个数据为湿度区间。例如:空气中读数为620,水中读数为308,这样就可以分为【620,516】,【516,412】,【412,308】这三个区间分别代表干燥、湿润、非常潮湿。

注意:由于此传感器会根据电容感应原理来监测土壤湿度,所以放到土壤湿度不同、松紧度不同、插入深度不同的地方,会体现出不同的湿度,即使在同一个地方,同样的深度,在第二次插入时,由于第一次拔出时已经造成了泥土的松动,可能读到的湿度会比第一次低。

备注:湿度与读数是成反比的。

/*
实验七十:电容式土壤湿度传感器模块不易腐蚀宽电压工作(TL555I)
土壤湿度测试实验
三个区间分别为干燥、湿润、非常潮湿
*/

const int AirValue = 620;
const int WaterValue = 308;

int intervals = (AirValue - WaterValue)/3;
int soilMoistureValue = 0;

void setup() {

    Serial.begin(9600);
}

void loop() {
    soilMoistureValue = analogRead(A0);
    if(soilMoistureValue > WaterValue && soilMoistureValue < (WaterValue + intervals))
    {
        Serial.println("非常潮湿");
    }
    else if(soilMoistureValue > (WaterValue + intervals) && soilMoistureValue < (AirValue - intervals))
    {
        Serial.println("湿润");
    }
    else if(soilMoistureValue < AirValue && soilMoistureValue > (AirValue - intervals))
    {
        Serial.println("干燥");
    }
    delay(2000);
}

 

参考文章

1. 

CSDN 《Arduino--电容式土壤湿度传感器使用及原理》

作者:知之至知

链接:https://blog.csdn.net/weixin_41866783/article/details/109292153

 

2. 

【雕爷学编程】Arduino动手做(70)---土壤湿度传感器 

作者:雕爷学编程

链接:https://www.sohu.com/a/436451512_120248280

 

posted @ 2024-07-30 22:02  FBshark  阅读(35)  评论(0编辑  收藏  举报