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