張樹尉,鄭雪梅
(黃岡職業(yè)技術(shù)學院,湖北 黃岡 438002)
?
基于單片機控制的糧倉多路溫度采集系統(tǒng)設(shè)計
張樹尉,鄭雪梅
(黃岡職業(yè)技術(shù)學院,湖北 黃岡 438002)
摘要:本設(shè)計由3個模塊組成:主控制器、溫度采集電路及顯示電路。所設(shè)計的多路溫度采集系統(tǒng),可實現(xiàn)多個糧倉的溫度監(jiān)視,測溫范圍為-20~70℃,精度誤差在0.1℃以內(nèi),LED數(shù)碼管直讀顯示。
關(guān)鍵詞:數(shù)字溫度計;AT89S51;DS18B20;單總線
溫度的測量不僅廣泛用于我們的日常生活之中,而且在工業(yè)加工生產(chǎn)、科研研究中起著至關(guān)重要的作用。一般對于溫度的測量采用由熱電偶式傳感器組成的測量電路,這種電路具有設(shè)計復(fù)雜、測量靈敏度較低、性價比低的缺點。本文設(shè)計一種多路溫度采集系統(tǒng),實現(xiàn)多個糧倉的溫度監(jiān)視,要求測溫范圍為-20~70℃,精度誤差在0.1℃以內(nèi),LED數(shù)碼管直讀顯示。依據(jù)測量指標的要求,采用DALLS公司的單總線數(shù)字式溫度傳感器DS1820作為溫度檢測傳感器,該傳感器測量范圍大,內(nèi)部集成了模數(shù)轉(zhuǎn)換器,最高分辨率高達12位。相對于熱電偶傳感器,該芯片采用單總線接口協(xié)議,實現(xiàn)數(shù)據(jù)的采集與傳輸,大大降低硬件設(shè)計的難易度,設(shè)計成本低廉,廣泛適用于測控領(lǐng)域。
1總體設(shè)計方案框圖
圖1 數(shù)字溫度計總體電路結(jié)構(gòu)框圖
根據(jù)設(shè)計的指標和要求,多個糧倉的溫度測量系統(tǒng)主要由以下幾個部分組成:
1.1控制器單元電路??刂破鞑捎肁T89S51單片機,負責與傳感器DS18B20通信,存儲不同糧倉的溫度數(shù)據(jù),同時將溫度數(shù)據(jù)發(fā)送到顯示電路。
1.2傳感器測量電路。每個糧倉安放DS18B20傳感器,負責對溫度的測量。
1.3溫度顯示電路。采用4位共陽LED數(shù)碼管顯示,以動態(tài)掃描法實現(xiàn)溫度顯示,將單片機發(fā)送的數(shù)據(jù)顯示在Led數(shù)碼管上。
數(shù)字溫度計總體電路結(jié)構(gòu)框圖如圖1所示。
2系統(tǒng)整體硬件電路
2.1主控制器
圖2 主控制器89S51
圖2為主控制器電路,由12M無源晶振組成的振蕩電路,開關(guān)S1與10uf電容組成的復(fù)位電路,用于重啟系統(tǒng),保證系統(tǒng)正常的運行。
XTAL1腳為片內(nèi)振蕩電路的輸入端,XTAL2腳為片內(nèi)振蕩電路的輸出端。89S51的時鐘有兩種方式,一種是片內(nèi)時鐘振蕩方式,但需在XTAL1和XTAL2腳外接石英晶體(頻率為1.2~12MHz)和振蕩電容,振蕩電容的值一般取10~30pF,典型值為30pF;另外一種是外部時鐘方式,即將XTAL1接地,外部時鐘信號從XTAL2腳輸入,如圖3所示。 此次設(shè)計采用了內(nèi)部時鐘方式。[2]
圖3 89S51的時鐘振蕩方式
2.2溫度采集電路
圖4 DS18B20溫度采集
溫度采集如圖4,圖中的U3、U4、U5是用于探測溫度并將溫度值轉(zhuǎn)換成數(shù)字信號的傳感器DS18B20, DS18B20采用1-Wire總線(單總線)協(xié)議,它在一根數(shù)據(jù)線完成控制字的寫入和測量溫度數(shù)據(jù)的讀出,是一種半雙工的雙向傳輸模式,多個DS18B20傳感器通過地址碼來區(qū)分。由于單片機AT89S51硬件上并不支持單總線協(xié)議,通過AT89S51來控制和訪問DS18B20時,需要通過編程模擬單總線的協(xié)議時序來實現(xiàn)對DS18B20的訪問。
對讀寫的數(shù)據(jù)位有著嚴格的時序要求,每一次命令和數(shù)據(jù)的傳輸都是由主機啟動的寫時序開始,此時從設(shè)備都處在偵聽狀態(tài),數(shù)據(jù)和命令的傳輸順序都是低位在先。在讀取DS18B20檢測到的溫度數(shù)據(jù)時,主機在發(fā)出寫命令后,再需啟動讀時序完成數(shù)據(jù)接收。
2.3顯示電路
圖5 顯示電路
顯示電路采用4位共陽LED數(shù)碼管,從P0口輸出段碼通過74HC244進行緩存,再同時送入到四個數(shù)碼管的a~h端,列掃描用P2.0~P2.3口來實現(xiàn),列驅(qū)動用9012三極管。
2.4穩(wěn)壓電路
圖6 穩(wěn)壓電路
連接器CON3通過復(fù)讀機電源接入+12V電壓,通過7805穩(wěn)壓器將+12V電壓轉(zhuǎn)換成+5V電壓,作為溫度計設(shè)計電路的電源VCC。
2.5通信接口電路
圖7 通信接口電路
89S51的P1口的第二功能(ISP功能),為了能夠?qū)⒕幾g好的程序下載到單片機內(nèi),由于本系統(tǒng)采用AT89S51,采用ISP技術(shù),利用如表1中的P1口,來實現(xiàn)單片機與上位機(PC機)通信,實現(xiàn)程序的下載,P1是帶上拉電阻,兼有輸入和輸出功能的引腳。輸出時驅(qū)動電流可達10mA左右。
表1 單片機ISP功能引腳分配
此模塊做在另一塊板上,通過導(dǎo)線將圖中74LS373的MISO,MOSI,SCK分別接到89S51的MISO,MOSI,SCK端口上即可。
3系統(tǒng)軟件程序
由圖8、圖9可知,系統(tǒng)軟件設(shè)計組要由溫度顯示刷新模塊、溫度傳感器DS18B20的初始化、溫度數(shù)據(jù)的讀取、實際溫度的計算等組成。
3.1主程序
圖8為系統(tǒng)設(shè)計主程序,一開始完成對設(shè)備的初始化,接著開啟定時器記錄刷新時間,每隔一秒完成對數(shù)據(jù)的讀取與刷新,然后實現(xiàn)對溫度的顯示。
圖8 主程序流程圖
圖9 讀出溫度子程序流程圖
3.2讀出溫度子程序
讀出溫度子程序流程如圖9所示,在對DS18B20進行復(fù)位后,AT89S51向所有DS18B20發(fā)匹配ROM命令(即區(qū)分安裝在各個位置的DS18B20的地址碼),各個DS18B20收到此地址碼后立即進行判斷是否在訪問自己,如果地址匹配,則該DS18B20發(fā)出應(yīng)答信號,AT89S51緊接著發(fā)出讀取命令,地址匹配的DS18B20收到此命令后便將采集到的溫度數(shù)據(jù)進行CRC編碼(在溫度數(shù)據(jù)后附加8位的CRC校驗碼)并存放到一個9字節(jié)的RAM中,AT89S51讀取DS18B20中9字節(jié)RAM中的數(shù)據(jù)并進行CRC校驗,CRC正確時改寫當前的溫度值,校驗有錯時不進行溫度數(shù)據(jù)的改寫。
3.3計算溫度子程序
計算溫度子程序流程圖如圖10所示,從DS18B20中RAM中讀取的是二進制代碼代表的溫度值,我們?nèi)粘I钪械臏囟榷紴槭M制顯示,結(jié)合DS18B20輸出的二進制數(shù)據(jù)的格式,通過溫度轉(zhuǎn)換子程序,實現(xiàn)二進制數(shù)據(jù)與十進制攝氏溫度的轉(zhuǎn)換,這樣才能輸出我們要求的溫度格式。
3.4溫度顯示更新程序
溫度每時每刻都在發(fā)生著輕微的變化,為了能夠?qū)崟r顯示正確的溫度,就要定時刷新數(shù)據(jù),如圖11所示,該程序?qū)崿F(xiàn)了對溫度數(shù)據(jù)的更新功能,對單片機存儲的溫度數(shù)據(jù)進行處理,進行溫度的正負判斷,以及位數(shù)處理。
圖10 計算溫度子程序流程圖
圖11 顯示數(shù)據(jù)刷新子程序流程圖
3.5溫度數(shù)據(jù)的計算處理方法
DS18B20的轉(zhuǎn)換精度可在9~12位之間選擇,分辨率分別為0.5℃、 0.25 ℃、 0.125℃ 、0.0625℃,轉(zhuǎn)換精度越高所需的A/D時間也越長,9字節(jié)RAM中前兩個字節(jié)是轉(zhuǎn)換好的溫度,在對于12位轉(zhuǎn)換精度,除了最高的4位表示正負符號外,根據(jù)溫度傳感器低的12位二進制數(shù)字,轉(zhuǎn)換成十進制數(shù)據(jù),將該數(shù)據(jù)乘以12精度的靈敏度0.0625,所得到的十進制數(shù)據(jù)則為單位為攝氏度的溫度值。
溫度顯示數(shù)據(jù)的小數(shù)位是由9字節(jié)RAM中低字節(jié)的低半字節(jié)組成的,由于12位轉(zhuǎn)換精度的分辨率是0.0625℃,介于0.1℃~0.01℃之間,由于是用半個字節(jié)(0~F)表小數(shù)部分,直接通過乘以0.0625轉(zhuǎn)換成的十進制小數(shù)值需要占用4位小數(shù),實際應(yīng)用中通常精確到0.1℃,用1位LED顯示小數(shù),這就需要將15種二進制碼對應(yīng)成10種十進制數(shù),表2列出了一種二進制和十進制的近似對應(yīng)關(guān)系表[2]。
表2 小數(shù)部分二進制和十進制的近似對應(yīng)關(guān)系表
4調(diào)試及性能分析
系統(tǒng)的調(diào)試包括硬件電路調(diào)試和軟件調(diào)試,由于硬件電路并不復(fù)雜,而且全部都是數(shù)字電路,只要焊接良好,沒有短路和斷路情況出現(xiàn)電路即可正常工作。由于采用了模塊化的設(shè)計方法,軟件調(diào)試可以先進行各功能子程序的單獨調(diào)試通過,再逐步將各功能模塊往里添加進來,每添加一個功能模塊調(diào)試成功后再添加一個功能模塊,直到所有功能模塊能同時正常工作。由于DS18B20跟AT89S51之間采用串行數(shù)據(jù)通信,在編程時嚴格按照DS18B20芯片手冊上的時序,來實現(xiàn)對芯片數(shù)據(jù)的采集,不然將得到的錯誤的數(shù)據(jù)。
性能測試是用精度為0.01℃溫度計和本溫度測試系統(tǒng)各自測量值的比較來完成的,通過實測對比,在-20~50℃的溫度范圍內(nèi),二者的最大絕對誤差都在±0.05℃以內(nèi),完全適合一般的應(yīng)用場合,可用三節(jié)干電池供電做成手持電子溫度計。
參考文獻:
[1]張俊謨.單片機中級教程. 北京:北京航空航天大學出版社,1999:11-100.
[2]李光飛,樓然苗,胡佳文等.單片機課程設(shè)計實例指導(dǎo). 北京:北京航空航天大學出版社,2004:105-125.
[3]夏路易,石宗義. 電路原理圖與電路板設(shè)計教程Protel 99SE. 北京: 北京希望電子出版社社,2002:1-203.
[4]李軍. 51系列單片機高級實例開發(fā)指南. 北京:北京航空航天大學出版社, 2004:10-50.
中圖分類號:TP368
文獻標志碼:A
文章編號:1671-1602(2016)08-0035-03
作者簡介:張樹尉(1995.09-),男,湖北黃岡市人。
鄭雪梅(1995.11-),女,湖北黃岡市人,黃岡職業(yè)技術(shù)學院2014級物聯(lián)網(wǎng)應(yīng)用技術(shù)專業(yè)在校學生。