基于單總線數(shù)字溫度傳感器DS18B20的測溫系統(tǒng)設(shè)計
摘要:設(shè)計了一種基于單總線數(shù)字溫度傳感器DS18B20的測溫系統(tǒng),給出了DS18B20傳感器特性和控制命令及時序,在Proteus環(huán)境下進行了測溫系統(tǒng)硬件設(shè)計,同時采用。Keil軟件完成了系統(tǒng)主程序、DS18B20驅(qū)動程序的設(shè)計;最后進行了系統(tǒng)Proteus仿真,提高了系統(tǒng)開發(fā)效率,并獲得了良好的仿真實驗結(jié)果。
關(guān)鍵詞:溫度傳感器;DS18B20;控制命令;驅(qū)動程序;Proteus仿真
0 引言
溫度是基本物理量之一,是工農(nóng)業(yè)生產(chǎn)和日常生活中經(jīng)常需要測試的重要參數(shù),溫度測量亦是應(yīng)用頻率最高的技術(shù)之一,在糧食倉庫存儲、環(huán)境監(jiān)測、過程溫度監(jiān)測、中央空調(diào)監(jiān)測、醫(yī)學(xué)體溫檢測等領(lǐng)域有著廣泛應(yīng)用。傳統(tǒng)的溫度檢測方式一般采用熱電偶或熱敏電阻,輸出模擬信號,經(jīng)A/D轉(zhuǎn)換后才能送入單片機處理器,檢測電路復(fù)雜。
因此,本文采用單總線智能型數(shù)字溫度傳感器DS18B20,以AT89C51單片機為核心處理器,進行測溫系統(tǒng)設(shè)計,在Proteus環(huán)境中進行系統(tǒng)硬件設(shè)計,并結(jié)合軟件進行了仿真,降低了開發(fā)成本,提高了開發(fā)效率。
1 DS18B20傳感器特性與控制時序
DS18B20是美國DALLAS半導(dǎo)體公司的單總線智能型數(shù)字溫度傳感器,它通過單總線與處理器進行數(shù)據(jù)傳輸,主要由64位ROM、溫度敏感元件、非易失性溫度告警觸發(fā)器TH和TL、配置寄存器組成。供電范圍為3.0~5.5 V;測溫范圍為-55~125℃,可根據(jù)系統(tǒng)需求通過設(shè)置配置寄存器中的R1,R0位調(diào)整為9~12位分辨率,對應(yīng)的可分辨溫度和最大轉(zhuǎn)換時間如表1所示;每個DS18B20器件有惟一的序列號,多個DS18B20器件可接至同一個單總線上構(gòu)成多點分布式溫度測量系統(tǒng);具有極強的抗干擾糾錯能力。
DS18B20的TO-92封裝如圖1所示,針腳1為電源地線,針腳2為數(shù)據(jù)輸入/輸出線,針腳3為可選電源線。
DS18B20的單總線訪問協(xié)議由如下4個步驟構(gòu)成。
(1)主機對DS18B20進行復(fù)位初始化,初始化時序如圖2(a)所示,主機在t1時刻在單總線上發(fā)出一持續(xù)480~960μs的低電平脈沖的復(fù)位脈沖,在t2時刻釋放單總線至少等待480μs確保應(yīng)答正確,并接收采樣,DS18B20等待15~60 μs,在t3時刻發(fā)出60~240μs的低電平存在脈沖,如圖中加粗虛線所示;
(2)主機向DS18B20寫ROM操作指令,一旦檢測到總線上有從屬期間存在,主機便可發(fā)送ROM操作命令,主要包含讀ROM[33h]、匹配ROM[55h]、跳過ROM、搜索ROM、告警搜索命令;
(3)主機向DS18B20寫RAM操作指令以啟動溫度轉(zhuǎn)換(44h)、讀暫存器(BEh)、寫暫存器(4Eh)、復(fù)制暫存器(43h)、重新調(diào)出E2(B8h)、獲取供電方式(B4h);
(4)主機與DS18B20進行數(shù)據(jù)傳送。
寫ROM命令、RAM命令和收發(fā)數(shù)據(jù)都通過單總線傳輸,單總線通過時間片來讀寫數(shù)據(jù),每個時間片傳送1位數(shù)據(jù),分寫時間片和讀時間片。兩種時間片都必須持續(xù)最短60μs,兩個時間片之間必須插入至少1μs的恢復(fù)時間,讀/寫時序如圖2(b),(c)所示。讀操作通過讀時間片控制完成,分讀“0”和讀“1”時間片;寫操作通過寫時間片控制完成,分寫“0”和寫“1”時間片。
溫度變換結(jié)束后,主機向DS18B20發(fā)送讀溫度命令(BEh),DS18B20以16位、符號擴展的二進制補碼形式發(fā)送到數(shù)據(jù)總線,低位在前,高位在后。
2 測溫系統(tǒng)硬件設(shè)計
系統(tǒng)硬件主要由單片機最小系統(tǒng)、DS18B20傳感器溫度采集電路、數(shù)碼管顯示驅(qū)動電路、LED報警電路組成,DS18B20采用外部電源供電方式,抗干擾性強,系統(tǒng)硬件電路如圖3所示。
3 測溫系統(tǒng)軟件設(shè)計
系統(tǒng)軟件分兩層設(shè)計,上層是應(yīng)用層,負責(zé)系統(tǒng)初始化、溫度符號、百位、十位、個位、十分位數(shù)據(jù)提取,溫度異常報警等;底層負責(zé)DS18B20初始化、讀寫驅(qū)動和數(shù)據(jù)顯示驅(qū)動,DS18B20與處理器采用串行數(shù)據(jù)傳輸,在對其進行初始化、讀寫編程時,必須嚴格保證讀寫時序,否則將出現(xiàn)錯誤。
3.1 系統(tǒng)應(yīng)用層主程序設(shè)計
系統(tǒng)主程序主要完成系統(tǒng)初始化,調(diào)用讀取DS18B20溫度轉(zhuǎn)換值函數(shù),溫度符號、百位、十位、個位、十分位數(shù)據(jù)的提取,溫度數(shù)據(jù)顯示,溫度異常報警等工作,系統(tǒng)主程序流程如圖4所示,當(dāng)檢測到的溫度高于最大閾值或低于最小閾值時,分別采用紅燈、黃燈報警,溫度正常時綠燈點亮。
3.2 DS18B20驅(qū)動層程序設(shè)計
DS18B20溫度轉(zhuǎn)換值采用12位分辨率,總線控制器接收到16位數(shù)據(jù)后保存在2個字節(jié)的存儲單元,高字節(jié)保存的值左移8位與低字節(jié)相加,便得DS18B20溫度轉(zhuǎn)換結(jié)果,讀取溫度轉(zhuǎn)換值函數(shù)如下:
4 系統(tǒng)調(diào)試與運行結(jié)果
在單片機開發(fā)環(huán)境Keil軟件中,選擇AT89C51單片機新建項目,采用C語言編寫系統(tǒng)程序,編譯生成目標代碼HEX文件,并導(dǎo)入到Proteus ISIS硬件電路圖中單片機的Edit Component設(shè)置的Program File屬性中進行仿真運行,系統(tǒng)仿真實驗結(jié)果如圖5所示,數(shù)碼管左數(shù)第一位的“1”表示零上,第七位的“C”表示溫度單位攝氏度。
5 結(jié)語
以AT89C51單片機為核心處理器,在Proteus環(huán)境下完成了基于單總線數(shù)字溫度傳感器DS18B20的測溫系統(tǒng)的設(shè)計,并進行了仿真。首先給出了DS18B20傳感器特性和控制命令及時序,設(shè)計了DS18B20的檢測電路,同時采用Keil軟件完成了系統(tǒng)主程序、DS18B20驅(qū)動程序的設(shè)計;最后進行了系統(tǒng)Proteus仿真,降低了設(shè)計成本,提高了開發(fā)效率,并獲得了良好仿真實驗結(jié)果。