李智祥 陳 瑞
摘 要:為了實(shí)現(xiàn)遠(yuǎn)距離溫度監(jiān)控,介紹一種基于單片機(jī)的多點(diǎn)溫度監(jiān)控系統(tǒng)。上位機(jī)通過(guò)RS 485總線與下位機(jī)通信,下位機(jī)將采集的溫度信息傳送給上位機(jī),并執(zhí)行上位機(jī)的控制命令。給出系統(tǒng)總體結(jié)構(gòu),闡述了系統(tǒng)硬件電路和和軟件實(shí)現(xiàn)方法,設(shè)計(jì)了上位機(jī)與下位機(jī)之間的通信協(xié)議,解決了8位單片機(jī)多機(jī)通信的問(wèn)題。該系統(tǒng)可擴(kuò)展性強(qiáng),配置簡(jiǎn)單,操作方便,具有通用性,有效地節(jié)省了人力物力。
關(guān)鍵詞:RS 485總線;串行通信;單片機(jī);溫度監(jiān)控;DS18B20溫度傳感器
中圖分類號(hào):TP23文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):1004-373X(2009)03-140-03
Design of Multi-point Temperature Monitoring System
LI Zhixiang,CHEN Rui
(School of Mechanical and Electronic Engineering,Wuhan University of Technology,Wuhan,430070,China)
Abstract:In order to achieve long-range temperature monitoring,this paper introduces multi-point temperature monitoring system based on single chip microcomputer.The hypogynous machine comunicates with the epigynous machines through 485 bus and they send temperature to the epigynous machine and perform the control order.The system architecture is gived,the hardware circuit and software implementation method are elaborated and the communication protocol between epigynous machine and hypogynous machine is designed.The problem of multi-computer communication among 8 b single chip microcomputers is worked out.This system can effectivly save human and material resources with strong scalability,simple configuration,operability and universal.
Keywords:RS 485 bus;serial communication;single chip computer;temperature monitoring;DS18B20 temperature sensor
目前許多場(chǎng)合都要對(duì)溫度進(jìn)行控制。如倉(cāng)庫(kù),不同的儲(chǔ)藏室儲(chǔ)存物品的溫度都不同;再比如醫(yī)院,為了使病人的治療效果最好,需要對(duì)每一個(gè)病房的溫度進(jìn)行控制。該文研究的多點(diǎn)溫度監(jiān)控系統(tǒng)能夠?qū)Χ鄠€(gè)位置的溫度進(jìn)行設(shè)置、檢測(cè),根據(jù)溫度設(shè)置值與檢測(cè)值來(lái)控制調(diào)溫設(shè)備運(yùn)轉(zhuǎn),調(diào)節(jié)溫度。
1 系統(tǒng)的總體結(jié)構(gòu)及功能
本系統(tǒng)的總體結(jié)構(gòu)框圖如圖1所示,為了滿足多通道數(shù)據(jù)采集和處理,系統(tǒng)采用了一臺(tái)上位機(jī)和多個(gè)下位機(jī)的集總式結(jié)構(gòu)。上位機(jī)采用AT89S51單片機(jī),下位機(jī)采用AT89C2051單片機(jī)。上位機(jī)與下位機(jī)之間采用RS 485總線通信。其中上位機(jī)系統(tǒng)配置液晶顯示屏、按鍵。按鍵用于調(diào)整各個(gè)點(diǎn)的預(yù)置溫度和系統(tǒng)時(shí)間,查詢各個(gè)點(diǎn)的預(yù)置溫度值、實(shí)際溫度值以及調(diào)溫設(shè)備運(yùn)行情況,輸入下位機(jī)的控制信息。液晶顯示屏用于顯示系統(tǒng)時(shí)間,以及各點(diǎn)的預(yù)置溫度值、實(shí)際溫度值和調(diào)溫設(shè)備運(yùn)行情況,如1 min內(nèi)沒(méi)有任何操作,則液晶顯示屏上開(kāi)始循環(huán)顯示各個(gè)點(diǎn)的實(shí)際溫度值、預(yù)置溫度值以及調(diào)溫設(shè)備運(yùn)轉(zhuǎn)情況,每一個(gè)點(diǎn)的數(shù)據(jù)在液晶屏上顯示的時(shí)間是8 s。下位機(jī)負(fù)責(zé)溫度采集和控制調(diào)溫設(shè)備運(yùn)轉(zhuǎn),溫度傳感器采用DS18B20。上位機(jī)首先將預(yù)置溫度值發(fā)送到下位機(jī),下位機(jī)將實(shí)際溫度與預(yù)置溫度進(jìn)行比較后輸出調(diào)溫設(shè)備控制信號(hào),并將實(shí)際溫度與調(diào)溫設(shè)備運(yùn)轉(zhuǎn)狀態(tài)發(fā)送到上位機(jī)。
2 硬件電路設(shè)計(jì)
2.1 下位機(jī)電路設(shè)計(jì)
下位機(jī)電路主要由三部分構(gòu)成:溫度采集電路、RS 485總線接口電路、調(diào)溫設(shè)備的控制電路,其電路原理圖如圖2所示。
2.1.1 溫度采集電路
溫度傳感器采用DS18B20,其是一種單總線智能型溫度傳感器,只有三線接口,分別為地線、數(shù)據(jù)線、電源線。DS18B20輸出信號(hào)為數(shù)字信號(hào),處理器與DS18B20通過(guò)數(shù)據(jù)線來(lái)完成雙向通信,因此采用DS18B20使得電路十分簡(jiǎn)單。溫度變換功率可以來(lái)源于外電源,也可以來(lái)源于數(shù)據(jù)總線,總線本身也可以向所掛接的DS18B20供電。DS18B20的電壓范圍為+3.0~+5.5 V,測(cè)溫范圍為-55~+125 ℃,固有的測(cè)溫分辨率為0.5 ℃,最高精度可達(dá)0.067 5 ℃,最大的轉(zhuǎn)換時(shí)間為200 ms。一條總線上面可以掛接多個(gè)DS18B20實(shí)現(xiàn)多點(diǎn)測(cè)溫。本系統(tǒng)中每臺(tái)下位機(jī)只接一個(gè)DS18B20。
采用單片機(jī)的P3.7口與DS18B20進(jìn)行通信,采集溫度信號(hào),由于其是雙向通信,內(nèi)部結(jié)構(gòu)是開(kāi)漏,所以在總線上要加一個(gè)10 kΩ上拉電阻。
2.1.2 RS 485總線接口電路
本系統(tǒng)上位機(jī)與下位機(jī)之間采用RS 485總線通信,其通信距離可達(dá)1 200 m。總線驅(qū)動(dòng)芯片采用MAX485, RO接單片機(jī)的RXD,DI接TXD,MAX485芯片的發(fā)送和接收功能轉(zhuǎn)換由芯片的RE,DE端控制。DE=1時(shí),MAX485處于發(fā)送狀態(tài);RE=0,DE=0時(shí),芯片處于接收狀態(tài)。將RE,DE接在單片機(jī)的一根口線P3.4上。
在上電復(fù)位時(shí),為了避免分機(jī)咬總線的情況,總線上的各分機(jī)應(yīng)處于接收狀態(tài)。而在上電復(fù)位時(shí),單片機(jī)各端口處于高電平狀態(tài),硬件電路穩(wěn)定也需要一定的時(shí)間,則可能向總線發(fā)送信息,為了避免這種情況,將P3.4口接一個(gè)74HC14反相器,使MAX485上電時(shí)處于接收狀態(tài)。另外在數(shù)據(jù)傳輸之前,先要通過(guò)一個(gè)低電平起始位實(shí)現(xiàn)握手,給RO外接10 kΩ上拉電阻,防止干擾信號(hào)誤觸發(fā)產(chǎn)生負(fù)跳變,使單片機(jī)進(jìn)入接收狀態(tài)。
總線上面掛接多個(gè)分機(jī),其中任何一只芯片故障就可能將總線“拉死”,因此在MAX485的A,B口線與總線之間各串接一只20 Ω的電阻實(shí)現(xiàn)總線隔離。如果是最后一臺(tái)分機(jī),則在差分端口A,B之間接120 Ω的平衡匹配電阻,減少由于不匹配而引起的反射,并且能夠吸收噪聲,抑止干擾,保證通信質(zhì)量。注意不能在中間分機(jī)節(jié)點(diǎn)上并接平衡匹配電阻。
2.1.3 輸出控制電路
上位機(jī)向下位機(jī)發(fā)送命令和預(yù)置溫度,下位機(jī)接收到之后,解析命令,并將預(yù)置溫度與實(shí)際溫度比較,根據(jù)命令和比較結(jié)果,利用P3.5口控制調(diào)溫設(shè)備。當(dāng)P3.5輸出低電平時(shí),U1導(dǎo)通發(fā)光,使晶體管導(dǎo)通,從而T1導(dǎo)通,驅(qū)動(dòng)繼電器K工作,使調(diào)溫設(shè)備導(dǎo)通工作。當(dāng)P3.5為高電平時(shí),U1不導(dǎo)通,晶體管不導(dǎo)通,T1也截止,繼電器不通電,調(diào)溫設(shè)備不工作。
2.2 上位機(jī)電路
上位機(jī)電路包括RS 485總線接口電路、鍵盤電路和液晶顯示電路。其中總線接口電路與下位機(jī)總線接口電路基本一致。其電路原理圖如圖3所示。下面介紹鍵盤電路和顯示電路。
2.2.1 鍵盤電路
上位機(jī)電路中提供6個(gè)按鍵用于溫度設(shè)置、溫度查詢、系統(tǒng)時(shí)間設(shè)置、工作/待機(jī)設(shè)置。它們是“ON/OFF”鍵、“+”鍵、“-”鍵、“SET”鍵、“ENQ”鍵、“TIME”鍵,分別與AT89S51的P2.0,P2.1,P2.2,P2.3,P2.4,P2.5相連?!癝ET”鍵用于選擇下位機(jī),之后可按“ON/OFF”鍵使對(duì)應(yīng)的下位機(jī)工作/待機(jī),也可按“+”,“-”鍵給該分機(jī)設(shè)置預(yù)置溫度?!癊NQ”鍵用于查詢下位機(jī)的預(yù)置溫度、實(shí)際溫度值和調(diào)溫設(shè)備運(yùn)轉(zhuǎn)狀態(tài)。設(shè)置系統(tǒng)時(shí)間需先按“TIME”鍵選擇時(shí)或分,然后利用“+”,“-”鍵設(shè)置系統(tǒng)時(shí)間。
2.2.2 顯示電路
上位機(jī)系統(tǒng)采用16×2字符型液晶模組(LCM),其為按鍵操作提供可視化依據(jù),內(nèi)部集成了LCD控制器、LCD驅(qū)動(dòng)器、LCD顯示裝置。LCM與單片機(jī)的接口電路比較簡(jiǎn)單,單片機(jī)的P1口接LCM的數(shù)據(jù)總線,P3.5,P3.6,P3.7用于控制LCM。LCM的第一行顯示系統(tǒng)時(shí)間,第二行顯示分機(jī)的設(shè)置溫度、實(shí)際溫度和工作狀態(tài)。如果在1 m內(nèi)沒(méi)有任何操作,則液晶顯示屏上開(kāi)始循環(huán)顯示各個(gè)點(diǎn)的實(shí)際溫度值、預(yù)置溫度值以及工作狀態(tài),每一個(gè)點(diǎn)的數(shù)據(jù)在液晶屏上顯示的時(shí)間是8 s。
3 RS 485通信協(xié)議
為實(shí)現(xiàn)上位機(jī)與多臺(tái)下位機(jī)通信可靠穩(wěn)定,上位機(jī)與下位機(jī)通信波特率都為9 600 b/s,通信方式均為串行工作方式3,每幀通信數(shù)據(jù)包括1個(gè)起始位,1個(gè)停止位,8個(gè)數(shù)據(jù)位,1個(gè)奇校驗(yàn)位。通信模式采用主/從方式,上位機(jī)為主機(jī),下位機(jī)為從機(jī),主機(jī)地址為1,從機(jī)地址是2,3,4,…;主機(jī)與從機(jī)之間采用一問(wèn)一答方式,從機(jī)之間不能相互通信。每個(gè)上行/下行的數(shù)據(jù)包的字節(jié)個(gè)數(shù)都是一樣的,從機(jī)收到數(shù)據(jù)包后向主機(jī)回復(fù)一個(gè)數(shù)據(jù)包。每個(gè)數(shù)據(jù)包長(zhǎng)度為4 B,下行數(shù)據(jù)包格式:地址信息(1 B)、命令信息(1 B)、溫度設(shè)置值(1 B)、檢驗(yàn)碼(1 B);上行數(shù)據(jù)包格式:主機(jī)地址信息(1 B)、命令應(yīng)答信息(1 B)、實(shí)測(cè)溫度值(1 B)、檢驗(yàn)碼(1 B)。命令信息和命令應(yīng)答信息就是指從機(jī)的工作狀態(tài)。
主機(jī)采用輪詢方式訪問(wèn)各從機(jī),在發(fā)出指令后,主機(jī)進(jìn)入查詢狀態(tài),等待從機(jī)應(yīng)答。從機(jī)不斷查詢總線,如主機(jī)訪問(wèn)地址與從機(jī)地址相符,并且校驗(yàn)通過(guò),則執(zhí)行指令,并保存設(shè)置溫度值,然后將相關(guān)信息以上行數(shù)據(jù)包格式發(fā)回主機(jī)。如不是本機(jī)地址或校驗(yàn)碼錯(cuò)誤,則丟棄指令及數(shù)據(jù)。傳輸過(guò)程中的誤碼校驗(yàn)采用校驗(yàn)和的方式,即先將要發(fā)送的數(shù)據(jù)包的所有字節(jié)相加,然后截短到一個(gè)字節(jié)長(zhǎng)度。
4 系統(tǒng)軟件設(shè)計(jì)
4.1 下位機(jī)程序設(shè)計(jì)
下位機(jī)程序主要包括DS18B20傳感器溫度采集子程序、串行通信子程序、輸出控制子程序。主程序循環(huán)調(diào)用溫度采集子程序和輸出控制子程序,利用串行中斷來(lái)接收上位機(jī)發(fā)送的信息并回復(fù)主機(jī)(上位機(jī)),接收數(shù)據(jù)包的長(zhǎng)度是4 B,發(fā)送數(shù)據(jù)包的長(zhǎng)度也是4 B。其串行中斷接收發(fā)送程序流程圖如圖4所示。
4.2 上位機(jī)程序設(shè)計(jì)
上位機(jī)程序主要包括鍵盤掃描子程序、串行通信子程序、液晶顯示子程序。
利用T0產(chǎn)生50 ms定時(shí)中斷來(lái)進(jìn)行時(shí)間換算、實(shí)時(shí)更新液晶顯示屏上的信息;在主程序中利用循環(huán)來(lái)查詢按鍵、向下位機(jī)發(fā)送數(shù)據(jù);利用串行中斷來(lái)接收下位機(jī)的回復(fù)數(shù)據(jù)。上位機(jī)接收數(shù)據(jù)過(guò)程與下位機(jī)接收數(shù)據(jù)過(guò)程一樣,其主程序流程圖如圖5所示。系統(tǒng)采用一問(wèn)一答的通信方式,上位機(jī)是主機(jī),在向從機(jī)(下位機(jī))發(fā)送完數(shù)據(jù)之后要調(diào)用延時(shí)程序等待從機(jī)的回復(fù)。
5 結(jié) 語(yǔ)
該系統(tǒng)能夠?qū)崿F(xiàn)多點(diǎn)溫度檢測(cè)控制,操作方便,配置簡(jiǎn)單,有效地節(jié)省了人力物力,實(shí)現(xiàn)自動(dòng)化,具有通用性,可用于多種場(chǎng)合,具有很好的實(shí)用價(jià)值。
參考文獻(xiàn)
[1]周興華.單片機(jī)智能化產(chǎn)品C語(yǔ)言設(shè)計(jì)實(shí)例祥解.北京:北京航空航天大學(xué)出版社,2006.
[2]求是科技.單片機(jī)典型模塊設(shè)計(jì)實(shí)例導(dǎo)航.北京:人民郵電出版社,2004.
[3]陳斌.基于RS 485的單片機(jī)多機(jī)通信技術(shù).嵌入式系統(tǒng),2005(7):91-94.
[4]張晨昊,吳桂清,戴喻興.基于485總線的數(shù)字化溫濕度測(cè)控系統(tǒng)的設(shè)計(jì).科學(xué)技術(shù)與工程,6(11):2 656-2 658.
[5]姜地.單片機(jī)RS 485多機(jī)通信技術(shù).中國(guó)科技信息,2006,9(17):126-129.
[6]王宗陽(yáng),馬旭東.基于RS 485總線的遠(yuǎn)程抄表系統(tǒng)采集終端的設(shè)計(jì)與實(shí)現(xiàn).現(xiàn)代電子技術(shù),2007,30(7):78-80.
[7]何希才.常用集成電路應(yīng)用實(shí)例.北京:電子工業(yè)出版社,2007.
[8]彭佳文,姚志成,彭佳紅.一種單片機(jī)多機(jī)通信系統(tǒng)的設(shè)計(jì)[J].微計(jì)算機(jī)信息,2008,24(2):131-133.
[9]鄭文爭(zhēng),王旭陽(yáng).基于RS 485串行口的遠(yuǎn)程實(shí)時(shí)信號(hào)傳輸設(shè)計(jì).通信技術(shù),2007,5(5):16-18.
[10]王明衍.一種基于RS 485接口的通信方法.微計(jì)算機(jī)信息,2006,22(4):220-221.
作者簡(jiǎn)介
李智祥 碩士研究生導(dǎo)師。主要研究方向?yàn)榛剞D(zhuǎn)窯系統(tǒng)檢測(cè)。
陳 瑞 在讀碩士研究生。主要研究方向?yàn)檠b備設(shè)計(jì)與計(jì)算機(jī)應(yīng)用。