顧亞龍
(新疆醫(yī)科大學醫(yī)學工程技術(shù)學院,新疆烏魯木齊,830011)
現(xiàn)代社會生活中,越來越多的環(huán)境對溫度的恒定具有較高的要求。例如,泳池的水溫不能太低或太高,否則會引起人的不適;蔬菜大棚無論是在冬天還是夏天,室內(nèi)的溫度要保持在一定范圍之內(nèi),因為植物的生長受到環(huán)境溫度的影響。單片機和傳感器組成的測控系統(tǒng)可以完成對多種信號的采集和控制,被廣泛的應(yīng)用在工業(yè)、農(nóng)業(yè)、交通、醫(yī)療等行業(yè)[1-4]。51 單片機作為測控系統(tǒng)的核心,功能齊全、可靠性強,一經(jīng)推出,就得到了極大的普及。本文設(shè)計的溫度監(jiān)測報警系統(tǒng),采用了市面上常見的芯片,結(jié)構(gòu)簡單,成本低廉,可以同時監(jiān)測多個環(huán)境的溫度,應(yīng)用在多種場合,滿足絕大多數(shù)的溫度監(jiān)控需求。
系統(tǒng)以單片機為核心,單片機與溫度傳感器之間雙向通信。當單片機向溫度傳感器發(fā)出溫度轉(zhuǎn)換命令后,DS18B20 溫度傳感器首先將測量到的環(huán)境溫度值進行AD轉(zhuǎn)換,再將采集到的溫度通過總線發(fā)送給單片機。單片機執(zhí)行讀引腳操作,將總線上讀取到的溫度值保存并做運算處理,傳送給LCD1602 液晶顯示器顯示。若溫度傳感器發(fā)送給單片機的溫度值超出了預(yù)定溫度范圍,則單片機向聲光報警電路發(fā)出信號,此時聲光報警電路同時發(fā)出聲音和燈光報警。系統(tǒng)中電源分別向單片機、LCD1602 和聲光報警電路供電。系統(tǒng)的整體設(shè)計框圖如圖1 所示。
圖1 溫度監(jiān)測報警系統(tǒng)總體設(shè)計框圖
本文采用DS18B20 作為溫度傳感器。DS18B20 是DALLAS 公司生產(chǎn)的一種數(shù)字溫度傳感器,測量精度±0.5℃,可以直接將溫度轉(zhuǎn)化為數(shù)字信號傳送給單片機,不用單獨設(shè)計AD 轉(zhuǎn)換電路[5]。
每個DS18B20 傳感器具有單獨的64 位ROM,因此,該溫度傳感器不僅可以和單片機組成單點測溫系統(tǒng)[6-7],還可以構(gòu)成多點測溫系統(tǒng)。單總線的優(yōu)點是結(jié)構(gòu)簡單、成本低廉,節(jié)省單片機的IO 口資源,若要對系統(tǒng)進行擴展,可將新增的溫度傳感器掛接在總線上。單總線也有缺點,數(shù)據(jù)和地址等信息的傳送都通過一條線路,帶寬低、負載重,數(shù)據(jù)傳送時對時序的要求較高,編程難度加大。本文中溫度采集電路設(shè)計如圖2 中所示。每個溫度傳感器被放置在不同的測溫區(qū),測量各個區(qū)域的溫度,單總線經(jīng)4.7kΩ 的上拉電阻接單片機的P1.7 引腳。電源同時對4 個溫度傳感器供電,傳感器的GND 端同時接地。
圖2 硬件電路圖
本文采用LCD1602 液晶顯示器顯示當前的四個溫度傳感器采集的溫度值。該傳感器是最常見、并且市場普及率最高的字符型液晶顯示模塊。該顯示器每行可以顯示16 個字符,同時顯示兩行。LCD1602 的8 條數(shù)據(jù)線經(jīng)上拉電阻與單片機的P0 口相連接,當單片機對顯示器寫命令或需要顯示字符時,命令字或字符的ASCII 碼通過8 條數(shù)據(jù)線被寫入顯示器內(nèi)部的顯示數(shù)據(jù)RAM(DDRAM)??刂埔_RS 和EN 分別為寄存器選擇端和使能信號端,兩個引腳分別接單片機的P2.6 和P2.7 引腳。RS 和EN 引腳的不同信號組合可以控制顯示器的不同讀寫狀態(tài),由于溫度轉(zhuǎn)換時設(shè)有延時程序,遠大于顯示器內(nèi)部處理數(shù)據(jù)的時間長度,所以不用檢測LCD1602 的讀忙標志。單片機只向顯示器寫數(shù)據(jù),不用讀取,因此RW 引腳接地,恒為低電平。
揚聲器工作時需要的電流較大,而單片機驅(qū)動能力最強的P0 口每個引腳最大只能提供3mA 左右的灌電流,或者400μA 的拉電流,無法驅(qū)動揚聲器工作。本文為了使單片機能夠驅(qū)動揚聲器,采用了三極管驅(qū)動的方式。當系統(tǒng)需要發(fā)出報警信號時,單片機P3.6 發(fā)出低電平信號,PNP 三接管發(fā)射結(jié)導(dǎo)通,被放大的電流經(jīng)集電極驅(qū)動揚聲器發(fā)出聲音報警信號。當單片機復(fù)位重啟或不需要發(fā)出報警信號時,P3.6 引腳為高電平,發(fā)射結(jié)兩側(cè)沒有電位差,基極無電流,通過揚聲器的電流也為0。LED 的驅(qū)動電流較小,單片機引腳的灌電流足以驅(qū)動LED 發(fā)光,在揚聲器工作的同時,P3.5 發(fā)出高低電平信號,使LED 斷續(xù)發(fā)光,產(chǎn)生燈光報警信號,引起工作人員的注意。
除此之外,硬件電路還設(shè)有時鐘電路和復(fù)位電路,用于產(chǎn)生數(shù)字電路系統(tǒng)所需的時鐘信號和初始化系統(tǒng)所用,以滿足單片機系統(tǒng)工作的基本需求。
每個DS18B20 都有一個唯一的64 位ROM 碼,從而允許多只DS18B20 同時連接在一根總線上。若單片機要與總線上的某一只DS18B20 通信,必須要知道該溫度傳感器的ROM 碼,以識別“身份”。本文中的溫度監(jiān)測系統(tǒng)共有4只DS18B20,需要獲取每一只溫度傳感器的ROM 碼。
首先讓總線上的三個傳感器先與總線斷開,剩余一個溫度傳感器與單片機相連接。單片機與該DS18B20 初始化通信結(jié)束后,接著發(fā)送[33h](讀取ROM 指令),溫度傳感器會由低位到高位發(fā)送內(nèi)部64 位ROM 碼,單片機按位讀取后,存儲在內(nèi)部數(shù)據(jù)存儲器預(yù)定的8 個字節(jié)存儲單元中。分別讓剩余三個DS18B20 單獨與單片機相連,讀取ROM碼并存儲起來。系統(tǒng)工作時,單片機要核對收到的ROM 碼,因此要將ROM 顯示出來,以供編程時使用。最后,調(diào)用LCD1602 顯示子程序分別顯示已存儲的每個溫度傳感器的ROM 碼,并寫入源程序中。
單片機在總線上依次與各個DS18B20 通信,獲取溫度值。首先在總線上發(fā)出初始化信號,DS18B20 做出回應(yīng)。單片機再發(fā)送[55h](匹配ROM)指令,后跟64 位ROM碼,目的是與指定的溫度傳感器建立通信,其余的溫度傳感器不再對后面的指令做出回應(yīng)。單片機接著發(fā)送[44h](溫度轉(zhuǎn)換指令)。已經(jīng)建立通信的DS18B20 接收到溫度轉(zhuǎn)換指令以后,開始溫度轉(zhuǎn)換,將轉(zhuǎn)換好的溫度保存在內(nèi)部暫存器的第0 和第1 字節(jié),此過程最長需要750ms,單片機需要延時等待。再發(fā)出[BEh](讀暫存器指令),DS18B20將溫度值的補碼由低位至高位發(fā)送到總線上,單片機讀取總線上的數(shù)據(jù)后將之儲存在寄存器中。此后,單片機分別于各個DS18B20 建立通信,獲取4 個傳感器測量到的溫度值。溫度值經(jīng)過運算處理后,被依次發(fā)送給LCD1602,每次顯示兩個區(qū)域的溫度,間隔2 秒再顯示兩個區(qū)域的溫度,如圖3 所示。
圖3 溫度的顯示
單片機讀取完所有的溫度值后會進行判斷,如果有溫度值超過預(yù)設(shè)的溫度上限或低于溫度下限值后,單片機調(diào)用報警子程序。報警子程序同時令單片機的P3.5 和P3.6 引腳發(fā)出低電平,通過中斷子程序中的定時延時程序每0.5 秒使P3.5 和P3.6 引腳電平同時相反變化一次,可得到變化的聲光報警信號,提示當前溫度超出預(yù)設(shè)范圍。LCD1602 顯示屏同時顯示超出預(yù)設(shè)范圍的區(qū)域溫度,提示操作人員及時做出相應(yīng)處理。若單片機讀取的溫度值在預(yù)設(shè)范圍內(nèi)時,P3.5和P3.6 引腳保持高電平,無報警信號發(fā)出,程序繼續(xù)循環(huán)掃描讀取每個傳感器測得的溫度值進行判斷。
本文將溫度傳感器的初始化、讀字節(jié)、寫字節(jié)、啟動溫度轉(zhuǎn)換、液晶顯示器的初始化、寫命令、寫數(shù)據(jù)等過程分別建立子程序。主程序中在變量聲明,初始化液晶顯示器程序后,進入無線循環(huán)程序。無限循環(huán)程序中,單片機分別依次調(diào)用DS18B20 初始化、讀取各個傳感器溫度、判斷溫度、溫度報警、顯示溫度子程序。無限循環(huán)確保了單片機能一直監(jiān)測溫度,無需人為再進行操作。如果單片機受到干擾死機或者程序跑飛,按下復(fù)位按鍵重新啟動即可。定時器中斷程序為揚聲器和LED提供了1秒的閃爍周期,放在主程序之后。
本文設(shè)計的溫度監(jiān)測報警系統(tǒng)可以應(yīng)用于室內(nèi)房間、保溫箱、農(nóng)業(yè)大棚等多種場所,能夠有效地幫助人們同時監(jiān)測多個區(qū)域的溫度。如果加以驅(qū)動,同一總線最多可以支持掛接256 個DS18B20 溫度傳感器,在本文的基礎(chǔ)上,可以擴展同時監(jiān)測更多的目標區(qū)域溫度,擴大溫度監(jiān)測的范圍。若加繼電器以驅(qū)動升溫或降溫電路,可以控制將環(huán)境溫度保持在一個區(qū)間內(nèi),構(gòu)成恒溫控制系統(tǒng)[8]。本設(shè)計能夠滿足溫度監(jiān)測精度不小于±0.5℃的監(jiān)控場所需求,具有成本低,可靠性強,易擴展的特點。