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

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来---小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料+代码+图形+仿真)

实验七十:电容式土壤湿度传感器模块不易腐蚀宽电压工作(TL555I)

 

 

 

TL555I 6位模数转换器 SOP-8 实时时钟芯片

电容式传感器
是以各种类型的电容器作为传感元件,将被测物理量或机械量转换成为电容量变化的一种转换装置,实际上就是一个具有可变参数的电容器。电容式传感器广泛用于位移、角度、振动、速度、压力、成分分析、介质特性等方面的测量。最常用的是平行板型电容器或圆筒型电容器。典型的电容式传感器由上下电极、绝缘体和衬底构成。当薄膜受压力作用时,薄膜会发生一定的变形,因此,上下电极之间的距离发生一定的变化,从而使电容发生变化。但电容式压力传感器的电容与上下电极之间的距离的关系是非线性关系,因此,要用具有补偿功能的测量电路对输出电容进行非线性补偿。

 

 电容式湿度传感器
是利用湿敏元件的电容值随湿度变化的原理进行湿度测量的传感器。此类湿敏元件实际上是一种吸湿性电解质材料的介电常数随湿度而变化的薄片状电容器,感湿材料为聚酰铵树脂,酰根纤维素和金属氧化物如AL2O3等。

国外厂家比较优质的湿度传感器产品主要使用聚酰胺树脂,产品结构概要为在硼硅玻璃或蓝宝石衬底上真空蒸发制作金电极,再喷镀感湿介质材料(如前所述)形式平整的感湿膜,再在薄膜上蒸发上金电极,金的原度控制在70Um 左右,以保证水蒸汽顺利通过.湿敏元件的电容值与相对湿度成正比关系,线性度约±2%湿敏电容与相对湿度关系图。

电极金薄膜和感湿膜为多孔结构薄膜,因此吸湿和脱湿容易,升湿响应小于3S,而脱湿相对慢一些为10-30S。

特性曲线看出在低湿段容值变化分辨显著下降,而在高湿段90%RH以上变化过陡非线性现象较重,对于非线性现象,一方面在电路中加以修正,同时可对湿度传感器作工艺处理,包括激光整补电极,纯化处理等,可以收到好的效果。

电容式湿度传感器线性度较好,重复性好,滞后小,反应快,尺寸小,能在-10℃-60℃湿度环境下使用。但电容式湿度传感器同时存在质量问题,稳定性不理想,由于容值在单位级变化,1%RH为0.3PF,容值小的漂移就容易造成%RH值的突变,一般在控制领域使用电容式湿敏传感器都需要慎重考虑。

这款电容式土壤湿度传感器区别于市面上绝大部分的电阻式传感器,采用电容感应原理来检测土壤湿度。避免了电阻式传感器极易被腐蚀的问题,极大地延长了它的工作寿命。传感器内置稳压芯片,支持3.3~5.5V宽电压工作环境,这意味着即使在3.3V的Arduino主控板上,它也能正常工作。标志性的DFRobot-Gravity接口保证了接口的兼容性,可以直接与Gavity IO扩展板相连接。树莓派之类的微型PC,只需要外接一个ADC(模拟信号转数字信号)转换模块就可以工作。

特点:
模拟输出
该传感器兼容DFRobot 3针“重力”接口,可直接连接到重力I / O扩展板

规格:
工作电压:DC 3.3-5.5V 
输出电压:DC 0-3.0V 
接口:PH2.0-3P 
尺寸:99x16mm / 3.9x0.63“ 

应用:
园林植物
水分检测
智能农业

模块电原理图

模块连接示意图

实验开源代码(校准)

1.在正式检测土壤湿度前,需要有一个校准过程。

2.上传校准代码至Arduino主控板

3.打开串口监视助手

/*

【Arduino】168种传感器模块系列实验(资料+代码+图形+仿真)

实验七十一:电容式土壤湿度传感器模块不易腐蚀宽电压工作(TL555I)

程序之一,湿度测试校验代码

*/

void setup() {

 Serial.begin(9600); 

}

void loop() {

 int val;

 val = analogRead(0); 

 Serial.println(val); 

 delay(500);

}

  测量干燥情况下的数值

干湿度校准
校准说明:通过分别读取传感器在空气中和水中的数值来限定一个测量范围。
打开串口监视器,将波特率根据程序设置为9600。
首先请将该传感器放置在空气中读取模拟值,代表干燥时的读数。然后拿一杯水,把传感器插入水中一定深度(做一下标记(红虚线),此深度为你将要插入泥土的深度),一定不能超过红色警戒线(红实线)!并记录此时读到的模拟值,代表100%湿度。(输出数据与湿度成反比,在水中的输出量最小)插入深度如图推荐(红虚线处)。

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

 

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

 

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

 

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

【Arduino】168种传感器模块系列实验(资料+代码+图形+仿真)

实验七十:电容式土壤湿度传感器模块不易腐蚀宽电压工作(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);

}

实验开源图形编程(Mind+、编玩边学)

实验开源仿真编程(linkboy3.7)

 

posted @ 2020-12-05 16:15  行者花雕  阅读(1778)  评论(0编辑  收藏  举报