翟春艷,岳修正,肖 宏,夏 濤
(中國電子科技集團公司 第二十七研究所,河南 鄭州 450047)
溫濕度的測量與控制在工業生產、氣象、環保及日常生活的許多領域得到越來越廣泛的應用,有很多地方都需要對溫度和濕度進行定時或實時監控。人們除對溫濕度傳感器的普通性能(如精確度、長期漂移特性等)感興趣外,還把目光聚集到其在不同環境下的耐久性、元件尺寸、數字化、簡單和快速的系統綜合特性上。SHT11是瑞士Sensirion公司生產的具有二線串行接口的單片全校準數字式新型相對濕度和溫度傳感器,可用來測量相對濕度、溫度和露點等參數,具有數字式輸出、免調試、免標定、免外圍電路及全互換的特點。該傳感器將CMOS芯片技術與傳感器技術融合,為開發高集成度、高精度、高可靠性的溫濕度測控系統提供了解決方案[1]。
溫濕度感測系統將單片機與溫濕度傳感器等技術相結合,以PIC單片機為微控制器,利用數字溫濕度傳感器SHT11對環境的溫度和相對濕度進行檢測,通過二線串行接口將數字溫濕度信號送至PIC微控制器,最后利用PIC微控制器完成相對濕度的非線性補償和溫度補償,并將實際溫度和相對濕度值送液晶顯示器顯示,從而實現對環境溫濕度的測控。溫濕度感測系統主要由溫濕度傳感器SHT11和PIC單片機以及162字符型液晶顯示屏組成。
溫濕度傳感器SHT11將溫度感測、濕度感測、信號變換、A/D轉換和加熱器等功能集成到一個芯片上,其內部結構如圖1所示。該芯片包括一個電容性聚合體濕度敏感元件和一個用能隙材料制成的溫度敏感元件。這兩個敏感元件分別將濕度和溫度轉換成電信號,該電信號首先進入微弱信號放大器進行放大,然后進入一個14位的A/D轉換器,最后經過二線串行數字接口輸出數字信號。SHT11在出廠前,都會在恒濕或恒溫環境中進行校準,校準系數存儲在校準寄存器中,在測量過程中,校準系數會自動校準來自傳感器的信號。此外,SHT11內部還集成了一個加熱元件,加熱元件接通后可以將SHT11的溫度升高5℃左右,同時功耗也會有所增加。此功能主要為了比較加熱前后的溫度和濕度值,可以綜合驗證兩個傳感器元件的性能。在高濕(>95%RH)環境中,加熱傳感器可預防傳感器結露,同時縮短響應時間,提高精度。加熱后SHT11溫度升高、相對濕度降低,較加熱前,測量值會略有差異。

圖1 SHT11內部結構圖Fig.1 Internal stucture of SHT11
單片機和溫濕度傳感器通信采用串行二線接口SCK和DATA,其中SCK為時鐘線,DATA為數據線,硬件接口電路非常簡單。需要注意的是:DATA數據線需要外接上拉電阻,時鐘線SCK用于微處理器和SHT11之間通信同步,由于接口包含了完全靜態邏輯,所以對SCK最低頻率沒有要求,當工作電壓高于4.5 V時,SCK頻率最高為10 MHz,而當工作電壓低于4.5 V時,SCK最高頻率為1 MHz。由于所用單片機不具備I2C總線接口,故使用單片機通用I/O口線來虛擬I2C總線,并利用RA0口來虛擬數據線DATA,RA1口線來虛擬時鐘線,并在DATA端接入一只10 kΩ的上拉電阻,同時,在VDD及GND端接入一只0.1 μF的去耦電容。
硬件連接如圖2所示。

圖2 SHT11與PIC接口電路Fig.2 Interface circuit of SHT11 and PIC
162字符型液晶顯示模塊是發展比較成熟的一種液晶顯示屏,應用相當廣泛。它是一類專用于顯示字母、數字、符號等的點陣液晶顯示模塊,可顯示兩行,每行可以顯示16個字符,162字符型液晶顯示模塊應用到溫濕度感測系統中顯示溫濕度,直觀方便又節約成本。
該顯示屏是一個以若干5×8或5×11點陣塊組成的顯示字符群。其中,字符群中的每一個字符塊為一個字符單位,字符間的點距和行距均為一個點的寬度。它的內部有字符發生器 CGROM,可以顯示 160個 5×7和32個 5×10點陣字符,具有64個字節的CGRAM,可以自定義 8個5×8或4個 5×11點陣字符[2],有80個顯示存儲器DDRAM的地址。
162字符型液晶顯示模塊由16個引腳組成,具體的引腳功能如表1所示。
控制器接口信號說明:也就是RS、R/W和E信號的配合選擇決定控制接口的4種模式,如表2所示。
162模塊與單片機的接口電路如圖3所示。
硬件將162模塊的數據總線的低4位接為常態,在軟件中設置數據總線長度為4位,4位數據總線時序圖如圖4所示[3]。

表1 162液晶顯示模塊的引腳功能Tab.1 Pin functions of 162 LCD module

表2 控制接口信號Tab.2 Control interface signal

圖3 162液晶顯示模塊與PIC的接口電路Fig.3 Interface circuit of 162 LCD module and PIC

圖4 4位數據總線模式時序圖Fig.4 Timing diagram of 4-bit bus mode
單片機和溫濕度傳感器通信采用串行二線接口SCK和DATA,該二線串行通信協議和I2C協議是不兼容的。由于采用二線串行接口,對于SHT11的操作按照嚴格時序,共有5條用戶命令,分別是測量溫度命令 (03H)、測量濕度命令(05H)、讀寄存器狀態命令(07H)、寫寄存器狀態命令(06H)和軟啟動命令(1EH)[4]。
單片機發出啟動命令,隨后發出一個后續8位命令碼,該命令碼包含3個地址位(芯片設定地址為000)和5個命令位,發送完該命令碼,將DATA總線設為輸入狀態等待SHT11的響應,SHT11接收到上述地址和命令碼后,在第8個時鐘下降沿,將DATA下拉為低電平作為芯片的ACK;在第9個時鐘下降沿之后,芯片釋放DATA(恢復高電平)總線;釋放總線后,開始測量當前濕度,測量結束后,再次將DATA總線拉為低電平;單片機檢測到DATA總線被拉低后,得知濕度測量已經結束,給出SCK時鐘信號;芯片在第8個時鐘下降沿,先輸出高字節數據;在第9個時鐘下降沿,單片機將DATA總線拉低作為ACK信號,然后釋放總線DATA,在隨后8個SCK周期下降沿,芯片發出低字節數據;接下來的SCK下降沿,單片機再次將DATA總線拉低作為接收數據的ACK信號;最后8個SCK下降沿芯片發出CRC校驗數據,單片機不予應答(NACK)則表示測量結束。CRC寄存器通過計算一個多項式(x8+x5+x4)之和來判定測量過程是否發生錯誤,一旦發現錯誤,單片機就發送軟啟動命令,重新進行測量。如果不使用CRC校驗,單片機可以在測量值LSB后保持應答信號ACK高電平,來終止通信。SHT11在測量和通信完成后會自動返回睡眠模式。
以測量相對濕度,測量值N=0000100100110001為例,整個測量過程時序如圖 5(a)、(b)、(c)所示。 DATA 為雙向數據口,圖5中粗線段表示由SHT11來控制數據線,常態下由單片機控制數據線。

圖5 SHT11測量過程時序Fig.5 Timing sequence of SHT11 measuring procedures
下面給出與上述硬件電路配套的PIC16的溫度傳感器讀取程序[5]。
TCGQ
BANKSEL TRISA
BCF TRISA,0
BCF TRISA,1
BANKSEL PORTA
BSF PORTA,0
BCF PORTA,1
BSF PORTA,1
BCF PORTA,0
BCF PORTA,1
BSF PORTA,1
BSF PORTA,0
BCF PORTA,1
;發送測量溫度命令
MOVLW 0X8
MOVWF COUNT
MOVLW 0X3
MOVWF TORDER
STORD
BTFSS TORDER,7
GOTO CLRSDA
BSF PORTA,0
GOTO STGOON
CLRSDA
BCF PORTA,0
STGOON
BSF PORTA,1
NOP
BCF PORTA,1
RLF TORDER,F
DECFSZ COUNT,F
GOTO STORD
BANKSEL TRISA
BSF TRISA,0
BANKSEL PORTA
BTFSC PORTA,0
GOTO TCGQ
BSF PORTA,1
NOP
BCF PORTA,1
NOP
RTWAIT
BTFSC PORTA,0
GOTO RTWAIT
MOVLW 0X8
MOVWFCOUNT
MOVLW 0X80
MOVWFTORDER
MOVLW 0
MOVWFTREGH
BCF STATUS,C
RTORDH
MOVF TORDER,W
BSF PORTA,1
BTFSC PORTA,0
IORWF TREGH,F
BCF PORTA,1
RRF TORDER,F
DECFSZ COUNT,F
GOTO RTORDH
BANKSEL TRISA
BCF TRISA,0
BANKSEL PORTA
BCF PORTA,0
BSF PORTA,1
NOP
BCF PORTA,1
BSF PORTA,0
BANKSEL TRISA
BSF TRISA,0
NOP
BANKSEL COUNT
MOVLW 0X8
MOVWFCOUNT
MOVLW 0X80
MOVWFTORDER
MOVLW 0
MOVWFTREGL
BCF STATUS,C
RTORDL
MOVF TORDER,W
BSF PORTA,1
BTFSC PORTA,0
IORWF TREGL,F
BCF PORTA,1
RRF TORDER,F
DECFSZ COUNT,F
GOTO RTORDL
BANKSEL TRISA
BCF TRISA,0
BANKSEL PORTA
BSF PORTA,0
RETURN
2.2.1 濕度線性補償和溫度補償
SHT11可通過DATA數據總線直接輸出數字量濕度值。該濕度值稱為“相對濕度”,需要進行線性補償和溫度補償后才能得到較為準確的濕度值。由于相對濕度數字輸出特性呈一定的非線性,因此為了補償濕度傳感器的非線性,可按下式修正濕度值[6]:

式中,RHlinear為經過線性補償后的濕度值,SORH為相對濕度測量值,C1、C2、C3為線性補償系數。
由于溫度對濕度的影響十分明顯,而實際溫度和測試參考溫度25℃有所不同,所以對線性補償后的濕度值進行溫度補償很有必要。補償公式如下:
RHtrue=(T-25)×(t1+t2×SORH)+RHlinear
式中:RHtrue為經過線性補償和溫度補償后的濕度值,T為測試濕度值時的溫度(℃),t1和t2為溫度補償系數。
2.2.2 溫度值輸出
由于SHT11是采用PTAT能隙材料制成的溫度敏感元件,因而具有很好的線性輸出。實際溫度值可由下式算得:

式中,d1和d2為特定系數,d1的取值與SHT11工作電壓有關,d2的取值則與SHT11內部A/D轉換器采用的分辨率有關。
計算出溫度、濕度值后,在162字符型液晶顯示模塊上顯示出來,屏幕第一行顯示溫度值:“TEM:……”第二行顯示濕度值:“HUM:……”。程序設定每5 min更新一次溫濕度。顯示流程圖如圖6所示。

圖6 溫濕度顯示流程圖Fig.6 Flow chart of temperature and humidity display
由PIC單片機和溫濕度數字傳感器SHT11以及162液晶顯示模塊組成的溫濕度感測系統,充分利用了SHT11的特點,又對溫濕度測量功能進行了擴充,使其具有顯示直觀、運行可靠、擴充方便等優點。利用可控的加熱制冷設備對該系統性能進行了測試,實際結果表明:測溫范圍為-40~+100℃,誤差不超過0.5℃,濕度測量范圍是2~98%RH,誤差不超過4%RH(室溫25℃時測量),達到了預期性能指標,滿足實際應用要求。
[1]馮顯英,葛榮雨.基于數字溫濕度傳感器SHT11的溫濕度測控系統[J].自動化儀表,2006(1):59-61.FENG Xian-ying,GE Rong-yu.The temperature/humidity measurement and control system based on digital temperature/humiditysensorSHT11[J].ProcessAutomation Instrumentation,2006(1):59-61.
[2]李志廣,淮俊霞.162字符型液晶顯示模塊在光電計數系統中的應用[J].現代顯示,2007(5):27-31.LI Zhi-guang,HUAI Jun-xia.The Application of 162 character LCD module in a photoelectric counting system[J].Advanced Display,2007(5):27-31.
[3]Displaytech Ltd.[EB/OL].http://docs-asia.electrocomponents.com/webdocs/06dd/0900766b806dda18.pdf.
[4]盛恩銳貿易深圳有限公司.數字溫濕度傳感器技術手冊[EB/OL] (2010-05).http://www.sensirion.com.cn/product/downimg/C-Datasheet_SHT1x_V4.%203_C1.pdf.
[5]李海濤,儀維,吳筱堅,等.PIC單片機應用開發典型模塊[M].北京:人民郵電出版社,2007.
[6]孟臣,李敏,李愛傳.I2C總線數字式溫濕度傳感器SHT11及其在單片機系統的應用[J].電子設計工程,2004(3):50-54.MENG Chen,LI Min,LI Ai-chuan.Digital temperature and humidity sensor SHT11 based on I2C bus and its application in the single-chip microcomputersystem[J].Electronic Design Engineering,2004(3):50-54.