《電子技術應用》
您所在的位置:首頁 > 測試測量 > 設計應用 > 一種基于DS18B20的溫度采集新方案
一種基于DS18B20的溫度采集新方案
現(xiàn)代電子技術
秦 芹 河北工業(yè)大學
摘要: 目前DS18B20數(shù)據(jù)的采集方法,存在不能自動更新DS18B20序列號和定位DS18B20的不足,因此不能及時進行 DS18B20的更換。本課題利用單片機I/O端口號和DS18B20的溫度報警觸發(fā)器(TH和TL),作為在外部存儲器中的存儲地址和DS18B20的物理地址,實現(xiàn)了DS18B20和ROM序列號的自動更新,和溫度數(shù)據(jù)的準確定位。并給出了軟、硬件設計。
Abstract:
Key words :

 

摘要:目前DS18B20數(shù)據(jù)的采集方法,存在不能自動更新DS18B20序列號和定位DS18B20的不足,因此不能及時進行 DS18B20的更換。本課題利用單片機I/O端口號" title="端口號">端口號和DS18B20的溫度報警觸發(fā)器(TH和TL),作為在外部存儲器中的存儲地址和DS18B20的物理地址,實現(xiàn)了DS18B20和ROM序列號的自動更新,和溫度數(shù)據(jù)的準確定位。并給出了軟、硬件設計" title="硬件設計">硬件設計。

 

關鍵詞:DS18B20 AVR單片機;單總線


 

0 引言

 

    溫度監(jiān)控系統(tǒng)在工業(yè)、農(nóng)業(yè)和醫(yī)療領域擁有很大的應用價值和前景。隨著計算機技術、測量技術和無線通信技術的發(fā)展,傳統(tǒng)的人工監(jiān)控由于存在很多缺點,正在逐漸被電子監(jiān)控所代替?,F(xiàn)有的一根I/O線上連接多個DS18B20的數(shù)據(jù)采集方法,在DS18B20接入系統(tǒng)之前,需要采用人工方式將DS18B20的64位ROM序列號逐一讀出,并在單片機程序中或外部存儲器中進行存儲。這種方法給DS18B20物理位置的確定帶來了困難,特別是當更換出現(xiàn)故障的DS18B20時,這個問題變得尤為突出。

 

    因此,本課題通過采用軟件編程與硬件設計相結合的方式,解決了在AVR單片機與DS18B20結合的測溫系統(tǒng)中數(shù)字傳感器" title="數(shù)字傳感器">數(shù)字傳感器的更換問題。在本課題提出的解決方案中,數(shù)據(jù)采集模塊采用低功耗AVR單片機-Atmega16、單總線" title="單總線">單總線數(shù)字溫度傳感器DS18B20以及外部存儲器-低能耗串行EEP-ROM。系統(tǒng)根據(jù)DS18B20數(shù)量的多少,可以選擇基于MAX485的有線組網(wǎng),也可以選擇基于nRF905或ZigBee的分布式無線組網(wǎng)。


 

1 DS18B20簡介

 

1.1 概述

 

    DS18B20是由美國DALLAS(達拉斯)公司生產(chǎn)的高性能單線數(shù)字式溫度傳感器。該傳感器提供9到12位溫度讀數(shù);可實現(xiàn)-55℃到+125℃范圍內(nèi)的溫度測量,增量值為0.5℃?,F(xiàn)場測量的溫度值通過單總線接口傳給微處理器,多個DS18B20可以存在于同一條單線總線上。因此,在實際應用中可以在多個不同的地方放置DS18B20,并將這些傳感器接在同一條單線總線上,由一個單片機進行控制。對DS18B20數(shù)字傳感器供電有兩種方式:一是寄生電源供電" title="電源供電">電源供電;二是外部電源供電。每個DS18B20在出廠時都有一個唯一的64位編號,存放在內(nèi)部ROM中。

 

1.2 引腳說明

 

    DS18B20只有三個引腳:一個是GDN(電源地);一個是VDD(當采用寄生電源供電時,VDD接地;若采用外部電源供電時,VDD接工作電源  );還有一個引腳是DQ(數(shù)據(jù)輸入/輸出引腳)。

 

1.3 硬件電路

 

1.3.1 寄生電源供電電路

 

a.JPG


 

1.3.2 外部電源供電電路


 

b.JPG

 

    采用寄生電源供電時,VDD引腳必須接地,由I/O引腳為DS18B20提供電源電流。采用外部電源供電時,VDD接外部電源,為DS18B20提供電源電流。寄生電源有雙重優(yōu)點:a.利用此引腳,遠程溫度檢測無需本地電源;b.缺少正常電源條件下也可以讀ROM。但是這種供電方式無法保證在數(shù)據(jù)轉換期間的供電,從而DS18B20無法進行精確地溫度轉換。當多個DS18B20掛在同一根I/O線上并同時進行溫度轉換時,這個問題變得更加明顯。所以本課題采用外部電源供電方式,以達到提高溫度轉換精確度的目的。

 

1.4 內(nèi)部結構

 

    DS18B20內(nèi)部主要包括:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器TH和TL、配置寄存器。如圖3所示:

 

c.JPG


 

1.4.1 64位光刻ROM

 

    用于存儲64位序列號。該序列號是DS18B20的唯一編號,在出廠前被光刻在64位ROM中。DS18B20在與單片機通信時,用此序列號以區(qū)別其它傳感器。64位序列號可以看作是DS18B20的地址序列碼。

 

    64位光刻ROM的位排列是:低8位是產(chǎn)品類型標號;接著的48位是該DS18B20的自身序列號;最后高8位是低56位的循環(huán)冗余校驗碼,該8位又被單獨提出,稱為CRC發(fā)生器,主要是實現(xiàn)串行通信中的數(shù)據(jù)校驗,判斷接收的數(shù)據(jù)是否正確。64為序列號的作用,是使每一個DS18B20都各不相同,這樣就可以實現(xiàn)一根總線上掛接多個DS18B20。

 

1.4.2 非易失性溫度報警觸發(fā)器

 

    DS18B20的溫度報警觸發(fā)器TH和TL各由一個非易失性EEPROM字節(jié)構成,如果沒有對DS18B20使用報警搜索指令,可以作為一般的EEPROM存儲器使用。利用每個DS18B20唯一的序列號可讀取同一根I/O線上的多個DS18B20的溫度數(shù)據(jù),利用I/O端口號和已經(jīng)寫入層數(shù)信息的DS18B20的溫度報警觸發(fā)器(TH和TL),可將每個DS18B20的溫度數(shù)據(jù)和其物理位置對應起來。因此在DS18B20安裝之前,就需將DS18B20所在層的信息寫入到溫度報警觸發(fā)器(TH和TL)中。

 

 

 

2 DS18B20與AVR單片機的連接

 

    在本課題中DS18B20采用寄生電源供電,單片機選用AVR單片機-Atmega16。之所以選擇AVR單片機,是因為其具有51單片機無法提供的優(yōu)點:a.讀寫速度快,AVR單片機采用了大型快速存取寄存器文件和快速單周期指令。其快速存取RISC寄存器文件由32個通用工作寄存器組成。AVR用32個通用寄存器代替累加器,避免了傳統(tǒng)的累加器與存儲器之間的數(shù)據(jù)傳送,可在一個時鐘周期內(nèi)執(zhí)行一條指令來訪問兩個獨立的寄存器,代碼效率比常規(guī)CISC微控制器快十倍。高效的讀寫速度,更適合于對及時性要求高的場合。b.性價比高。c.工作電壓范圍寬(2.7~6V)、抗干擾能力強,這樣更適合在各種條件下處理測量溫度值。總之,AVR單片機在一個芯片內(nèi)將增強性能的RISC 8位CPU與可下載的FLA-SH相結合使其成為適合于許多要求、具有高度靈活性和低成本的嵌入式高效微控制器。

 

    圖4給出了DS18B20采用外部電源供電方式時,與Atmega16單片機的硬件連接圖。


 

d.JPG


 

3 DS18B20更新問題的解決方案

 

    本課題在深入研究了數(shù)字傳感器工作機理的基礎上,通過硬件設計和軟件編程,提出了解決數(shù)字傳感器更換的方案,并應用在了通過無線傳感器網(wǎng)絡遠程控制傳感器的設計中,而且在硬件平臺上實現(xiàn)了仿真。圖5是通過Proteus 7單片機軟件仿真系統(tǒng)設計的,單片機控制DS18-B20并顯示測試結果的電路圖。

 

e.JPG


 

3.1 硬件設計

 

    單片機通過I/O口控制DS18B20,每個I/O口外接60個DS18B20,同時單片機通過SPI串行接口外接外部存儲器EEPROM,如圖6所示。

 

f.JPG


 

    本課題中,外部存儲器EEPROM選用意法半導體(ST)生產(chǎn)的M95128;選用Atmega16單片機。DS18B20采用外部電源供電方式,所以VCC接外部電源,GDN接地。

 

    M95128芯片采用MLP8微型封裝技術,因此,可以大大節(jié)省產(chǎn)品的空間和成本;待機功耗低于3μA,也是該芯片的一大特點;四線的SPI接口支持最高 2 Mbit/s的通信速率,除提供標準的硬件寫保護功能外,還支持軟件寫保護。外部存儲器EEPROM用來存放單片機控制的所有DS1-8B20的序列號,和對應的邏輯地址。一個DS18B20的序列號占八個字節(jié),所以一路數(shù)據(jù)線上所接DS18B20溫度傳感器的個數(shù)與外部存儲器EEPR-OM的存儲空間有關。M95128芯片的容量達128kbit,可以存儲13107個DS18B20的序列號和對應的邏輯地址,足以滿足本課題的需要。

 

   單片機Atmega16的PB5(MOSI)口接EEPROM的DI(數(shù)據(jù)輸入)口,PB6(MISO)口接DO(數(shù)據(jù)輸出)口,PB7(SCK) 口接SK(讀寫時鐘信號輸入引腳)。單片機讀到每個DS18B20的序列號后,通過PB5口將序列號和對應的邏輯地址寫入EEPROM中。需要某個邏輯地址對應的序列號時,EEPROM通過DO口將序列號傳入單片機中。

 

 

 

3.2 軟件設計

 

    本課題設計使單片機每次上電時,都重新讀取每根數(shù)據(jù)線上的每個DS18B20的序列號和溫度報警器中的內(nèi)容,I/O端口號+溫度報警觸發(fā)器中的層信息即為該DS18B20的邏輯地址。單片機將讀取到的各DS18B20的序列號與其對應的邏輯地址,通過MOSI引腳保存在外部存儲器EEP-ROM中。在控制模塊" title="控制模塊">控制模塊的固化程序中,只涉及傳感器的邏輯地址。當需要訪問某個傳感器時,單片機會根據(jù)固化程序中的邏輯地址在EEPROM中查找該邏輯地址對應的 DS18B20序列號,從而找到需要訪問的傳感器。在更換了某個DS18B20時,只需給單片機重新上電,微控制會更新EEPRO-M,而不需修改控制模塊中的固化程序。

 

    本課題中,使用ICCAVR編譯器作為軟件開發(fā)環(huán)境,編譯C語言程序代碼。向EEPROM中保存序列號的程序流程圖如圖7所示。

 

g.JPG


 

    根據(jù)控制模塊中涉及的邏輯地址,單片機在EEPROM中查找對應的DS18B20的序列號的程序流程如圖8所示。


 

4 結語

 

    無線測溫系統(tǒng)的應用前景非常廣闊。本課題提出的通過外接EEPROM存儲器,保存DS18B20的序列號和對應的邏輯地址的方案,解決了 DS-18B20的更新問題??梢詷O大地提高技術人員及工作人員的工作效率;同時,由于在通信鏈路中傳輸?shù)氖沁壿嫷刂?,所以減少了鏈路中的冗余信息,增加有效信息的傳輸,提高無線傳輸效率。因此,本課題設計的溫度采集系統(tǒng)具有運行速率快、性能穩(wěn)定、數(shù)字化程度高、便于維護等特點。此系統(tǒng)在各類數(shù)字通信、環(huán)境監(jiān)測、安防系統(tǒng)等多個領域具有廣泛的應用價值。并且已經(jīng)在CX-AT16硬件平臺上實現(xiàn)了仿真。


 

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權禁止轉載。