翟春艷,岳修正,肖 宏,夏 濤
(中國電子科技集團(tuán)公司 第二十七研究所,河南 鄭州 450047)
溫濕度的測(cè)量與控制在工業(yè)生產(chǎn)、氣象、環(huán)保及日常生活的許多領(lǐng)域得到越來越廣泛的應(yīng)用,有很多地方都需要對(duì)溫度和濕度進(jìn)行定時(shí)或?qū)崟r(shí)監(jiān)控。人們除對(duì)溫濕度傳感器的普通性能(如精確度、長期漂移特性等)感興趣外,還把目光聚集到其在不同環(huán)境下的耐久性、元件尺寸、數(shù)字化、簡(jiǎn)單和快速的系統(tǒng)綜合特性上。SHT11是瑞士Sensirion公司生產(chǎn)的具有二線串行接口的單片全校準(zhǔn)數(shù)字式新型相對(duì)濕度和溫度傳感器,可用來測(cè)量相對(duì)濕度、溫度和露點(diǎn)等參數(shù),具有數(shù)字式輸出、免調(diào)試、免標(biāo)定、免外圍電路及全互換的特點(diǎn)。該傳感器將CMOS芯片技術(shù)與傳感器技術(shù)融合,為開發(fā)高集成度、高精度、高可靠性的溫濕度測(cè)控系統(tǒng)提供了解決方案[1]。
溫濕度感測(cè)系統(tǒng)將單片機(jī)與溫濕度傳感器等技術(shù)相結(jié)合,以PIC單片機(jī)為微控制器,利用數(shù)字溫濕度傳感器SHT11對(duì)環(huán)境的溫度和相對(duì)濕度進(jìn)行檢測(cè),通過二線串行接口將數(shù)字溫濕度信號(hào)送至PIC微控制器,最后利用PIC微控制器完成相對(duì)濕度的非線性補(bǔ)償和溫度補(bǔ)償,并將實(shí)際溫度和相對(duì)濕度值送液晶顯示器顯示,從而實(shí)現(xiàn)對(duì)環(huán)境溫濕度的測(cè)控。溫濕度感測(cè)系統(tǒng)主要由溫濕度傳感器SHT11和PIC單片機(jī)以及162字符型液晶顯示屏組成。
溫濕度傳感器SHT11將溫度感測(cè)、濕度感測(cè)、信號(hào)變換、A/D轉(zhuǎn)換和加熱器等功能集成到一個(gè)芯片上,其內(nèi)部結(jié)構(gòu)如圖1所示。該芯片包括一個(gè)電容性聚合體濕度敏感元件和一個(gè)用能隙材料制成的溫度敏感元件。這兩個(gè)敏感元件分別將濕度和溫度轉(zhuǎn)換成電信號(hào),該電信號(hào)首先進(jìn)入微弱信號(hào)放大器進(jìn)行放大,然后進(jìn)入一個(gè)14位的A/D轉(zhuǎn)換器,最后經(jīng)過二線串行數(shù)字接口輸出數(shù)字信號(hào)。SHT11在出廠前,都會(huì)在恒濕或恒溫環(huán)境中進(jìn)行校準(zhǔn),校準(zhǔn)系數(shù)存儲(chǔ)在校準(zhǔn)寄存器中,在測(cè)量過程中,校準(zhǔn)系數(shù)會(huì)自動(dòng)校準(zhǔn)來自傳感器的信號(hào)。此外,SHT11內(nèi)部還集成了一個(gè)加熱元件,加熱元件接通后可以將SHT11的溫度升高5℃左右,同時(shí)功耗也會(huì)有所增加。此功能主要為了比較加熱前后的溫度和濕度值,可以綜合驗(yàn)證兩個(gè)傳感器元件的性能。在高濕(>95%RH)環(huán)境中,加熱傳感器可預(yù)防傳感器結(jié)露,同時(shí)縮短響應(yīng)時(shí)間,提高精度。加熱后SHT11溫度升高、相對(duì)濕度降低,較加熱前,測(cè)量值會(huì)略有差異。
圖1 SHT11內(nèi)部結(jié)構(gòu)圖Fig.1 Internal stucture of SHT11
單片機(jī)和溫濕度傳感器通信采用串行二線接口SCK和DATA,其中SCK為時(shí)鐘線,DATA為數(shù)據(jù)線,硬件接口電路非常簡(jiǎn)單。需要注意的是:DATA數(shù)據(jù)線需要外接上拉電阻,時(shí)鐘線SCK用于微處理器和SHT11之間通信同步,由于接口包含了完全靜態(tài)邏輯,所以對(duì)SCK最低頻率沒有要求,當(dāng)工作電壓高于4.5 V時(shí),SCK頻率最高為10 MHz,而當(dāng)工作電壓低于4.5 V時(shí),SCK最高頻率為1 MHz。由于所用單片機(jī)不具備I2C總線接口,故使用單片機(jī)通用I/O口線來虛擬I2C總線,并利用RA0口來虛擬數(shù)據(jù)線DATA,RA1口線來虛擬時(shí)鐘線,并在DATA端接入一只10 kΩ的上拉電阻,同時(shí),在VDD及GND端接入一只0.1 μF的去耦電容。
硬件連接如圖2所示。
圖2 SHT11與PIC接口電路Fig.2 Interface circuit of SHT11 and PIC
162字符型液晶顯示模塊是發(fā)展比較成熟的一種液晶顯示屏,應(yīng)用相當(dāng)廣泛。它是一類專用于顯示字母、數(shù)字、符號(hào)等的點(diǎn)陣液晶顯示模塊,可顯示兩行,每行可以顯示16個(gè)字符,162字符型液晶顯示模塊應(yīng)用到溫濕度感測(cè)系統(tǒng)中顯示溫濕度,直觀方便又節(jié)約成本。
該顯示屏是一個(gè)以若干5×8或5×11點(diǎn)陣塊組成的顯示字符群。其中,字符群中的每一個(gè)字符塊為一個(gè)字符單位,字符間的點(diǎn)距和行距均為一個(gè)點(diǎn)的寬度。它的內(nèi)部有字符發(fā)生器 CGROM,可以顯示 160個(gè) 5×7和32個(gè) 5×10點(diǎn)陣字符,具有64個(gè)字節(jié)的CGRAM,可以自定義 8個(gè)5×8或4個(gè) 5×11點(diǎn)陣字符[2],有80個(gè)顯示存儲(chǔ)器DDRAM的地址。
162字符型液晶顯示模塊由16個(gè)引腳組成,具體的引腳功能如表1所示。
控制器接口信號(hào)說明:也就是RS、R/W和E信號(hào)的配合選擇決定控制接口的4種模式,如表2所示。
162模塊與單片機(jī)的接口電路如圖3所示。
硬件將162模塊的數(shù)據(jù)總線的低4位接為常態(tài),在軟件中設(shè)置數(shù)據(jù)總線長度為4位,4位數(shù)據(jù)總線時(shí)序圖如圖4所示[3]。
表1 162液晶顯示模塊的引腳功能Tab.1 Pin functions of 162 LCD module
表2 控制接口信號(hào)Tab.2 Control interface signal
圖3 162液晶顯示模塊與PIC的接口電路Fig.3 Interface circuit of 162 LCD module and PIC
圖4 4位數(shù)據(jù)總線模式時(shí)序圖Fig.4 Timing diagram of 4-bit bus mode
單片機(jī)和溫濕度傳感器通信采用串行二線接口SCK和DATA,該二線串行通信協(xié)議和I2C協(xié)議是不兼容的。由于采用二線串行接口,對(duì)于SHT11的操作按照嚴(yán)格時(shí)序,共有5條用戶命令,分別是測(cè)量溫度命令 (03H)、測(cè)量濕度命令(05H)、讀寄存器狀態(tài)命令(07H)、寫寄存器狀態(tài)命令(06H)和軟啟動(dòng)命令(1EH)[4]。
單片機(jī)發(fā)出啟動(dòng)命令,隨后發(fā)出一個(gè)后續(xù)8位命令碼,該命令碼包含3個(gè)地址位(芯片設(shè)定地址為000)和5個(gè)命令位,發(fā)送完該命令碼,將DATA總線設(shè)為輸入狀態(tài)等待SHT11的響應(yīng),SHT11接收到上述地址和命令碼后,在第8個(gè)時(shí)鐘下降沿,將DATA下拉為低電平作為芯片的ACK;在第9個(gè)時(shí)鐘下降沿之后,芯片釋放DATA(恢復(fù)高電平)總線;釋放總線后,開始測(cè)量當(dāng)前濕度,測(cè)量結(jié)束后,再次將DATA總線拉為低電平;單片機(jī)檢測(cè)到DATA總線被拉低后,得知濕度測(cè)量已經(jīng)結(jié)束,給出SCK時(shí)鐘信號(hào);芯片在第8個(gè)時(shí)鐘下降沿,先輸出高字節(jié)數(shù)據(jù);在第9個(gè)時(shí)鐘下降沿,單片機(jī)將DATA總線拉低作為ACK信號(hào),然后釋放總線DATA,在隨后8個(gè)SCK周期下降沿,芯片發(fā)出低字節(jié)數(shù)據(jù);接下來的SCK下降沿,單片機(jī)再次將DATA總線拉低作為接收數(shù)據(jù)的ACK信號(hào);最后8個(gè)SCK下降沿芯片發(fā)出CRC校驗(yàn)數(shù)據(jù),單片機(jī)不予應(yīng)答(NACK)則表示測(cè)量結(jié)束。CRC寄存器通過計(jì)算一個(gè)多項(xiàng)式(x8+x5+x4)之和來判定測(cè)量過程是否發(fā)生錯(cuò)誤,一旦發(fā)現(xiàn)錯(cuò)誤,單片機(jī)就發(fā)送軟啟動(dòng)命令,重新進(jìn)行測(cè)量。如果不使用CRC校驗(yàn),單片機(jī)可以在測(cè)量值LSB后保持應(yīng)答信號(hào)ACK高電平,來終止通信。SHT11在測(cè)量和通信完成后會(huì)自動(dòng)返回睡眠模式。
以測(cè)量相對(duì)濕度,測(cè)量值N=0000100100110001為例,整個(gè)測(cè)量過程時(shí)序如圖 5(a)、(b)、(c)所示。 DATA 為雙向數(shù)據(jù)口,圖5中粗線段表示由SHT11來控制數(shù)據(jù)線,常態(tài)下由單片機(jī)控制數(shù)據(jù)線。
圖5 SHT11測(cè)量過程時(shí)序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
;發(fā)送測(cè)量溫度命令
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(xiàn)
DECFSZ COUNT,F(xiàn)
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(xiàn)
BCF PORTA,1
RRF TORDER,F(xiàn)
DECFSZ COUNT,F(xiàn)
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(xiàn)
BCF PORTA,1
RRF TORDER,F(xiàn)
DECFSZ COUNT,F(xiàn)
GOTO RTORDL
BANKSEL TRISA
BCF TRISA,0
BANKSEL PORTA
BSF PORTA,0
RETURN
2.2.1 濕度線性補(bǔ)償和溫度補(bǔ)償
SHT11可通過DATA數(shù)據(jù)總線直接輸出數(shù)字量濕度值。該濕度值稱為“相對(duì)濕度”,需要進(jìn)行線性補(bǔ)償和溫度補(bǔ)償后才能得到較為準(zhǔn)確的濕度值。由于相對(duì)濕度數(shù)字輸出特性呈一定的非線性,因此為了補(bǔ)償濕度傳感器的非線性,可按下式修正濕度值[6]:
式中,RHlinear為經(jīng)過線性補(bǔ)償后的濕度值,SORH為相對(duì)濕度測(cè)量值,C1、C2、C3為線性補(bǔ)償系數(shù)。
由于溫度對(duì)濕度的影響十分明顯,而實(shí)際溫度和測(cè)試參考溫度25℃有所不同,所以對(duì)線性補(bǔ)償后的濕度值進(jìn)行溫度補(bǔ)償很有必要。補(bǔ)償公式如下:
RHtrue=(T-25)×(t1+t2×SORH)+RHlinear
式中:RHtrue為經(jīng)過線性補(bǔ)償和溫度補(bǔ)償后的濕度值,T為測(cè)試濕度值時(shí)的溫度(℃),t1和t2為溫度補(bǔ)償系數(shù)。
2.2.2 溫度值輸出
由于SHT11是采用PTAT能隙材料制成的溫度敏感元件,因而具有很好的線性輸出。實(shí)際溫度值可由下式算得:
式中,d1和d2為特定系數(shù),d1的取值與SHT11工作電壓有關(guān),d2的取值則與SHT11內(nèi)部A/D轉(zhuǎn)換器采用的分辨率有關(guān)。
計(jì)算出溫度、濕度值后,在162字符型液晶顯示模塊上顯示出來,屏幕第一行顯示溫度值:“TEM:……”第二行顯示濕度值:“HUM:……”。程序設(shè)定每5 min更新一次溫濕度。顯示流程圖如圖6所示。
圖6 溫濕度顯示流程圖Fig.6 Flow chart of temperature and humidity display
由PIC單片機(jī)和溫濕度數(shù)字傳感器SHT11以及162液晶顯示模塊組成的溫濕度感測(cè)系統(tǒng),充分利用了SHT11的特點(diǎn),又對(duì)溫濕度測(cè)量功能進(jìn)行了擴(kuò)充,使其具有顯示直觀、運(yùn)行可靠、擴(kuò)充方便等優(yōu)點(diǎn)。利用可控的加熱制冷設(shè)備對(duì)該系統(tǒng)性能進(jìn)行了測(cè)試,實(shí)際結(jié)果表明:測(cè)溫范圍為-40~+100℃,誤差不超過0.5℃,濕度測(cè)量范圍是2~98%RH,誤差不超過4%RH(室溫25℃時(shí)測(cè)量),達(dá)到了預(yù)期性能指標(biāo),滿足實(shí)際應(yīng)用要求。
[1]馮顯英,葛榮雨.基于數(shù)字溫濕度傳感器SHT11的溫濕度測(cè)控系統(tǒng)[J].自動(dòng)化儀表,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ì)數(shù)系統(tǒng)中的應(yīng)用[J].現(xiàn)代顯示,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]盛恩銳貿(mào)易深圳有限公司.數(shù)字溫濕度傳感器技術(shù)手冊(cè)[EB/OL] (2010-05).http://www.sensirion.com.cn/product/downimg/C-Datasheet_SHT1x_V4.%203_C1.pdf.
[5]李海濤,儀維,吳筱堅(jiān),等.PIC單片機(jī)應(yīng)用開發(fā)典型模塊[M].北京:人民郵電出版社,2007.
[6]孟臣,李敏,李愛傳.I2C總線數(shù)字式溫濕度傳感器SHT11及其在單片機(jī)系統(tǒng)的應(yīng)用[J].電子設(shè)計(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.