摘要:基于PIC單片機的溫濕度感測系統(tǒng),以PIC單片機為核心,由溫濕度傳感器SHTll、162液晶顯示等模塊組成。首先SHTll對環(huán)境的溫度和相對濕度進行檢測,通過二線串行接口將數(shù)字溫濕度信號送至PIC微控制器,最后利用微控制器完成相對濕度的非線性補償和溫度補償,并將實際溫度和相對濕度值送液晶顯示器顯示,從而實現(xiàn)對環(huán)境溫濕度的測控。結(jié)果表明,系統(tǒng)溫度測量誤差為0.5℃,濕度測量誤差為4%RH,同時顯示直觀方便,滿足實際應(yīng)用要求。
關(guān)鍵詞:SHTll;溫濕度傳感器;單片機;162字符型液晶顯示模塊
溫濕度的測量與控制在工業(yè)生產(chǎn)、氣象、環(huán)保及日常生活的許多領(lǐng)域得到越來越廣泛的應(yīng)用,有很多地方都需要對溫度和濕度進行定時或?qū)崟r監(jiān)控。人們除對溫濕度傳感器的普通性能(如精確度、長期漂移特性等)感興趣外,還把目光聚集到其在不同環(huán)境下的耐久性、元件尺寸、數(shù)字化、簡單和快速的系統(tǒng)綜合特性上。SHTll是瑞士Sensirion公司生產(chǎn)的具有二線串行接口的單片全校準(zhǔn)數(shù)字式新型相對濕度和溫度傳感器,可用來測量相對濕度、溫度和露點等參數(shù),具有數(shù)字式輸出、免調(diào)試、免標(biāo)定、免外圍電路及全互換的特點。該傳感器將CMOS芯片技術(shù)與傳感器技術(shù)融合,為開發(fā)高集成度、高精度、高可靠性的溫濕度測控系統(tǒng)提供了解決方案。
1 系統(tǒng)組成及硬件設(shè)計
溫濕度感測系統(tǒng)將單片機與溫濕度傳感器等技術(shù)相結(jié)合,以PIC單片機為微控制器,利用數(shù)字溫濕度傳感器SHTll對環(huán)境的溫度和相對濕度進行檢測,通過二線串行接口將數(shù)字溫濕度信號送至PIC微控制器,最后利用PIC微控制器完成相對濕度的非線性補償和溫度補償,并將實際溫度和相對濕度值送液晶顯示器顯示,從而實現(xiàn)對環(huán)境溫濕度的測控。溫濕度感測系統(tǒng)主要由溫濕度傳感器SHTll和PIC單片機以及162字符型液晶顯示屏組成。
1.1 數(shù)字溫濕度傳感器SHTll
溫濕度傳感器SHTll將溫度感測、濕度感測、信號變換、A/D轉(zhuǎn)換和加熱器等功能集成到一個芯片上,其內(nèi)部結(jié)構(gòu)如圖1所示。該芯片包括一個電容性聚合體濕度敏感元件和一個用能隙材料制成的溫度敏感元件。這兩個敏感元件分別將濕度和溫度轉(zhuǎn)換成電信號,該電信號首先進入微弱信號放大器進行放大,然后進入一個14位的A/D轉(zhuǎn)換器,最后經(jīng)過二線串行數(shù)字接口輸出數(shù)字信號。SHTll在出廠前,都會在恒濕或恒溫環(huán)境中進行校準(zhǔn),校準(zhǔn)系數(shù)存儲在校準(zhǔn)寄存器中,在測量過程中,校準(zhǔn)系數(shù)會自動校準(zhǔn)來自傳感器的信號。此外,SHTll內(nèi)部還集成了一個加熱元件,加熱元件接通后可以將SHTll的溫度升高5℃左右,同時功耗也會有所增加。此功能主要為了比較加熱前后的溫度和濕度值,可以綜合驗證兩個傳感器元件的性能。在高濕(>95%RH)環(huán)境中,加熱傳感器可預(yù)防傳感器結(jié)露,同時縮短響應(yīng)時間,提高精度。加熱后SHTll溫度升高、相對濕度降低,較加熱前,測量值會略有差異。
單片機和溫濕度傳感器通信采用串行二線接口SCK和DATA,其中SCK為時鐘線,DATA為數(shù)據(jù)線,硬件接口電路非常簡單。需要注意的是:DATA數(shù)據(jù)線需要外接上拉電阻,時鐘線SCK用于微處理器和SHTll之間通信同步,由于接口包含了完全靜態(tài)邏輯,所以對SCK最低頻率沒有要求,當(dāng)工作電壓高于4.5 V時,SCK頻率最高為10 MHz,而當(dāng)工作電壓低于4.5 V時,SCK最高頻率為1 MHz。由于所用單片機不具備I2C總線接口,故使用單片機通用I/O口線來虛擬I2C總線,并利用RA0口來虛擬數(shù)據(jù)線DATA,RA1口線來虛擬時鐘線,并在DATA端接入一只10kΩ的上拉電阻,同時,在VDD及GND端接入一只0.1μF的去耦電容。
硬件連接如圖2所示。
1.2 162字符型液晶顯示模塊
162字符型液晶顯示模塊是發(fā)展比較成熟的一種液晶顯示屏,應(yīng)用相當(dāng)廣泛。它是一類專用于顯示字母、數(shù)字、符號等的點陣液晶顯示模塊,可顯示兩行,每行可以顯示16個字符,162字符型液晶顯示模塊應(yīng)用到溫濕度感測系統(tǒng)中顯示溫濕度,直觀方便又節(jié)約成本。
該顯示屏是一個以若干5x8或5x11點陣塊組成的顯示字符群。其中,字符群中的每一個字符塊為一個字符單位,字符間的點距和行距均為一個點的寬度。它的內(nèi)部有字符發(fā)生器CGROM,可以顯示160個5x7和32個5x10點陣字符,具有64個字節(jié)的CGRAM,可以自定義8個5x8或4個5x11點陣字符,有80個顯示存儲器DDRAM的地址。
162字符型液晶顯示模塊由16個引腳組成,具體的引腳功能如表1所示。
控制器接口信號說明:也就是RS、R/W和E信號的配合選擇決定控制接口的4種模式,如表2所示。
162模塊與單片機的接口電路如圖3所示。
硬件將162模塊的數(shù)據(jù)總線的低4位接為常態(tài),在軟件中設(shè)置數(shù)據(jù)總線長度為4位,4位數(shù)據(jù)總線時序圖如圖4所示。
2 系統(tǒng)軟件設(shè)計
2.1 溫濕度讀取
單片機和溫濕度傳感器通信采用串行二線接口SCK和DATA,該二線串行通信協(xié)議和I2C協(xié)議是不兼容的。由于采用二線串行接口,對于SHTll的操作按照嚴(yán)格時序,共有5條用戶命令,分別是測量溫度命令(03H)、測量濕度命令(05H)、讀寄存器狀態(tài)命令(07H)、寫寄存器狀態(tài)命令(06H)和軟啟動命令(1EH)。
單片機發(fā)出啟動命令,隨后發(fā)出一個后續(xù)8位命令碼,該命令碼包含3個地址位(芯片設(shè)定地址為000)和5個命令位,發(fā)送完該命令碼,將DATA總線設(shè)為輸入狀態(tài)等待SHTll的響應(yīng),SHTll接收到上述地址和命令碼后,在第8個時鐘下降沿,將DATA下拉為低電平作為芯片的ACK;在第9個時鐘下降沿之后,芯片釋放DATA(恢復(fù)高電平)總線;釋放總線后,開始測量當(dāng)前濕度,測量結(jié)束后,再次將DATA總線拉為低電平;單片機檢測到DATA總線被拉低后,得知濕度測量已經(jīng)結(jié)束,給出SCK時鐘信號;芯片在第8個時鐘下降沿,先輸出高字節(jié)數(shù)據(jù);在第9個時鐘下降沿,單片機將DATA總線拉低作為ACK信號,然后釋放總線DATA,在隨后8個SCK周期下降沿,芯片發(fā)出低字節(jié)數(shù)據(jù);接下來的SCK下降沿,單片機再次將DATA總線拉低作為接收數(shù)據(jù)的ACK信號;最后8個SCK下降沿芯片發(fā)出CRC校驗數(shù)據(jù),單片機不予應(yīng)答(NACK)則表示測量結(jié)束。CRC寄存器通過計算一個多項式(x8+x5+x4)之和來判定測量過程是否發(fā)生錯誤,一旦發(fā)現(xiàn)錯誤,單片機就發(fā)送軟啟動命令,重新進行測量。如果不使用CRC校驗,單片機可以在測量值LSB后保持應(yīng)答信號ACK高電平,來終止通信。SHTll在測量和通信完成后會自動返回睡眠模式。
以測量相對濕度,測量值N=0000100100110001為例,整個測量過程時序如圖5(a)、(b)、(c)所示。DATA為雙向數(shù)據(jù)口,圖5中粗線段表示由SHTll來控制數(shù)據(jù)線,常態(tài)下由單片機控制數(shù)據(jù)線。
下面給出與上述硬件電路配套的PIC16的溫度傳感器讀取程序。
RETURN
2.2 溫度和濕度值的計算
2.2.1 濕度線性補償和溫度補償
SHTll可通過DATA數(shù)據(jù)總線直接輸出數(shù)字量濕度值。該濕度值稱為“相對濕度”,需要進行線性補償和溫度補償后才能得到較為準(zhǔn)確的濕度值。由于相對濕度數(shù)字輸出特性呈一定的非線性,因此為了補償濕度傳感器的非線性,可按下式修正濕度值:
式中,RHlineer為經(jīng)過線性補償后的濕度值,SORH為相對濕度測量值,C1、C2、C3為線性補償系數(shù)。
由于溫度對濕度的影響十分明顯,而實際溫度和測試參考溫度25℃有所不同,所以對線性補償后的濕度值進行溫度補償很有必要。補償公式如下:
式中:RHtrue為經(jīng)過線性補償和溫度補償后的濕度值,T為測試濕度值時的溫度(℃),t1和t2為溫度補償系數(shù)。
2.2.2 溫度值輸出
由于SHTll是采用PTAT能隙材料制成的溫度敏感元件,因而具有很好的線性輸出。實際溫度值可由下式算得:
式中,d1和d2為特定系數(shù),d1的取值與SHTll工作電壓有關(guān),d2的取值則與SHTll內(nèi)部A/D轉(zhuǎn)換器采用的分辨率有關(guān)。
2.3 溫濕度顯示
計算出溫度、濕度值后,在162字符型液晶顯示模塊上顯示出來,屏幕第一行顯示溫度值:“TEM:……”第二行顯示濕度值:“HUM:……”。程序設(shè)定每5 min更新一次溫濕度。顯示流程圖如圖6所示。
3 結(jié)論
由PIC單片機和溫濕度數(shù)字傳感器SHTll以及162液晶顯示模塊組成的溫濕度感測系統(tǒng),充分利用了SHTll的特點,又對溫濕度測量功能進行了擴充,使其具有顯示直觀、運行可靠、擴充方便等優(yōu)點。利用可控的加熱制冷設(shè)備對該系統(tǒng)性能進行了測試,實際結(jié)果表明:測溫范圍為-40~+100℃,誤差不超過0.5℃,濕度測量范圍是2~98%RH,誤差不超過4%RH(室溫25℃時測量),達到了預(yù)期性能指標(biāo),滿足實際應(yīng)用要求。