摘 要: 針對當(dāng)前實(shí)驗(yàn)室無法實(shí)現(xiàn)溫濕度數(shù)據(jù)實(shí)時測量,、數(shù)據(jù)傳遞不方便等缺點(diǎn),以數(shù)字式溫濕度傳感器和通用單片機(jī)為基礎(chǔ),,開發(fā)了實(shí)驗(yàn)室溫濕度測量系統(tǒng),。該系統(tǒng)以AT89S52單片機(jī)為主芯片,數(shù)字式溫濕度傳感器SHT21為主要傳感器,,完成了測量系統(tǒng)硬件系統(tǒng)和軟件系統(tǒng)的開發(fā),,并且設(shè)計了能夠傳遞給上位機(jī)數(shù)據(jù)的通信程序。該系統(tǒng)可以實(shí)現(xiàn)溫濕度測量,,并且可以傳遞相關(guān)數(shù)據(jù)給上位機(jī),,對于實(shí)驗(yàn)室數(shù)據(jù)監(jiān)測有著積極的作用。
關(guān)鍵詞: 溫濕度,;測量,;實(shí)驗(yàn)室;數(shù)據(jù)傳遞
0 引言
溫濕度是重要的環(huán)境參數(shù)[1-3],,特別是對于實(shí)驗(yàn)室環(huán)境,,溫濕度需要出現(xiàn)在許多的檢測報告中。而目前實(shí)驗(yàn)室常用的是濕度計和溫度表,,基本原理是采用水銀溫度濕度計進(jìn)行檢測,,缺點(diǎn)是在需要記錄數(shù)據(jù)的時候要先讀取相關(guān)數(shù)據(jù),非常不方便,;同時還無法實(shí)現(xiàn)溫濕度的實(shí)時測量,。
目前應(yīng)用較為廣泛的溫濕度傳感器主要是熱電偶[4-5]、熱電阻[6-8]及濕度等模擬傳感器,,該類型的傳感器輸出為模擬信號,。為了能夠測量該數(shù)據(jù)需要進(jìn)行模數(shù)轉(zhuǎn)換,,在使用過程中較為繁瑣。而數(shù)字溫濕度傳感器將溫濕度信息直接用數(shù)字量輸出,,能夠直接輸出給測量系統(tǒng),,因此數(shù)字式溫濕度傳感器在溫濕度監(jiān)測中應(yīng)用更為方便[9]。
為此,,擬以成本較低的AT89S52單片機(jī)為控制芯片[10],、以低功耗的新型數(shù)字式SHT21作為測量溫度、濕度的傳感器[11]和FYD12864液晶模塊[12],,開發(fā)用于實(shí)驗(yàn)室的溫濕度顯示及報警系統(tǒng),。
1 控制系統(tǒng)總體結(jié)構(gòu)
整個控制系統(tǒng)包括傳感器、微處理器,、顯示模塊和電源模塊,,如圖1所示。其中,,傳感器為SHT21溫濕度傳感器,,該傳感器除了配有電容式相對濕度傳感器和能隙溫度傳感器外,還包含一個放大器,、A/D轉(zhuǎn)換器,、OTP內(nèi)存和數(shù)字處理單元,能夠非常方便地測量溫度和濕度信號[9],;ECU是整個控制系統(tǒng)的核心,,選用ATMEL公司的8位單片機(jī)AT89S52,能夠接受輸入信號和輸出控制信號,,同時還包含與上位機(jī)的接口,,用于程序下載和數(shù)據(jù)通信,;顯示模塊采用FYD12864液晶模塊,,用于顯示溫度和濕度值;報警模塊采用蜂鳴器,,如果當(dāng)前溫度或者濕度大于設(shè)定值就會發(fā)出報警,;通信模塊用于與采集系統(tǒng)進(jìn)行通信,該通信采用串口通信,,用于把溫濕度信息傳遞給采集系統(tǒng),。
2 控制系統(tǒng)硬件設(shè)計
2.1 溫濕度信號處理
溫濕度傳感器SHT21的管腳定義如表1所示,該傳感器的供電范圍為2.1~3.6 V,,推薦電壓為3.0 V,,為了保證傳感器的正常運(yùn)行,在電源(VDD)和接地(VSS)之間須連接一個0.1 μF的電容,,且電容的位置應(yīng)盡可能靠近傳感器,。SCL用于微處理器與傳感器之間的通信同步,,SDA引腳用于傳感器的數(shù)據(jù)輸入和輸出,當(dāng)向傳感器發(fā)送命令時,,SDA在串行時鐘(SCL)的上升沿有效,,在SCL下降沿之后,SDA值可被改變,;當(dāng)從傳感器讀取數(shù)據(jù)時,,SDA在SCL變低以后有效,且維持到下一個SCL的下降沿,。為避免信號沖突,,通常在SDA端口需要一個外部的上拉電阻(如10 kΩ)將信號提拉至高電平。
在本電路圖中,,VSS接地,,VDD接電源+3 V,NC保持不連接,,SDA接單片機(jī)P1.6口,,SCL接單片機(jī)P1.7口,并接兩個上拉電阻R3,,R4,,其大小都為10 kΩ,在VDD與VSS之間接一個0.1 μF的去耦電容,,其連接電路圖如圖2所示,。
2.2 報警電路
蜂鳴器是一種一體化結(jié)構(gòu)的電子訊響器,采用直流電壓供電,,廣泛應(yīng)用于各種電子產(chǎn)品中作為發(fā)聲器件,。而在單片機(jī)應(yīng)用的設(shè)計上,大部分都會使用蜂鳴器來作提示或報警,,為此本設(shè)計中也采用蜂鳴器作為報警提示,。蜂鳴器驅(qū)動電路一般都包含以下幾個部分:一個三極管、一個蜂鳴器,、一個續(xù)流二極管和一個電源濾波電容,。本設(shè)計采用如圖3所示的電路驅(qū)動蜂鳴器,R5阻值為2 kΩ,,蜂鳴器驅(qū)動電路與單片機(jī)的P3.3口連接,;蜂鳴器的額電流小于等于30 mA,對于AT89S51單片機(jī)來說,,P3.3口的灌電流是15 mA,,很明顯可以看出僅僅依靠P3.3口的電流是驅(qū)動不了該蜂鳴器的,這就需要使用晶體管放大電路,,所以本設(shè)計選用PNP型晶體管,。
當(dāng)外部的溫度或者濕度超過設(shè)定的閾值時,,基極變?yōu)榈碗娖剑澍Q器導(dǎo)通發(fā)出報警,。
2.3 顯示電路
本設(shè)計中所采用的FYD12864液晶顯示模塊是128×64點(diǎn)陣型液晶顯示模塊,,可顯示各種字符及圖形,具有8位標(biāo)準(zhǔn)數(shù)據(jù)總線,、6條控制線及電源線,。為了能夠?qū)崿F(xiàn)對該模塊的控制,采用P0和P2口控制,,由于51單片機(jī)P0口沒有內(nèi)部上拉電阻,,為此需要外部增加上拉電阻,本設(shè)計增加的外部上拉電阻為10 kΩ,;對于FYD12864液晶顯示模塊來說,,第三引腳VO是對比度電位引腳,本設(shè)計中采用10 kΩ的可變電阻來實(shí)現(xiàn)對比電壓的調(diào)整,,如圖4所示,。
2.4 通信模塊
由于單片機(jī)輸出是TTL電平,而PC輸出是-12 V~ +12 V電平,,所以需要一個MAX232串口通信模塊芯片構(gòu)成電平轉(zhuǎn)換電路,,實(shí)現(xiàn)通信時電平信號的匹配,其連接電路如圖5所示,,其中C1-和C2-表示連接點(diǎn),,分別連接電容的一端。
2.5 電源模塊
本設(shè)計中的大部分電路都需用5 V的電壓,,而溫濕度傳感器需要用3 V電壓,,為了能夠同時滿足兩者的需求,本設(shè)計采用三端穩(wěn)壓集成電路LM7805,。其電路圖如圖6所示,,在輸出5 V電壓的基礎(chǔ)上,通過增加3個1N4007使輸出的電壓變?yōu)?.9 V,,能夠?yàn)闇貪穸葌鞲衅鞴╇姟?/p>
2.6 單片機(jī)最小系統(tǒng)
單片機(jī)最小系統(tǒng)由單片機(jī),、復(fù)位電路和時鐘電路構(gòu)成,,如圖7所示,。所選用的8位單片機(jī)AT89C52具有8 KB的可編程Flash、256 B的RAM,、32個I/O口,、5個中斷源、2個16位定時器,,完全滿足控制需求,;復(fù)位電路采用上電復(fù)位方式,;時鐘電路晶振11.059 2 MHz,完全滿足系統(tǒng)的要求,。
3 控制系統(tǒng)軟件設(shè)計
3.1主程序流程圖
主程序主要完成硬件的初始化,、子程序的調(diào)用等功能。在主程序中,,首先進(jìn)行SHT21和FYD12864的初始化,,然后調(diào)用溫濕度采集子程序,接著調(diào)用溫濕度處理子程序,,讀取成功后,,將讀取成功的溫濕度數(shù)據(jù)與所設(shè)定的數(shù)據(jù)相比較,如果超過所設(shè)定的溫濕度數(shù)據(jù),,蜂鳴器導(dǎo)通鳴叫,,起到報警作用,如果沒有超過所設(shè)定的溫濕度數(shù)據(jù),,就會直接在FYD12864顯示器上顯示出來,。之后判斷是否需要向上位機(jī)傳遞數(shù)據(jù),如果需要傳遞則調(diào)用相應(yīng)的子程序,;如果不需要則重復(fù)采集溫度和濕度數(shù)值,,進(jìn)行循環(huán)。其流程圖如圖8所示,。
3.2 串口通信
為便于后續(xù)數(shù)據(jù)的分析及處理,,編寫了串口通信程序,使用RS232串口,,將單片機(jī)采集到的數(shù)據(jù)上傳到上位機(jī),。
上位機(jī)和下位機(jī)通信分為上位機(jī)串口初始化和下位機(jī)串口初始化,其中上位機(jī)串口初始化程序如下:
Private Sub Form_Load()
MSComm1.CommPort=1//使用Com1口
MSComm1.Settings="9600,,n,,8,1"
//設(shè)置通信參數(shù),,波特率9 600,,無校驗(yàn)位,發(fā)送8位,,1個停止位
′MSComm1.PortOpen=True//開串口
End Sub
下位機(jī)串口初始化程序如下:
/********串口初始化函數(shù)**********/
void Serial_Init(void)//串口通信初始設(shè)定
{
SCON=0x50,;//UART為模式1,8位數(shù)據(jù),,允許接收
TMOD=0x20,;//定時器1為模式2,8位自動重裝
PCON=0x00,;//波特率9 600
TH1=0xfd,; //定時器賦初值
TL1=0xfd,;
TR1=1;//啟動定時器TH1
ES=1,;//允許串口中斷
EA=1,;//開中斷總開關(guān)
}
在實(shí)際工程中,下位機(jī)根據(jù)上位機(jī)發(fā)送的不同數(shù)據(jù)請求分別發(fā)送相應(yīng)的數(shù)據(jù),,下位機(jī)數(shù)據(jù)發(fā)送程序如下:
/********串口接收中斷函數(shù)**********/
void Serial_Recieve_Inter() interrupt 4 using 3
{
if(RI)
{
RI=0,;
if(SBUF==0) //收到發(fā)送溫度數(shù)據(jù)請求
{
AT24C64_RD(0xa1,AT24C64_Inter_Address_Read_Temp),;
AT24C64_Inter_Address_Read_Temp++,;
//讀溫度地址加1
SBUF=Temp_Val;//向串口發(fā)送溫度數(shù)據(jù)
while(TI==0),;//等待發(fā)送,,直到8位數(shù)據(jù)發(fā)送完畢
TI=0; //TI清零
}
if(SBUF==1) //收到發(fā)送濕度數(shù)據(jù)請求
{
AT24C64_RD(0xa3,,AT24C64_Inter_Address_Read_Pres),;
AT24C64_Inter_Address_Read_Pres++;//讀濕度地址加1
if(SBUF==3) //收到發(fā)送操作數(shù)據(jù)請求
{
AT24C64_RD(0xa3,,AT24C64_Inter_Address_Read_Pres),;
AT24C64_Inter_Address_Read_Pres++;//讀操作地址加1
SBUF=Proc_Val,;//向串口發(fā)送操作數(shù)據(jù)
while(TI==0),;//等待發(fā)送,直到8位數(shù)據(jù)發(fā)送完畢
TI=0,;//TI清零
}
}
}
上位機(jī)界面采用VB6.0編寫,,添加其自帶的MSComm控件,可以很方便地實(shí)現(xiàn)串口通信,。上位機(jī)采集到的數(shù)據(jù)以*.text格式存儲,,便于其他軟件的調(diào)用分析。
4 實(shí)物圖
為了對所設(shè)計的溫濕度監(jiān)控系統(tǒng)進(jìn)行測試,,利用普通萬用板進(jìn)行制作,,其實(shí)物如圖9所示。此時,,顯示模塊,、單片機(jī)最小系統(tǒng)和串口通信模塊分開布局,便于各自調(diào)試,。
經(jīng)過實(shí)際調(diào)試,,該系統(tǒng)可以正常顯示溫濕度數(shù)據(jù),,同時也可以利用自編的上位機(jī)程序讀取相關(guān)數(shù)據(jù),。
5 結(jié)論
本文介紹了實(shí)驗(yàn)室溫濕度測量系統(tǒng)的設(shè)計過程,,分別從控制系統(tǒng)的總體結(jié)構(gòu)、硬件系統(tǒng)和軟件系統(tǒng)進(jìn)行了介紹,,并且利用萬用板實(shí)現(xiàn)了該系統(tǒng),。該系統(tǒng)結(jié)構(gòu)簡單、應(yīng)用方便,,對于實(shí)驗(yàn)室溫濕度檢測有著積極作用,。
參考文獻(xiàn)
[1] 范滿紅,馬勝前,,陳彥,,等.基于多傳感器數(shù)據(jù)融合的溫濕度監(jiān)測系統(tǒng)[J].壓電與聲光,2012,,34(3):459-462,,465.
[2] 鐘曉偉,宋蟄存.基于單片機(jī)的實(shí)驗(yàn)室溫濕度控制系統(tǒng)設(shè)計[J].林業(yè)機(jī)械與木工設(shè)備,,2010,,38(1):39-42.
[3] 劉明波,顧夏華,,周琳琦.基于FPGA的遠(yuǎn)程溫濕度監(jiān)測系統(tǒng)設(shè)計與實(shí)現(xiàn)[J].計算機(jī)測量與控制,,2011,19(11):2619-2622.
[4] 劉慶赟,,焦斌亮,,劉永富.倉庫溫濕度監(jiān)測與nRF905無線傳輸系統(tǒng)的設(shè)計[J].傳感器與微系統(tǒng),2011,,30(5):101-103.
[5] 劉希明.熱電偶線性溫度測量裝置[J].儀器儀表學(xué)報,,2007(S1):53-59.
[6] 許卓,楊雷,,何志偉.多通道熱電阻精密測量中溫度漂移的補(bǔ)償法[J].化工自動化及儀表,,2011,38(8):32-36.
[7] 才智,,范長勝,,楊冬霞.PT100鉑熱電阻溫度測量系統(tǒng)的設(shè)計[J].現(xiàn)代電子技術(shù),2008,,31(20):172-174,,177.
[8] 譚長森.基于PT100型鉑熱電阻的測溫裝置設(shè)計[J].工礦自動化,2012,,38(3):89-91.
[9] 劉洋,,金太東.基于CAN總線的智能型溫濕度采集系統(tǒng)設(shè)計[J].現(xiàn)代電子技術(shù),2010,33(1):126-128.
[10] 遲欽河,,趙仲生,,喬桂芳,等.89C51單片機(jī)在多通道數(shù)據(jù)采集系統(tǒng)中的應(yīng)用[J].自動化儀表,,2000,,21(6):33-35,39.
[11] 鮑愛達(dá),,張慶志,,郭濤,等.基于FPGA和SHT21傳感器的溫濕度測量系統(tǒng)的設(shè)計[J].計算機(jī)測量與控制,,2012,,20(11):2885-2887.
[12] 范春輝,何廣平.DAC7714和中文液晶模塊與單片機(jī)的接口設(shè)計[J].電測與儀表,,2005,,42(12):62-64,61.