• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > 單線數(shù)字溫度傳感器的原理與應(yīng)用

    單線數(shù)字溫度傳感器的原理與應(yīng)用

    作者: 時(shí)間:2006-05-07 來源:網(wǎng)絡(luò) 收藏

    摘 要:介紹單線數(shù)字溫度傳感器DS1820的特性及工作原理,給出了DS1820與89C51單片機(jī)接口的應(yīng)用實(shí)例,以及由DS1820組成溫度檢測(cè)系統(tǒng)的方法,并給出了對(duì)DS1820進(jìn)行各種操作的軟件流程圖。

    本文引用地址:http://www.czjhyjcfj.com/article/255640.htm

    關(guān)鍵詞: 單線制(1-Wire) 時(shí)隙 A/D變換

    美國(guó)DALLAS公司生產(chǎn)的單線數(shù)字溫度傳感器DS182,可把溫度信號(hào)直接轉(zhuǎn)換成串行數(shù)字信號(hào)供微機(jī)處理。由于每片DS1820含有唯一的硅串行數(shù)所以在一條總線上可掛接任意多個(gè)DS1820芯片。從DS1820讀出的信息或?qū)懭隓S1820的信息,僅需要一根口線(單線接口)。讀寫及溫度變換功率來源于數(shù)據(jù)總線,總線本身也可以向所掛接的DS1820供電,而無需額外電源。DS1820提供九位溫度讀數(shù),構(gòu)成多點(diǎn)溫度檢測(cè)系統(tǒng)而無需任何外圍硬件。

    本文給出了DS1820與89C51單片機(jī)接口的應(yīng)用實(shí)例和DS1820組成溫度檢測(cè)系統(tǒng)的方法,并給出了對(duì)DS1820進(jìn)行各種操作的軟件流程圖。

    1 DS1820的特性

    ·單線接口:僅需一根口線與MCU連接

    ·無需外圍元件

    ·由總線提供電源

    ·測(cè)溫范圍為-55℃~75℃,精度為0.5℃

    ·九位溫度讀數(shù)

    ·A/D變換時(shí)間為200ms

    ·用戶自設(shè)定溫度報(bào)警上下限,其值是非易失性的

    ·報(bào)警搜索命令可識(shí)別哪片DS1820超溫度限

    2 DS1820引腳及功能

    DS1820的引腳見圖1(PR35封裝)。

    GND:地;

    DQ:數(shù)據(jù)輸入/輸出腳(單線接口,可作寄生供電);

    VDD:電源電壓。

    3 DS1820的工作原理

    DS1820的內(nèi)部結(jié)構(gòu)如圖2所示。由圖2可知,DS1820由三個(gè)主要數(shù)字器件組成:

    ① 64bit閃速ROM;②溫度傳感器;③非易失性溫度報(bào)警觸發(fā)器TH和TL。64bit閃速ROM的結(jié)構(gòu)如下:

    單線數(shù)字溫度傳感器的原理與應(yīng)用

    對(duì)DS1820的使用,多采用單片機(jī)實(shí)現(xiàn)數(shù)據(jù)采集。處理時(shí),將DS1820信號(hào)線與單片機(jī)一位口線相連,單片機(jī)可掛接多片DS1820,從而實(shí)現(xiàn)多點(diǎn)溫度檢測(cè)系統(tǒng)。

    系統(tǒng)對(duì)DS1820的操作以ROM命令和存儲(chǔ)器命令形式出現(xiàn)。

    3.1 ROM命令代碼及其含義

    ·READROM命令代碼[33H]:如果只有一片DS1820,可用此命令讀出其序列號(hào),若在線DS1820多于一個(gè),將發(fā)生沖突。

    ·MATCHROM命令代碼[55H]:多個(gè)DS1820在線時(shí),可用此命令匹配一個(gè)給定序列號(hào)的DS1820,此后的命令就針對(duì)該DS1820。

    ·SKIPROM命令代碼[CCH]:此命令執(zhí)行后的存儲(chǔ)器操作將針對(duì)在線的所有DS1820。

    ·SEARCHRDH命令代碼[F0H]:用以讀出在線的DS1820的序列號(hào)。

    ·ALARMSEARCH命令代碼[ECH]:當(dāng)溫度值高于TH或低于TL中的數(shù)值時(shí),此命令可以讀出報(bào)警的DS1820。

    3.2 存儲(chǔ)器操作命令代碼及其含義

    · WRITESCRATCHPAD命令代碼[4EH]:寫兩個(gè)字節(jié)的數(shù)據(jù)到溫度寄存器。

    · READSCRATCHPAD命令代碼[BEH]:讀取溫度寄存器的溫度值。

    ·COPYSCRATCHPAD命令代碼[48H]:將溫度寄存器的數(shù)值拷貝到EERAM中,保證溫度值不丟失。

    ·CONVERT命令代碼[44H]:?jiǎn)?dòng)在線DS1280做溫度A/D轉(zhuǎn)換。

    ·RECALL EE命令代碼[B8H]:將EERAM中的數(shù)值拷貝到溫度寄存器中。

    ·READPOWERSUPPLY命令代碼[B4H]:在本命令送到DS1280之后的每一個(gè)讀數(shù)據(jù)間隙,指出電源模式:“0”為寄生電源;“1”為外部電源。

    DS1820單線通信功能是分時(shí)完成的,它有嚴(yán)格的時(shí)隙概念。因此系統(tǒng)對(duì)DS1820的各種操作必須按協(xié)議進(jìn)行。操作協(xié)議為:初始化DS1820(發(fā)復(fù)位脈沖)→發(fā)ROM功能命令→發(fā)存儲(chǔ)器操作命令→處理數(shù)據(jù)。各種操作的時(shí)序圖如圖3和圖4所示。

    4 溫度檢測(cè)系統(tǒng)原理及程序流程圖

    溫度檢測(cè)系統(tǒng)原理圖如圖5所示,采用寄生電源供電方式。為保證在有效的DS1820時(shí)鐘周期內(nèi),提供足夠的電流,我們用一個(gè)MOSFET管和89C51的一個(gè)I/O口(P1.0)來完成對(duì)DS1820總線的上拉。當(dāng)DS1820處于寫存儲(chǔ)器操作和溫度A/D變換操作時(shí),總線上必須有強(qiáng)的上拉,上拉開啟時(shí)間最大為10μs。采用寄生電源供電方式時(shí)VDD必須接地。由于單線制只有一根線,因此發(fā)送接收口必須是三態(tài)的,為了操作方便我們用89C51的P1.1口作發(fā)送口Tx,P1.2口作接收口Rx。通過試驗(yàn)我們發(fā)現(xiàn)此種方法可掛接DS1820數(shù)十片,距離可達(dá)到50米,而用一個(gè)口時(shí)僅能掛接10片DS1820,距離僅為20米。同時(shí)由于讀寫在操作上是分開的故不存在信號(hào)競(jìng)爭(zhēng)問題。

    無論是單點(diǎn)還是多點(diǎn)溫度檢測(cè),在系統(tǒng)安裝及工作之前,應(yīng)將主機(jī)逐個(gè)與DS1820掛接,讀出其序列號(hào)。其工作過程為:主機(jī)Tx發(fā)一個(gè)脈沖,待“0”電平大于480μs后,復(fù)位DS1820,待DS1820所發(fā)響應(yīng)脈沖由主機(jī)Rx接收后,主機(jī)Tx再發(fā)讀ROM命令代碼33H(低位在前),然后發(fā)一個(gè)脈沖(15μs)并接著讀取DS1820序列號(hào)的一位。用同樣方法讀取序列號(hào)的56位。對(duì)于圖5系統(tǒng)的DS1820操作的總體流程圖如圖6所示。它分三步完成:①系統(tǒng)通過反復(fù)操作,搜索DS1820序列號(hào);②啟動(dòng)所有在線DS1820做溫度A/D變換;③逐個(gè)讀出在線DS1820變換后的溫度數(shù)據(jù)。主機(jī)啟動(dòng)溫度變換并讀取溫度值的詳細(xì)流程圖如圖7所示;主機(jī)寫入存儲(chǔ)器數(shù)據(jù)詳細(xì)流程圖如8所示。當(dāng)有更多的檢測(cè)點(diǎn)需要測(cè)溫時(shí),可利用89C51的其它口進(jìn)行擴(kuò)展。同時(shí),也可利用89C51的串行通信口(RXD,TXD)與上位計(jì)算機(jī)進(jìn)行通信,從而構(gòu)成微機(jī)溫度測(cè)量系統(tǒng)網(wǎng)。

     

    linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


    評(píng)論


    相關(guān)推薦

    技術(shù)專區(qū)

    關(guān)閉
    主站蜘蛛池模板: 昌都县| 临沧市| 九台市| 昌邑市| 洛阳市| 怀仁县| 于都县| 宁国市| 民县| 金川县| 尼勒克县| 峨眉山市| 利津县| 华坪县| 定南县| 北宁市| 高青县| 肃南| 兴隆县| 武穴市| 贵南县| 新竹县| 太和县| 磐安县| 巴林右旗| 益阳市| 同江市| 宜春市| 霍林郭勒市| 文登市| 湖北省| 高平市| 连江县| 老河口市| 盖州市| 霞浦县| 安化县| 英山县| 门头沟区| 大新县| 定日县|