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