關(guān)鍵詞:SHT11;溫濕度監(jiān)測系統(tǒng);PIC16F73;Visual Basic
引言
為了有效地開展現(xiàn)代混凝土結(jié)構(gòu)耐久性的基礎研究,揭示混凝土結(jié)構(gòu)生命全過程的損傷演變規(guī)律,從根本上改善混凝土工程的耐久性,保證其應有的使用壽命,對混凝土使用環(huán)境進行溫濕度檢測顯得尤為重要。
通常使用熱敏電阻和濕敏電容來分別測量溫度和濕度,A/D轉(zhuǎn)換后送入計算機,但這種測量方法一般都要設計相應的信號調(diào)理電路,還要經(jīng)過復雜的標定過程,其測量精度很難保證。這種測量溫濕度的系統(tǒng)在測量點數(shù)較少,而且精度要求不高的場合還可以勝任,而需要多點測量且精度要求較高時,其缺點就顯露無疑了。而且,當涉及到兩個參數(shù)的監(jiān)測時,每一個測量點都必須使用兩個獨立的傳感器和獨立的信號調(diào)理電路,這不僅使得測量系統(tǒng)的成本和體積大為提高,也在一定程度上增加了系統(tǒng)設計的復雜性。本文將采用SHT11芯片,實現(xiàn)更為優(yōu)化的設計方案。
SHT11內(nèi)部結(jié)構(gòu)和工作原理
SHT11數(shù)字式溫濕度傳感器采用CMOSens(Ce-mo-Sens)專利技術(shù)(CMOS和傳感器技術(shù)的融合)制造,它的特點為:全量程標定,二線數(shù)字輸出;濕度測量范圍為0~100%RH,溫度測量范圍為-40℃~+123.8℃,濕度測量精度為±3.0% RH,溫度測量精度為±0.4℃,響應時間<4s;低功耗 ( 30mW),可完全浸沒。其外形尺寸僅為7.5mm×5mm×2.5mm,體積與大火柴頭相近。芯片能輸出經(jīng)過完全校準的相對濕度和溫度數(shù)字信號,便于實現(xiàn)系統(tǒng)的集成。
SHT11內(nèi)部結(jié)構(gòu)
其內(nèi)部結(jié)構(gòu)如圖1所示。主要包括:相對濕度傳感器、溫度傳感器、放大器、14位ADC、校準存儲器E2PROM、RAM、CRC(循環(huán)冗余校驗碼)寄存器、二線制串行接口和低壓監(jiān)測電路等。

圖1 SHT11內(nèi)部結(jié)構(gòu)
工作原理
首先由兩個傳感器分別產(chǎn)生相對濕度和溫度信號,經(jīng)過放大后分別送到14位的ADC進行A/D轉(zhuǎn)換、標準和糾錯,最后通過二線制的串行接口,將相對濕度和溫度的數(shù)據(jù)送至微控制器,再利用微控制器完成非線性補償和溫度補償。
溫濕度測量系統(tǒng)
硬件電路的設計
本系統(tǒng)以PIC16F73單片機作為微控制器。PIC16F73為8位28引腳微處理器,具有4KB的FLASH程序存儲器;22條雙向可編程I/O口線;192字節(jié)數(shù)據(jù)存儲器;3個定時器;5路8位A/D通道。
該系統(tǒng)由測量、顯示和通信三部分組成。由于PIC16F73具備I2C總線接口,所以不需要進行虛擬。分別在DATA端接入1個4.7KW的上拉電阻,在VDD和GND端接入一個0.1mF的去耦電容。硬件連線圖如圖2所示。

圖2 系統(tǒng)硬件電路圖
顯示部分電路采用帶有高速串行接口的4位LED控制驅(qū)動器ZLG7219實現(xiàn),接口采用同步串行外設接口SPI,編程簡單而且節(jié)省I/O口。溫度和濕度顯示各用4位,通過改變連接電源與ISET端口的電阻值,可以調(diào)節(jié)數(shù)碼管的顯示亮度。
與上位機的數(shù)據(jù)通信部分采用接口芯片MAX232實現(xiàn)的RS-232的通信方式。
為提高系統(tǒng)的可靠性,由MAX813LEUA組成看門狗電路,以防止程序跑飛而使系統(tǒng)失控。如果在1.6s內(nèi)PIC16F73不給WDI輸入端發(fā)送觸發(fā)信號,說明程序跑飛,MAX813LEUA將發(fā)出復位信號,使系統(tǒng)復位重新進行。
溫濕度測量系統(tǒng)軟件的設計
在單片機內(nèi)部寫有數(shù)據(jù)的采集和顯示等程序,能使當前的溫濕度值實時顯示在現(xiàn)場,另外,該溫濕度值通過RS-232總線接口送至PC,運行VB程序使溫濕度值在監(jiān)控界面上顯示。單片機軟件的流程如圖3所示。

圖3 軟件流程圖
為實現(xiàn)溫濕度測量,使用VB編寫了上位機顯示畫面,能實時顯示出當前現(xiàn)場每個點位的溫濕度值,下面是對溫濕度進行轉(zhuǎn)化的部分程序:
Select Case
MSComm1.CommEvent
Case comEvReceive
Label11.Visible = True
Label12.Visible = True
buffer = MSComm1.Input
arr = buffer
For i = 1 To 11
w_1(i) = arr(i - 1)
Text1.Text = Text1.Text +
" " + w_1(i)
Next i
Humidity = Str$((Val(w_1(4)) * 256 + Val(w_1(5))) / 100)
Temperature = Str$(((Val(w_1(6)) * 256 + Val(w_1(7))) - 27315) / 100)
Label2.Caption = Humidity
Label10.Caption = Temperature
End Select
圖4是對其中的一個點進行采集的畫面,在圖中有串口號、波特率、檢驗位、數(shù)據(jù)位和停止位等設置,被測量點的當前溫濕度一目了然。





