摘 要: 針對當(dāng)前實驗室無法實現(xiàn)溫濕度數(shù)據(jù)實時測量、數(shù)據(jù)傳遞不方便等缺點,以數(shù)字式溫濕度傳感器和通用單片機為基礎(chǔ),開發(fā)了實驗室溫濕度測量系統(tǒng)。該系統(tǒng)以AT89S52單片機為主芯片,數(shù)字式溫濕度傳感器SHT21為主要傳感器,完成了測量系統(tǒng)硬件系統(tǒng)和軟件系統(tǒng)的開發(fā),并且設(shè)計了能夠傳遞給上位機數(shù)據(jù)的通信程序。該系統(tǒng)可以實現(xiàn)溫濕度測量,并且可以傳遞相關(guān)數(shù)據(jù)給上位機,對于實驗室數(shù)據(jù)監(jiān)測有著積極的作用。
關(guān)鍵詞: 溫濕度;測量;實驗室;數(shù)據(jù)傳遞
0 引言
溫濕度是重要的環(huán)境參數(shù)[1-3],特別是對于實驗室環(huán)境,溫濕度需要出現(xiàn)在許多的檢測報告中。而目前實驗室常用的是濕度計和溫度表,基本原理是采用水銀溫度濕度計進行檢測,缺點是在需要記錄數(shù)據(jù)的時候要先讀取相關(guān)數(shù)據(jù),非常不方便;同時還無法實現(xiàn)溫濕度的實時測量。
目前應(yīng)用較為廣泛的溫濕度傳感器主要是熱電偶[4-5]、熱電阻[6-8]及濕度等模擬傳感器,該類型的傳感器輸出為模擬信號。為了能夠測量該數(shù)據(jù)需要進行模數(shù)轉(zhuǎn)換,在使用過程中較為繁瑣。而數(shù)字溫濕度傳感器將溫濕度信息直接用數(shù)字量輸出,能夠直接輸出給測量系統(tǒng),因此數(shù)字式溫濕度傳感器在溫濕度監(jiān)測中應(yīng)用更為方便[9]。
為此,擬以成本較低的AT89S52單片機為控制芯片[10]、以低功耗的新型數(shù)字式SHT21作為測量溫度、濕度的傳感器[11]和FYD12864液晶模塊[12],開發(fā)用于實驗室的溫濕度顯示及報警系統(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位單片機AT89S52,能夠接受輸入信號和輸出控制信號,同時還包含與上位機的接口,用于程序下載和數(shù)據(jù)通信;顯示模塊采用FYD12864液晶模塊,用于顯示溫度和濕度值;報警模塊采用蜂鳴器,如果當(dāng)前溫度或者濕度大于設(shè)定值就會發(fā)出報警;通信模塊用于與采集系統(tǒng)進行通信,該通信采用串口通信,用于把溫濕度信息傳遞給采集系統(tǒng)。
2 控制系統(tǒng)硬件設(shè)計
2.1 溫濕度信號處理
溫濕度傳感器SHT21的管腳定義如表1所示,該傳感器的供電范圍為2.1~3.6 V,推薦電壓為3.0 V,為了保證傳感器的正常運行,在電源(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接單片機P1.6口,SCL接單片機P1.7口,并接兩個上拉電阻R3,R4,其大小都為10 kΩ,在VDD與VSS之間接一個0.1 μF的去耦電容,其連接電路圖如圖2所示。
2.2 報警電路
蜂鳴器是一種一體化結(jié)構(gòu)的電子訊響器,采用直流電壓供電,廣泛應(yīng)用于各種電子產(chǎn)品中作為發(fā)聲器件。而在單片機應(yīng)用的設(shè)計上,大部分都會使用蜂鳴器來作提示或報警,為此本設(shè)計中也采用蜂鳴器作為報警提示。蜂鳴器驅(qū)動電路一般都包含以下幾個部分:一個三極管、一個蜂鳴器、一個續(xù)流二極管和一個電源濾波電容。本設(shè)計采用如圖3所示的電路驅(qū)動蜂鳴器,R5阻值為2 kΩ,蜂鳴器驅(qū)動電路與單片機的P3.3口連接;蜂鳴器的額電流小于等于30 mA,對于AT89S51單片機來說,P3.3口的灌電流是15 mA,很明顯可以看出僅僅依靠P3.3口的電流是驅(qū)動不了該蜂鳴器的,這就需要使用晶體管放大電路,所以本設(shè)計選用PNP型晶體管。
當(dāng)外部的溫度或者濕度超過設(shè)定的閾值時,基極變?yōu)榈碗娖?,蜂鳴器導(dǎo)通發(fā)出報警。
2.3 顯示電路
本設(shè)計中所采用的FYD12864液晶顯示模塊是128×64點陣型液晶顯示模塊,可顯示各種字符及圖形,具有8位標準數(shù)據(jù)總線、6條控制線及電源線。為了能夠?qū)崿F(xiàn)對該模塊的控制,采用P0和P2口控制,由于51單片機P0口沒有內(nèi)部上拉電阻,為此需要外部增加上拉電阻,本設(shè)計增加的外部上拉電阻為10 kΩ;對于FYD12864液晶顯示模塊來說,第三引腳VO是對比度電位引腳,本設(shè)計中采用10 kΩ的可變電阻來實現(xiàn)對比電壓的調(diào)整,如圖4所示。
2.4 通信模塊
由于單片機輸出是TTL電平,而PC輸出是-12 V~ +12 V電平,所以需要一個MAX232串口通信模塊芯片構(gòu)成電平轉(zhuǎn)換電路,實現(xiàn)通信時電平信號的匹配,其連接電路如圖5所示,其中C1-和C2-表示連接點,分別連接電容的一端。
2.5 電源模塊
本設(shè)計中的大部分電路都需用5 V的電壓,而溫濕度傳感器需要用3 V電壓,為了能夠同時滿足兩者的需求,本設(shè)計采用三端穩(wěn)壓集成電路LM7805。其電路圖如圖6所示,在輸出5 V電壓的基礎(chǔ)上,通過增加3個1N4007使輸出的電壓變?yōu)?.9 V,能夠為溫濕度傳感器供電。
2.6 單片機最小系統(tǒng)
單片機最小系統(tǒng)由單片機、復(fù)位電路和時鐘電路構(gòu)成,如圖7所示。所選用的8位單片機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)用等功能。在主程序中,首先進行SHT21和FYD12864的初始化,然后調(diào)用溫濕度采集子程序,接著調(diào)用溫濕度處理子程序,讀取成功后,將讀取成功的溫濕度數(shù)據(jù)與所設(shè)定的數(shù)據(jù)相比較,如果超過所設(shè)定的溫濕度數(shù)據(jù),蜂鳴器導(dǎo)通鳴叫,起到報警作用,如果沒有超過所設(shè)定的溫濕度數(shù)據(jù),就會直接在FYD12864顯示器上顯示出來。之后判斷是否需要向上位機傳遞數(shù)據(jù),如果需要傳遞則調(diào)用相應(yīng)的子程序;如果不需要則重復(fù)采集溫度和濕度數(shù)值,進行循環(huán)。其流程圖如圖8所示。
3.2 串口通信
為便于后續(xù)數(shù)據(jù)的分析及處理,編寫了串口通信程序,使用RS232串口,將單片機采集到的數(shù)據(jù)上傳到上位機。
上位機和下位機通信分為上位機串口初始化和下位機串口初始化,其中上位機串口初始化程序如下:
Private Sub Form_Load()
MSComm1.CommPort=1//使用Com1口
MSComm1.Settings="9600,n,8,1"
//設(shè)置通信參數(shù),波特率9 600,無校驗位,發(fā)送8位,1個停止位
′MSComm1.PortOpen=True//開串口
End Sub
下位機串口初始化程序如下:
/********串口初始化函數(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)
}
在實際工程中,下位機根據(jù)上位機發(fā)送的不同數(shù)據(jù)請求分別發(fā)送相應(yīng)的數(shù)據(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清零
}
}
}
上位機界面采用VB6.0編寫,添加其自帶的MSComm控件,可以很方便地實現(xiàn)串口通信。上位機采集到的數(shù)據(jù)以*.text格式存儲,便于其他軟件的調(diào)用分析。
4 實物圖
為了對所設(shè)計的溫濕度監(jiān)控系統(tǒng)進行測試,利用普通萬用板進行制作,其實物如圖9所示。此時,顯示模塊、單片機最小系統(tǒng)和串口通信模塊分開布局,便于各自調(diào)試。
經(jīng)過實際調(diào)試,該系統(tǒng)可以正常顯示溫濕度數(shù)據(jù),同時也可以利用自編的上位機程序讀取相關(guān)數(shù)據(jù)。
5 結(jié)論
本文介紹了實驗室溫濕度測量系統(tǒng)的設(shè)計過程,分別從控制系統(tǒng)的總體結(jié)構(gòu)、硬件系統(tǒng)和軟件系統(tǒng)進行了介紹,并且利用萬用板實現(xiàn)了該系統(tǒng)。該系統(tǒng)結(jié)構(gòu)簡單、應(yīng)用方便,對于實驗室溫濕度檢測有著積極作用。
參考文獻
[1] 范滿紅,馬勝前,陳彥,等.基于多傳感器數(shù)據(jù)融合的溫濕度監(jiān)測系統(tǒng)[J].壓電與聲光,2012,34(3):459-462,465.
[2] 鐘曉偉,宋蟄存.基于單片機的實驗室溫濕度控制系統(tǒng)設(shè)計[J].林業(yè)機械與木工設(shè)備,2010,38(1):39-42.
[3] 劉明波,顧夏華,周琳琦.基于FPGA的遠程溫濕度監(jiān)測系統(tǒng)設(shè)計與實現(xiàn)[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] 許卓,楊雷,何志偉.多通道熱電阻精密測量中溫度漂移的補償法[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單片機在多通道數(shù)據(jù)采集系統(tǒng)中的應(yīng)用[J].自動化儀表,2000,21(6):33-35,39.
[11] 鮑愛達,張慶志,郭濤,等.基于FPGA和SHT21傳感器的溫濕度測量系統(tǒng)的設(shè)計[J].計算機測量與控制,2012,20(11):2885-2887.
[12] 范春輝,何廣平.DAC7714和中文液晶模塊與單片機的接口設(shè)計[J].電測與儀表,2005,42(12):62-64,61.