單線智能溫度傳感器DS18B20無需外部電路和其他變換電路就可以直接輸出被測(cè)溫度,測(cè)溫范圍寬、精度高、轉(zhuǎn)換時(shí)間快并可適配各種單片機(jī)或系統(tǒng)機(jī)等眾多優(yōu)點(diǎn),在各種領(lǐng)域已得到了廣泛的應(yīng)用。我公司采用DS18B20溫度傳感器制作四路溫度巡檢控制的溫控儀。在對(duì)溫控儀進(jìn)行各種環(huán)境適應(yīng)驗(yàn)證試驗(yàn)中發(fā)現(xiàn)一個(gè)問題:DS18B20傳感器采用10m長(zhǎng)連接線時(shí)工作不正常,而采用3m長(zhǎng)連接線時(shí)工作正常。DS18B20傳感器的連接線纜長(zhǎng)度一般可達(dá)到50~100m,當(dāng)采用雙絞線芯的屏蔽電纜時(shí),其最大長(zhǎng)度可達(dá)150m。圖1為溫控儀傳感器連接部分電路圖,傳感器采用單獨(dú)供電,接在P1口上。
后經(jīng)對(duì)DS18B20傳感器的讀寫子程序分析及對(duì)傳感器讀寫時(shí)序波形分析得出的結(jié)論,是因?yàn)樽x寫子程序?qū)S18B20傳感器的讀寫的時(shí)序把握不夠準(zhǔn)確造成的。下面就DS18B20傳感器的讀寫的時(shí)序把握度進(jìn)行分析,希望能對(duì)初步接觸該傳感器的人員有所幫助。
DSl8B20傳感器對(duì)讀寫時(shí)序的要求
首先對(duì)DS18B20傳感器的讀寫時(shí)序的要求進(jìn)行分析和了解。按D S 1 8 B 2 0 器件手冊(cè)介紹, 對(duì)DSl8B20寫數(shù)據(jù)時(shí),主機(jī)產(chǎn)生讀時(shí)間片。當(dāng)主機(jī)把I/O數(shù)據(jù)總線從邏輯高電平拉至邏輯低電平時(shí),低電平持續(xù)時(shí)間最少1μs,就產(chǎn)生寫時(shí)間片。在變?yōu)榈碗娖?5μs之后,DSl8B20在15~45μs之間對(duì)線采樣,如果線為高電平,寫1就發(fā)生,如果線為低電平,便發(fā)生寫0。時(shí)間片必須有最短為60μs的持續(xù)期,各寫周期之間必須有最短為1μs的恢復(fù)時(shí)間。圖2為DS18B20生產(chǎn)廠家提供的讀寫時(shí)序圖。
從DSl8B20讀數(shù)據(jù)時(shí),主機(jī)產(chǎn)生讀時(shí)間片。當(dāng)主機(jī)把數(shù)據(jù)線從邏輯高電平拉至低電平時(shí),產(chǎn)生讀時(shí)間片。低電平持續(xù)時(shí)間至少1μs;來自DS18B20 的輸出數(shù)據(jù)在讀時(shí)間片下降沿之后15μs有效,因此,在產(chǎn)生讀時(shí)間片15μs后主機(jī)必須停止把I/O線驅(qū)動(dòng)至低電平,由上拉電阻拉回至高電平,主機(jī)在15μs末期對(duì)數(shù)據(jù)線采樣,如果線為高電平,就讀為1,如果線為低電平,便讀為0。讀時(shí)間片的最短持續(xù)期限為60μs,各讀時(shí)間片之間必須有最短為1μs的恢復(fù)時(shí)間。 在處理高低電平跳變時(shí),還有必要了解DS18B20傳感器直流參數(shù)特性。其特性為:I/O口檢測(cè)低電平范圍為-0.3~0.8V,高電平范圍為2.2~5.5V,同單片機(jī)的I/O口檢測(cè)低電平范圍為-0.5V~0.2Vcc-0.1 V和高電平范圍為0.2Vcc+0.9V~Vcc+0.5V基本上相同。
數(shù)據(jù)連接線纜對(duì)讀寫數(shù)據(jù)波形的影響
針對(duì)微秒級(jí)數(shù)據(jù)脈沖信號(hào),對(duì)于較長(zhǎng)的數(shù)據(jù)線纜,不應(yīng)僅看作純阻性線纜,應(yīng)充分考慮線纜中存在的分布電容對(duì)數(shù)據(jù)脈沖信號(hào)在跳變時(shí)造成延時(shí)和變形的影響。其等效電路原理見圖3。一般線芯的內(nèi)阻遠(yuǎn)小于上拉電阻,決定延時(shí)量的是上拉電阻與分布電容乘積。在上拉電阻一定的情況下,線纜越長(zhǎng),其分布電容越大,對(duì)數(shù)據(jù)脈沖信號(hào)影響也就越大。電纜的材料、結(jié)構(gòu)、工藝等不同,其存在的分布電容指標(biāo)亦不同,良好的同軸線纜分布電容一般在60 pF/m以下,而扁平排線相鄰線芯間的分布電容在300pF/m左右。
用記憶示波器在連接10m長(zhǎng)RVV3×0.5mm2型線纜的傳感器上觀察到的數(shù)字波形見圖4(上拉電阻為5kΩ)。從圖4中可看出,在t 1時(shí)刻主機(jī)將數(shù)據(jù)線拉低,在t 2時(shí)刻才能被DS18B20識(shí)別為低電平,延遲了3μs。在t 3時(shí)刻主機(jī)釋放數(shù)據(jù)線,在上拉電阻的作用下,在t 4時(shí)刻才上升為被DS18B20識(shí)別的高電平,延遲了3μs。從t 2到t 4時(shí)刻,對(duì)DS18B20來說,是近19μs低電平。因此,在采用較長(zhǎng)線纜時(shí),如對(duì)傳感器讀寫時(shí)刻把握不準(zhǔn)確的話,會(huì)因使對(duì)讀寫的數(shù)據(jù)信號(hào)產(chǎn)生時(shí)延變形而不符合DS18B20對(duì)讀寫時(shí)序的要求,使對(duì)其讀寫操作失敗。在選用較長(zhǎng)數(shù)據(jù)線纜時(shí),還應(yīng)考慮抗干擾的問題,因此建議盡量采用雙絞線或帶屏蔽的雙絞線作傳感器的數(shù)據(jù)線纜。
換位理解DSl8B20傳感器對(duì)讀寫時(shí)序的要求
圖2是對(duì)DS18B20傳感器讀寫時(shí)序在主機(jī)處的波形圖,如果是在DS18B20處的話,其波形圖應(yīng)如圖5所示。考慮實(shí)際長(zhǎng)短數(shù)據(jù)線的影響,對(duì)讀寫時(shí)序的要求理解為:對(duì)DSl8B20 寫數(shù)據(jù)時(shí),主機(jī)產(chǎn)生讀時(shí)間片。當(dāng)主機(jī)把I/O數(shù)據(jù)線在7μs時(shí)間內(nèi)從高邏輯電平拉至低邏輯電平時(shí),維持時(shí)間最少1μs就產(chǎn)生寫時(shí)間片。如寫入0,則應(yīng)維持低電平45~60μs以上,如寫入1,應(yīng)在第8μs后釋放數(shù)據(jù)線,在7μs 時(shí)間內(nèi)拉到為邏輯高電壓, 并維持45~60μs以上。寫時(shí)間片必須有最短為60μs的持續(xù)期,在各寫周期之間必須有最短為1μs的恢復(fù)時(shí)間。從DS18B20 讀數(shù)據(jù)時(shí),主機(jī)產(chǎn)生讀時(shí)間片。主機(jī)在7μs時(shí)間內(nèi)把數(shù)據(jù)線從邏輯高電平拉至低電平,產(chǎn)生讀時(shí)間片。數(shù)據(jù)線必須保持在邏輯低電平至少1μs;來自DS18B20的輸出數(shù)據(jù)在讀時(shí)間片下降沿之后15μs有效。因此,在產(chǎn)生讀時(shí)間片8μs后主機(jī)必應(yīng)把I/O 數(shù)據(jù)線釋放,由上拉電阻將數(shù)據(jù)線拉回至邏輯高電平,主機(jī)在15μs末期對(duì)數(shù)據(jù)線采樣,如果線為高電平,就讀為1,如果線為低電平,便讀為0。讀時(shí)間片的最短持續(xù)期限為60μs,各個(gè)讀時(shí)間片之間必須有最短為1μs的恢復(fù)時(shí)間。在考慮到線纜對(duì)波形的延遲和DS18B20傳感器發(fā)送數(shù)據(jù)表現(xiàn)的典型時(shí)間,在實(shí)際操作中,建議將主機(jī)對(duì)數(shù)據(jù)線的采樣滯后5~9μs,可提高正確讀取DS18B20的可靠性。
對(duì)DS18B20的讀寫程序探討
經(jīng)過上面的分析和了解后,參見圖1,對(duì)接在P1.0口上的DS18B20傳感器讀寫子程序進(jìn)行修改,分別見“寫子程序”和“讀子程序”。將修改后的對(duì)DS18B20傳感器讀寫子程序移入主程序并寫入89C51單片機(jī),對(duì)用RVV3×0.5mm2型線纜為傳感器連線,用1~50m傳感器連線,在高、低溫環(huán)境條件下進(jìn)行了試驗(yàn)驗(yàn)證,溫控儀工作正常,穩(wěn)定可靠。題圖為我公司溫控儀的照片。