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