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