關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > 1-Wire溫度傳感器的快速編程

1-Wire溫度傳感器的快速編程

作者: 時(shí)間:2010-06-26 來(lái)源:網(wǎng)絡(luò) 收藏
引 言

一般來(lái)說(shuō),總線數(shù)越少,連接就越簡(jiǎn)單,因而串行總線嵌入式元件在許多應(yīng)用場(chǎng)合頗受歡迎。但正因?yàn)橹挥?根線,該類元件的要緊扣硬件和時(shí)鐘,難度大于I2C總線和SPI總線。本文以數(shù)字DSl8B20為例,介紹一種實(shí)用和簡(jiǎn)單的方案。

1 DS18B20的精簡(jiǎn)考慮

測(cè)溫分辨率:通過(guò)設(shè)置配置寄存器,DS18B20有0.5℃、0.25℃、0.125℃和0.062 5℃幾種可供選擇。如果不作選擇,缺省值為12位,即最高分辨率0.062 5℃,這樣可省去相關(guān)寫EEPROM的命令。圖1為格式。



溫度報(bào)警高限TH和低限TL:如果設(shè)置了TH和TL,DS18B20將在溫度高于TH或低于TL時(shí)做出響應(yīng)。這要用到寫入EEPROM的命令,將可改寫RAM(Scratchpad RAM)拷入EEPROM。其實(shí),在很多應(yīng)用場(chǎng)合,這樣的報(bào)警設(shè)置完全可以在MASTER(如單片機(jī))中完成,從而節(jié)省DS18B20的編程。這只要不使用報(bào)警搜索命令(Alarm search command)即可。

光刻ROM(lasered ROM)命令:一共有6個(gè)。對(duì)于只要單個(gè)DS18B20的場(chǎng)合,如果不考慮讀ROM中的序列號(hào)代碼,不允許報(bào)警等功能,只要進(jìn)行測(cè)溫的話,用一個(gè)跳過(guò)ROM(Skip ROM)命令就足夠了。

RAM有關(guān)的命令:一共有6個(gè)。如果在DS18B20的電源端專配電源,不設(shè)置高低溫報(bào)警,只需使用“ConvertT”和“Read Scratch”命令即可。前者開(kāi)始進(jìn)行溫度轉(zhuǎn)換(時(shí)間約需750 ms),后者將溫度值及循環(huán)冗余校驗(yàn)碼CRC等9字節(jié)讀入MASTER(如單片機(jī))。

關(guān)鍵時(shí)序:盡管測(cè)量時(shí)可以作上述簡(jiǎn)化,但DS18B20的時(shí)序必須嚴(yán)格遵循。最苛刻的時(shí)間要求應(yīng)是讀時(shí)槽(read time slots):MASTER在數(shù)據(jù)線上發(fā)出一個(gè)下降沿表示讀時(shí)槽開(kāi)始,時(shí)間至少保持1μs,然后停止驅(qū)動(dòng)數(shù)據(jù)總線。DS18B20在數(shù)據(jù)線上輸出約15 μs的數(shù)據(jù)。在這一時(shí)間段內(nèi),MASTER必須及時(shí)采樣數(shù)據(jù)線。這樣的定時(shí)要求與之相連的單片機(jī)必須工作在較高的頻率,如主頻為32 kHz就無(wú)法滿足15μs內(nèi)完成采樣的要求。

2 一個(gè)簡(jiǎn)單實(shí)用的程序設(shè)計(jì)方案

采用上述精簡(jiǎn)方案后,基于單片機(jī)PIC16F628A(主頻為4 MHz)實(shí)現(xiàn)的測(cè)溫程序如下:



到此開(kāi)始讀9個(gè)字節(jié)scratchpad,并檢查CRC。如無(wú)誤,再次調(diào)用rp子程序復(fù)位DS18B20,結(jié)束本次測(cè)量;如出錯(cuò),轉(zhuǎn)出錯(cuò)處理子程序。為使系統(tǒng)具有一定的容錯(cuò)能力,出錯(cuò)時(shí)也可將上述程序再試一遍,如連續(xù)3次都出現(xiàn)CRC檢查錯(cuò)則轉(zhuǎn)出錯(cuò)處理子程序。

以上方案已長(zhǎng)期(數(shù)月)用于氣象溫度測(cè)量,正??煽?。


關(guān)鍵詞: 編程 快速 傳感器 溫度 1-Wire

評(píng)論


相關(guān)推薦

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

關(guān)閉