聚丰项目 > 利用热脉冲测量土壤含水量
本项目利用STC89C52单片机控制2个IDT公司生产的HS3001温湿度传感器和一个PTC加热模块组成热脉冲测含水量模块,通过施加短时低热量热脉冲,使得被测土壤先升温再降温,由高精度HS3001温湿度传感器定时测量土壤温度的变化值,最后基于理想半无限空间热脉冲传导理论,估算土壤体积含水量。该模块具有如下特点:(1)利用热脉冲可以间接测量土壤体积含水量,热脉冲时间控制在60-120s,总线热量控制在1000Jm-1以内,测量周期约300s,具有短时连续监测的优势;(2)在非加热模式下,可以直接获取土壤温湿度,在降雨入渗和水位变化是可以直接监测湿度变化;(3)加热模块还可以为温湿度传感器升温除湿,以增强深埋土壤高湿度环境下长期工作性能;(4)单片机内置T0定时器精确1s定时,T1定时器串口发送数据,定时测量误差很小。
cezhua
cezhua
团队成员
张华 负责人
1. HS3001温湿度传感器
本项目使用的HS3001如图1所示。该传感器具有如下特点:相对湿度测量精度±1.5%RH,正常工作范围10-90%RH,14位转换精度,温度测量:±0.2℃, 正常工作范围-10 - +80℃,14位转换精度,宽工作电压2.3-5.5V,低能耗,标准IIC数据接口。
![]() | |
图1 焊接的HS3001传感器
2. STC89C52单片机
图2 STC89C52单片机开发板
项目才有的单片机和开发板如图2所示。开发板支持USB程序下载(宏晶科技STC52单片机),开发板供电模式为:电脑USB供电(USB接口)和外部5V电源供电(DC-005电源座)。STC89C52单片机具有如下特点:8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。
3. PTC加热模块
图3 PTC恒温发热模块
项目采用的加热模块如图3所示。它具有体积小,电阻值10Ω,最大恒温50℃。
4. 土壤含水量测量模块
![]() |
图4 PTC恒温发热模块
将2个HS3001与加热模块捆绑连接,然后置于被测土壤中,通过施加60-120s左右热脉冲,观测土壤升降温情况,以便换算土壤体积含水量。
1. 定时功能实现
采用T0定时器进行1s精确定时。首先进行串口T1和T0定时器初始化,程序如下:
T0定时中断程序如下,其中为了弥补计数误差,TL0每次修正了2个计数,即TL0 += 0x69。
2. 串口通讯功能实现
串口通讯初始化见上一节,项目中只需单工模式,即只使用发送,不用读取。发送模块程序如下:
3. IIC通讯功能实现
void SHT2x_init()
{
sda1=1;
scl1=1;
sda2=1;
scl2=1;
}
void start1(void)
{
sda1=1;
delay2us();
scl1=1;
delay2us();
sda1=0;
delay2us();
scl1=0;
delay2us();
}
void stop1(void)
{
scl1=0;
sda1=0;
delay2us();
delay2us();
scl1=1;
sda1=1;
delay2us();
delay2us();
}
void ACK1 (void)
{
scl1=0;
sda1=0;
delay2us();
scl1=1;
delay2us();
scl1=0;
}
void noACK1 (void)
{
scl1=0;
sda1=1;
delay2us();
scl1=1;
delay2us();
scl1=0;
}
bit getACK1(void)
{
unsigned char ucErrTime=0;
sda1=1;
delay2us(); //释放总线
//SDA_IN(); //SDA设置为输入
scl1=1;
delay2us();
while(sda1)
{
ucErrTime++;
if(ucErrTime>250)
{
stop1();
return 1;
}
}
scl1=0;//时钟输出0
return 0;
}
void send1(uchar DATA)
{
uchar Bit_Counter=8;
scl1=0;
while(Bit_Counter>0)
{
sda1=(bit)(DATA&0x80);
DATA<<=1;
scl1=1;
delay2us();
scl1=0;
delay2us();
Bit_Counter--;
}
}
unsigned char Read1()
{
unsigned char x=0,y=8;
sda1=1;
while(y>0)
{
scl1=0;
delay2us();
scl1=1;
delay2us();
if(sda1)
x=x|0x01;
else
x=x&0xfe;
scl1=0;
delay2us();
if(y>1)
x=x<<1;
y--;
}
return x;
}
4. HS3001读数功能实现
#define add_w 0x88 //传感器地址 + 写操作
#define add_r 0x89 //传感器地址 + 读操作
sbit sda1=P0^1;//数据线
sbit scl1=P1^1;//时钟线
// 1 湿度测量
// 启动》发送地址+写操作》接收ACK》湿度测量命令》接收ACK》启动》发送地址+读操作》...
// ...接收ACK》测量时间延时》读取高位数据》ACK》读取低位数据》NO_ACK》停止。
// 计算结果。返回结果。
void RHT_Result1(void)
{
start1();
send1(add_w);
while(getACK1());//从机应答
stop1();
delay4ms();
start1();
send1(add_r);
while(getACK1());//从机应答
BUFh[0]=Read1()&0x3F;
ACK1();
BUFh[1]=Read1();
ACK1();
BUFt[0]=Read1();
ACK1();
BUFt[1]=Read1()&0xFC;
noACK1();
stop1();
}
void Convert_HS3001(void)
{
unsigned char TEMP1[7]; //用于记录温度
unsigned char HUMI1[7]; //用于记录湿度
unsigned char j;
unsigned long tem1,hum1;
float tem,hum;
tem=165.0f*(float)((BUFt[0]<<8)|BUFt[1])/16383.0f/4.0f-40.0f; //摄氏度
hum=100.0f*(float)((BUFh[0]<<8)|BUFh[1])/16383.0f;
BUFt[0]=0;
BUFt[1]=0;
BUFh[0]=0;
BUFh[1]=0;
tem1=(unsigned long)(tem*10); //摄氏度
hum1=(unsigned long)(hum*10);
if(tem1<0)TEMP1[0]=0x2D;//温度小于零,则数值前面加‘-’负号
else TEMP1[0]=0x20;//温度大于等于零,则数值前面加空格
TEMP1[1]=tem1/1000+'0'; //温度百位
if (TEMP1[1]==0x30) TEMP1[1]=0x20;
TEMP1[2]=tem1%1000/100+'0'; //温度十位
if (TEMP1[2]==0x30 && TEMP1[1]!=0x30) TEMP1[2]=0x20;
TEMP1[3]=tem1%100/10+'0';//温度个位
TEMP1[4]=0x2e;//小数点
TEMP1[5]=tem1%10+'0';//温度小数点后第一位
TEMP1[6]=0x20;//最后一位为空格
for(j=0;j<7;j++)
{
1. 湿细砂热脉冲温度升降
将传感器模块埋入重力含水量10.4%的细砂中10cm,分别施加120s和60s热脉冲,传感器升降温曲线如图6所示。从图中可以看出微量热脉冲对土体扰动小,升温曲线有很好的一致性。
图6 w=10.4%湿砂热脉冲温度升降曲线
2. 干细砂热脉冲温度升降
再将传感器模块埋入重力含水量0.13%的细砂中10cm,分别施加240s和120s热脉冲,传感器升降温曲线如图7所示。从图中可以看出微量热脉冲对土体扰动小,升温曲线有很好的一致性。湿砂和干砂升降温曲线比较如图8所示,显示升降温曲线斜率有较大差别。
图7 w=0.13%湿砂热脉冲温度升降曲线
图8 湿砂和干砂热脉冲温度升降曲线比较
3. 半无限空间热脉冲传导理论
均质各向同性半无限空间匀速热传导基本方程(Carslaw & Jaeger 1959, p13)如下: [1]
其中α是热扩散系数(m2/s),U是流速(m/s)。当半无限空间一无限长线热源加热有限时间,即产生一热脉冲,其理论解如下(Carslaw & Jaeger 1959, p258):
[2]
其中Q是热量(m2℃),Q=q/ρc,q输入线强度(J/m),ρc是体积比容。当传感器距离热源位置rm温度升到最大ΔTm时,对公式[2]求导数可得:
[3]
Campbell等(1991)给出土的体积比容ρc与最大温升有关,即
[4]
其中ρw是水的密度,cw是水的比热,θ是土的体积含水量,ρb是土的总密度,cm是土颗粒的比热。给定热脉冲q=I2Rt,I是加热电流,R是加热模块电阻,t是加热时间,实测最大温升ΔTm和传感器距离热源的位置rm之后,就公式[4]可以计算出土的体积含水量θ,如公式[5]所示。
[5]
4. 初步数据整理
部分实测湿砂温度升降原始数据如下表:
(18.02 MB)下载