聚豐項目 > 利用熱脈沖測量土壤含水量
本項目利用STC89C52單片機控制2個IDT公司生產(chǎn)的HS3001溫濕度傳感器和一個PTC加熱模塊組成熱脈沖測含水量模塊,通過施加短時低熱量熱脈沖,使得被測土壤先升溫再降溫,由高精度HS3001溫濕度傳感器定時測量土壤溫度的變化值,最后基于理想半無限空間熱脈沖傳導(dǎo)理論,估算土壤體積含水量。該模塊具有如下特點:(1)利用熱脈沖可以間接測量土壤體積含水量,熱脈沖時間控制在60-120s,總線熱量控制在1000Jm-1以內(nèi),測量周期約300s,具有短時連續(xù)監(jiān)測的優(yōu)勢;(2)在非加熱模式下,可以直接獲取土壤溫濕度,在降雨入滲和水位變化是可以直接監(jiān)測濕度變化;(3)加熱模塊還可以為溫濕度傳感器升溫除濕,以增強深埋土壤高濕度環(huán)境下長期工作性能;(4)單片機內(nèi)置T0定時器精確1s定時,T1定時器串口發(fā)送數(shù)據(jù),定時測量誤差很小。
cezhua
分享cezhua
團(tuán)隊成員
張華 負(fù)責(zé)人
1. HS3001溫濕度傳感器
本項目使用的HS3001如圖1所示。該傳感器具有如下特點:相對濕度測量精度±1.5%RH,正常工作范圍10-90%RH,14位轉(zhuǎn)換精度,溫度測量:±0.2℃, 正常工作范圍-10 - +80℃,14位轉(zhuǎn)換精度,寬工作電壓2.3-5.5V,低能耗,標(biāo)準(zhǔn)IIC數(shù)據(jù)接口。
圖1 焊接的HS3001傳感器
2. STC89C52單片機
圖2 STC89C52單片機開發(fā)板
項目才有的單片機和開發(fā)板如圖2所示。開發(fā)板支持USB程序下載(宏晶科技STC52單片機),開發(fā)板供電模式為:電腦USB供電(USB接口)和外部5V電源供電(DC-005電源座)。STC89C52單片機具有如下特點:8k字節(jié)Flash,512字節(jié)RAM, 32 位I/O 口線,看門狗定時器,內(nèi)置4KB EEPROM,MAX810復(fù)位電路,3個16 位定時器/計數(shù)器,4個外部中斷,一個7向量4級中斷結(jié)構(gòu)(兼容傳統(tǒng)51的5向量2級中斷結(jié)構(gòu)),全雙工串行口。
3. PTC加熱模塊
圖3 PTC恒溫發(fā)熱模塊
項目采用的加熱模塊如圖3所示。它具有體積小,電阻值10Ω,最大恒溫50℃。
4. 土壤含水量測量模塊
圖4 PTC恒溫發(fā)熱模塊
將2個HS3001與加熱模塊捆綁連接,然后置于被測土壤中,通過施加60-120s左右熱脈沖,觀測土壤升降溫情況,以便換算土壤體積含水量。
1. 定時功能實現(xiàn)
采用T0定時器進(jìn)行1s精確定時。首先進(jìn)行串口T1和T0定時器初始化,程序如下:
T0定時中斷程序如下,其中為了彌補計數(shù)誤差,TL0每次修正了2個計數(shù),即TL0 += 0x69。
2. 串口通訊功能實現(xiàn)
串口通訊初始化見上一節(jié),項目中只需單工模式,即只使用發(fā)送,不用讀取。發(fā)送模塊程序如下:
3. IIC通訊功能實現(xiàn)
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設(shè)置為輸入
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讀數(shù)功能實現(xiàn)
#define add_w 0x88 //傳感器地址 + 寫操作
#define add_r 0x89 //傳感器地址 + 讀操作
sbit sda1=P0^1;//數(shù)據(jù)線
sbit scl1=P1^1;//時鐘線
// 1 濕度測量
// 啟動》發(fā)送地址+寫操作》接收ACK》濕度測量命令》接收ACK》啟動》發(fā)送地址+讀操作》...
// ...接收ACK》測量時間延時》讀取高位數(shù)據(jù)》ACK》讀取低位數(shù)據(jù)》NO_ACK》停止。
// 計算結(jié)果。返回結(jié)果。
void RHT_Result1(void)
{
start1();
send1(add_w);
while(getACK1());//從機應(yīng)答
stop1();
delay4ms();
start1();
send1(add_r);
while(getACK1());//從機應(yīng)答
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;//溫度小于零,則數(shù)值前面加‘-’負(fù)號
else TEMP1[0]=0x20;//溫度大于等于零,則數(shù)值前面加空格
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;//小數(shù)點
TEMP1[5]=tem1%10+'0';//溫度小數(shù)點后第一位
TEMP1[6]=0x20;//最后一位為空格
for(j=0;j<7;j++)
{
1. 濕細(xì)砂熱脈沖溫度升降
將傳感器模塊埋入重力含水量10.4%的細(xì)砂中10cm,分別施加120s和60s熱脈沖,傳感器升降溫曲線如圖6所示。從圖中可以看出微量熱脈沖對土體擾動小,升溫曲線有很好的一致性。
圖6 w=10.4%濕砂熱脈沖溫度升降曲線
2. 干細(xì)砂熱脈沖溫度升降
再將傳感器模塊埋入重力含水量0.13%的細(xì)砂中10cm,分別施加240s和120s熱脈沖,傳感器升降溫曲線如圖7所示。從圖中可以看出微量熱脈沖對土體擾動小,升溫曲線有很好的一致性。濕砂和干砂升降溫曲線比較如圖8所示,顯示升降溫曲線斜率有較大差別。
圖7 w=0.13%濕砂熱脈沖溫度升降曲線
圖8 濕砂和干砂熱脈沖溫度升降曲線比較
3. 半無限空間熱脈沖傳導(dǎo)理論
均質(zhì)各向同性半無限空間勻速熱傳導(dǎo)基本方程(Carslaw & Jaeger 1959, p13)如下: [1]
其中α是熱擴散系數(shù)(m2/s),U是流速(m/s)。當(dāng)半無限空間一無限長線熱源加熱有限時間,即產(chǎn)生一熱脈沖,其理論解如下(Carslaw & Jaeger 1959, p258):
[2]
其中Q是熱量(m2℃),Q=q/ρc,q輸入線強度(J/m),ρc是體積比容。當(dāng)傳感器距離熱源位置rm溫度升到最大ΔTm時,對公式[2]求導(dǎo)數(shù)可得:
[3]
Campbell等(1991)給出土的體積比容ρc與最大溫升有關(guān),即
[4]
其中ρw是水的密度,cw是水的比熱,θ是土的體積含水量,ρb是土的總密度,cm是土顆粒的比熱。給定熱脈沖q=I2Rt,I是加熱電流,R是加熱模塊電阻,t是加熱時間,實測最大溫升ΔTm和傳感器距離熱源的位置rm之后,就公式[4]可以計算出土的體積含水量θ,如公式[5]所示。
[5]
4. 初步數(shù)據(jù)整理
部分實測濕砂溫度升降原始數(shù)據(jù)如下表:
(18.02 MB)下載