溫濕度傳感器和1602_第1頁
溫濕度傳感器和1602_第2頁
溫濕度傳感器和1602_第3頁
溫濕度傳感器和1602_第4頁
溫濕度傳感器和1602_第5頁
已閱讀5頁,還剩35頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、溫濕度傳感器數(shù)字溫濕一體傳感器DHT111、概述 DHTxx 系列數(shù)字溫濕度傳感器是一款含有已校準數(shù)字信號輸出的溫濕度復合傳感器。它應用專用的數(shù)字模塊采集技術和溫濕度傳感技術,確保產(chǎn)品具有極高的可靠性與卓越的長期穩(wěn)定性。傳感器包括一個電阻式測濕元件和一個NTC測溫元件,并與一個高性能8位單片機相連接。因此,該產(chǎn)品具有品質(zhì)卓越、超快響應、抗干擾能力強、性價比極高等優(yōu)點。每個DHTxx傳感器都在極為精確的濕度校驗室中進行校準。校準系數(shù)以程序的形式儲存在 OTP內(nèi)存中,傳感器內(nèi)部在檢測信號的處理過程中要調(diào)用這些校準系數(shù)。單線制串行輸出接口,使系統(tǒng)集成變得簡易快捷。超小的體積、極低的功耗,使其成為各類

2、應用甚至最為苛刻的應用場合的最佳選則。本產(chǎn)品為 4 針單排引腳封裝,特殊封裝形式可根據(jù)用戶需求而提供。 、產(chǎn)品特性 u 濕溫度傳感器的一體化結(jié)構(gòu)能相對的同時對相對濕度和溫度進行測量 。 u 數(shù)字信號輸出,從而減少用戶信號的預處理負擔。 u 單總線結(jié)構(gòu)輸出有效的節(jié)省用戶控制器的I/O口資源。并且,不需要額外電器元件。 u 獨特的單總數(shù)據(jù)傳輸線協(xié)議使得讀取傳感器的數(shù)據(jù)更加便捷。 u 全部校準。編碼方式為8位二進制數(shù)。 u 40bit 二進制數(shù)據(jù)輸出。其中濕度整數(shù)部分占1Byte,小數(shù)部分1Byte;溫度整數(shù)部分1Byte,小數(shù)部分1Byte。其中,濕度為高16位。最后1Byte為校驗和。 u 卓越

3、的長期穩(wěn)定性,超低功耗。 u 4引腳安裝,超小尺寸。 u 各型號管腳完全可以互換。 u 測量濕度范圍從20RH到90RH;測量溫度范圍從0到50。 u 適用范圍包括恒濕控制,消費家電類產(chǎn)品,溫濕度計等領域。 、外型與引腳排列 圖3.0 DHT11外型及管腳4、詳細引腳說明傳感器管腳方向識別:正面(有通氣孔的一面)看過去,從左到右依次為1、2、3、4腳。 表4.0:引腳說明 引腳號引腳名類型引腳說明1VCC電源正電源輸入,3V-5.5V DC2Dout輸出串行數(shù)據(jù),單總線3NC空空腳,擴展未用,請懸空4GND地接地,電源負極電源引腳,DHT11的供電電壓為 3.55.5V。傳感器上電后,要等待

4、1s 以越過不穩(wěn)定狀態(tài)在此期間不要發(fā)送任何指令。電源引腳(VDD,GND)之間可增加一個100nF 的電容,用以去耦濾波。 5、傳感器性能說明參數(shù)條件 Min Typ Max 單位 濕度分辨率1 1 1 %RH 8 Bit 重復性±1 %RH 精度25 ±4 %RH 050 ±5 %RH 互換性 可完全互換 量程范圍0 30 90 %RH 25 20 90 %RH 50 20 80 %RH 響應時間 1/e(63%)25,1m/s 空氣 6 10 15 S 遲滯 ±1 %RH 長期穩(wěn)定性 典型值 ±1 %RH/yr 溫度 分辨率 1 1 1 8

5、 8 8 Bit 重復性 ±1 精度 ±1 ±2 量程范圍 0 50 響應時間 1/e(63%) 6 30 S 6、連接接口說明 DHTxx數(shù)字濕溫度傳感器連接電路簡單,只需要占用控制器一個I/O口即可完成上下位的連接。典型應用電路如下圖所示。另外,建議連接線長度短于20時用5K上拉電阻,大于20米時根據(jù)實際情況使用合適的上拉電阻,如圖5.0所示。圖6.0 典型電路連接 7、數(shù)據(jù)格式及處理 7.1、格式 數(shù)字濕溫度傳感器采用單總線數(shù)據(jù)格式。即,單個數(shù)據(jù)引腳端口完成輸入輸出雙向傳輸。其數(shù)據(jù)包由5Byte(40Bit)組成。一次通訊時間最大3ms,數(shù)據(jù)分小數(shù)部分和整數(shù)

6、部分,具體格式在下面說明。 DATA 用于微處理器與 DHTxx之間的通訊和同步,采用單總線數(shù)據(jù)格式, 當前小數(shù)部分用于以后擴展,現(xiàn)讀出為0。操作流程如下: 一次完整的數(shù)據(jù)傳輸為40bit,高位先出。 數(shù)據(jù)格式:8bit濕度整數(shù)數(shù)據(jù)+8bit濕度小數(shù)數(shù)據(jù) +8bit溫度整數(shù)數(shù)據(jù)+8bit溫度小數(shù)數(shù)據(jù) +8bit校驗和 校驗和數(shù)據(jù)為前四個字節(jié)相加。 具體見表6.1: 濕度溫度校驗 整數(shù)小數(shù)整數(shù)小數(shù) 8Bit 8Bit8Bit8Bit8Bit 7.2、數(shù)據(jù)編碼及處理 傳感器數(shù)據(jù)輸出的是未編碼的二進制數(shù)據(jù)。數(shù)據(jù)(濕度、溫度、整數(shù)、小數(shù))之間應該分開處理。如果,某次從傳感器中讀取如下5Byte數(shù)據(jù):

7、byte4 byte3 byte2 byte1 byte0 00101101 00000000 00011100 00000000 01001001 整數(shù) 小數(shù) 整數(shù) 小數(shù) 校驗和 濕度 溫度 校驗和 由以上數(shù)據(jù)就可得到濕度和溫度的值,計算方法: humi (濕度)= byte4 . byte3=45.0 (RH) temp (溫度)= byte2 . byte1=28.0 ( ) jiaoyan(校驗)= byte4+ byte3+ byte2+ byte1=73 8、時序 DHT11傳感器是通過奧松電子有限公司開發(fā)的單總線協(xié)議和上位機(控制器)進行數(shù)據(jù)通信。DHTxx傳感器需要嚴格的讀寫協(xié)

8、議來確保數(shù)據(jù)的完整性。整個讀寫分為,上位機發(fā)送起始信號,上位機接收下位機發(fā)來的握手響應信號,讀0,和讀1四個步驟。所有的信號除主機啟動復位信號外,全部都由DHTxx產(chǎn)生。 通過單總線訪問DHTxx順序歸納如下: u 主機發(fā)開始信號 u 主機等待接收DHTxx響應信號 u 主機連續(xù)接收40Bit的數(shù)據(jù)和校驗和 u 數(shù)據(jù)處理8.1、主機復位信號和DHT響應信號 圖7.1 DHT復位時序用戶主機發(fā)送一次開始信號(低電平)DHT從低速模式轉(zhuǎn)換到高速模式,等待主機開始信號結(jié)束(拉高)后,DHT發(fā)送響應信號,送出40bit的數(shù)據(jù),并觸發(fā)一次信號采集,用戶可選擇讀取部分數(shù)據(jù)。注意:總線線空閑狀態(tài)為高電平,主

9、機把總線線拉低等待DHT響應,主機把總線線拉低必須大于18毫秒,保證DHT能檢測到起始信號。 DHT接收到主機的開始信號后,等待主機開始信號結(jié)束,然后發(fā)送低電平響應信號。主機發(fā)送開始信號結(jié)束后,延時等待20-40us后, 讀取DHT的回應信號,主機發(fā)送開始信號后,可以切換到輸入模式,或者輸出高電平均可,總線線由上拉電阻拉高。8.2、DHT開始發(fā)送數(shù)據(jù)流程 圖7.2 讀DHT數(shù)據(jù)流程主機發(fā)送開始信號后,延時等待20us-40us后讀取DHT的回應信號,讀取總線為低電平,說明DHT發(fā)送響應信號,DHT發(fā)送響應信號后,再把總線拉高,準備發(fā)送數(shù)據(jù),每一bit數(shù)據(jù)都以低電平開始,格式見下面圖示。如果讀取

10、響應信號為高電平,則DHT沒有響應,請檢查線路是否連接正常。 8.3、數(shù)字0信號表示方法 圖7.3 信號0時序圖 數(shù)字0表示方法為,首先DHT把總線拉低12-14us然后拉高,高電平保持時間在26-28us這個范圍內(nèi)。則此比特為0電平。 8.4、數(shù)字1信號表示方法 圖7.4 信號1時序圖 數(shù)字1表示方法為,首先DHT把總線拉低12-14us然后拉高,高電平保持時間在116-118us這個范圍內(nèi)。則此比特為1電平。 9、 測量分辨率 測量分辨率分別為 8bit(溫度)、8bit(濕度)。 10、電氣特性 VDD=5V,T = 25,除非特殊標注 參數(shù) 條件 min typmax單位 供電 DC

11、3 5 5.5V 供電電流 測量 0.5 2.5mA 平均 0.2 0.5mA 待機 100 150uA 采樣周期 秒 1 次 注:采樣周期間隔不得低于1秒鐘。 11、應用信息 11.1工作與貯存條件 超出建議的工作范圍可能導致高達3%RH的臨時性漂移信號。返回正常工作條后,傳感器會緩慢地向校準狀態(tài)恢復。要加速恢復進程/可參閱7.3小節(jié)的“恢復處理”。在非正常工作條件下長時間使用會加速產(chǎn)品的老化過程。 11.2暴露在化學物質(zhì)中 電阻式濕度傳感器的感應層會受到化學蒸汽的干擾,化學物質(zhì)在感應層中的擴散可能導致測量值漂移和靈敏度下降。在一個純凈的環(huán)境中,污染物質(zhì)會緩慢地釋放出去。下文所述的恢復處理將

12、加速實現(xiàn)這一過程。高濃度的化學污染會導致傳感器感應層的徹底損壞。 11.3恢復處理 置于極限工作條件下或化學蒸汽中的傳感器,通過如下處理程序,可使其恢復到校準時的狀態(tài)。在50-60和< 10%RH的濕度條件下保持2 小時(烘干);隨后在20-30和>70%RH的濕度條件下保持 5小時以上。 11.4溫度影響 氣體的相對濕度,在很大程度上依賴于溫度。因此在測量濕度時,應盡可能保證濕度傳感器在同一溫度下工作。如果與釋放熱量的電子元件共用一個印刷線路板,在安裝時應盡可能將DHT11遠離電子元件,并安裝在熱源下方,同時保持外殼的良好通風。為降低熱傳導,DHT11與印刷電路板其它部分的銅鍍層

13、應盡可能最小,并在兩者之間留出一道縫隙。 11.5光線 長時間暴露在太陽光下或強烈的紫外線輻射中,會使性能降低。 11.6配線注意事項 DATA信號線材質(zhì)量會影響通訊距離和通訊質(zhì)量,推薦使用高質(zhì)量屏蔽線。 12、封裝信息 13、 焊接信息 手動焊接,在最高260的溫度條件下接觸時間須少于10秒。 14、注意事項 (1)避免結(jié)露情況下使用。 (2)長期保存條件:溫度1040,濕度60以下。 例程:/*/ DHT11使用范例 /單片機 : AT89S52 或 STC89C52RC / 功能 :串口發(fā)送溫濕度數(shù)據(jù) 波特率 9600 /硬件連接: P3.3口為通訊口連接DHT11,DHT11的電源和地

14、連接單片機的電源和地,單片機串口加MAX232連接電腦/*/#include <reg52.h>#include "stdio.h"#define LCD_DATA P1 /LCD1602 data transfer define#define uchar unsigned char /定義一下方便使用#define uint unsigned intsbit bit11=P33;sbit LCD_E = P34;sbit LCD_RS = P35; /1602 control define sbit RW = P36; void Delay_ms(unsign

15、ed int n); void Delay_us(unsigned char n); uchar U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;float F16T,F16RH; /用于最終讀取的溫濕度數(shù)據(jù)/* 名 稱:LCD_en_write(void) * 功 能:液晶使能* 入口參數(shù):無* 出口參數(shù):無* 范 例: 直接調(diào)用*CD_set_xy*/void LCD_en_write(void) /液晶使能 Delay_ms(1); LCD_E=1;/EN=1 Delay_ms(1); LCD_E=0;/EN=0/* 名

16、 稱:LCD_byte(abc); * 功 能:寫一個字符到 or called one byte to LCD中* 入口參數(shù):* 出口參數(shù):無*LCD_set_xy*/void LCD_byte(unsigned char abc) RW = 0; LCD_E = 0; LCD_DATA = abc; LCD_en_write();/* 名 稱:LCD_write_char(uchar cd,uchar ab) * 功 能:寫指令或數(shù)據(jù) 當寫ab時 應使cd=0 當cd不為0 則寫cd 且ab的賦值無效* 入口參數(shù):cd:指令內(nèi)容ab:數(shù)據(jù)內(nèi)容 指令常量已在上面定義 但一般不用* 出口參數(shù):

17、無* 范 例: LCD_write_char( 0, 'f')*LCD_set_xy*/void LCD_write_char(uchar cd,uchar ab) / 寫數(shù)據(jù) /Delay_us(20); if(cd=0) LCD_RS=1; /RS=1,寫顯示內(nèi)容 LCD_byte(ab); else LCD_RS=0; /RS=0,寫命令 LCD_byte(cd); /* 名 稱:LCD_set_xy( uchar x, uchar y ) the optic sign flash?* 功 能:指定一個地址* 入口參數(shù):X:橫坐標 Y:縱坐標 * 出口參數(shù):無* 范 例:

18、 LCD_set_xy(5,1)*CD_set_xy*/void LCD_set_xy( uchar x, uchar y ) /寫地址函數(shù) unsigned char address; if (y=0) address =0x80+x; else address =0xc0+x; LCD_write_char( address, 0 ); /* 名 稱:LCD_write_str(uchar X,uchar Y,uchar *s)主函數(shù)調(diào)用* 功 能:在指定地址寫一個字符串 eg:Y=0,1,2,3,4,5,6,7,8,9,10.15。 X=0,1。* 入口參數(shù):X:橫坐標 Y:縱坐標 *s

19、:字符串首地址* 出口參數(shù):無* 范 例: LCD_write_str(1,1,uchar *s)*/void LCD_write_str(unsigned char X,unsigned char Y,unsigned char *s) LCD_write_char(0,' '); LCD_set_xy( X, Y ); /寫地址 while (*s) / 寫顯示字符 LCD_write_char( 0, *s );s +; /* 名 稱:Init_Lcd() 主函數(shù)調(diào)用* 功 能:Lcd初始化* 入口參數(shù):無* 出口參數(shù):無* 范 例: 在主函數(shù)中直接調(diào)用*/void In

20、it_Lcd() /LCD初始化 LCD_write_char(0x38,0); Delay_ms(1); LCD_write_char(0x38,0); Delay_ms(1); LCD_write_char(0x38,0); Delay_ms(1); LCD_write_char(0x0c,0); Delay_ms(1); LCD_write_char(0x06,0); Delay_ms(1); LCD_write_char(0x0c,0); Delay_ms(1); /在液晶中顯示浮點數(shù)函數(shù)LCD_value(unsigned char x,unsigned char y,float f

21、)unsigned char str15; /不能定義為char* str,數(shù)組長度一定要大于浮點數(shù)的總位數(shù)sprintf(str,"%.1f",f); /1表示小數(shù)位數(shù) 小數(shù)太多 自動四舍五入LCD_write_str( x, y, str);return 0;/ read 8 bits onice char COM(void) char i,U8temp,U8comdata; for(i=0;i<8;i+) while(!bit11); /表示讀取的高電位延時大于20多us 則讀取的是1 否則讀取的是0 Delay_us(35); /通過U8FLAG 可判斷bit

22、11 顯示數(shù)據(jù)的脈長U8temp=0; if(bit11)U8temp=1; while(bit11); U8comdata<<=1; U8comdata|=U8temp; /U8temp=1; return U8comdata;/-/-溫濕度讀取子程序 -/-/-以下變量均為全局變量-/-溫度高8位= U8T_data_H-/-溫度低8位= U8T_data_L-/-濕度高8位= U8RH_data_H-/-濕度低8位= U8RH_data_L-/-校驗 8位 = U8checkdata-/-調(diào)用相關子程序如下-/- Delay();, Delay_10us();,COM();

23、/-void getDHT11(void) /主機拉低18ms GO1: bit11=0; Delay_ms(20); bit11=1; /總線由上拉電阻拉高 主機延時60us Delay_us(60); /主機設為輸入 判斷從機響應信號 / bit11=1; /判斷從機是否有低電平響應信號 如不響應則跳出,響應則向下運行 if(!bit11) /T ! while(!bit11);/wait DHT goto high while(bit11); /數(shù)據(jù)接收狀態(tài) U8RH_data_H=COM(); U8RH_data_L=COM(); U8T_data_H=COM(); U8T_data_

24、L=COM(); U8checkdata=COM(); bit11=1; /數(shù)據(jù)校驗 if(U8T_data_H+U8T_data_L+U8RH_data_H+U8RH_data_L)!=U8checkdata) /if check wrong,read again goto GO1; /fi F16T=U8T_data_H+(float)U8T_data_L/256;/change integer to float F16RH=U8RH_data_H+(float)U8RH_data_L/256;/* 主函數(shù)*/void main () Init_Lcd(); LCD_write_str(0

25、,1,"abc"); /液晶預顯示測試 LCD_value(0,0,34.3); Delay_ms(2000); Init_Lcd(); while(1) getDHT11(); LCD_write_str(0,0,"T="); /顯示溫度 LCD_value(3,0,F16T); LCD_write_str(8,0,""C"); /字符" 應用轉(zhuǎn)義格式 LCD_write_str(0,1,"RH=");/顯示溫濕度 LCD_value(4,1,F16RH); LCD_write_str(9,1

26、,"%"); Delay_ms(500); /延時函數(shù)文件/以下為延時函數(shù) this is fit to old C51 12MHz, 12 devide freqencyvoid Delay_ms(unsigned int n)/毫秒延時 unsigned char j; while(n-) for(j=0;j<125;j+); void Delay_us(unsigned char n) /N us延時函數(shù) 精度 ±4us n=n/2; while(-n); 溫度傳感器DS18B20DS18B20的特性 DS18B20可以程序設定912位的分辨

27、率,精度為±0.5°C??蛇x更小的封裝方式,更寬的電壓適用范圍。分辨率設定,及用戶設定的報警溫度存儲在EEPROM中,掉電后依然保存。省略了存儲用戶定義報警溫度、分辨率參數(shù)的EEPROM,精度降低為±2°C,適用于對性能要求不高,成本控制嚴格的應用,是經(jīng)濟型產(chǎn)品。DS18B20使電壓、特性及封裝有更多的選擇,讓我們可以構(gòu)建適合自己的經(jīng)濟的測溫系統(tǒng)。一、 DS18B20的主要特性(1)適應電壓范圍更寬,電壓范圍:3.05.5V,在寄生電源方式下可由數(shù)據(jù)線供電    (2)獨特的單線接口方式,DS18B20在與微處理器

28、連接時僅需要一條口線即可實現(xiàn)微處理器與DS18B20的雙向通訊(3)DS18B20支持多點組網(wǎng)功能,多個DS18B20可以并聯(lián)在唯一的三線上,實現(xiàn)組網(wǎng)多點測溫 (4)DS18B20在使用中不需要任何外圍元件,全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi) (5)溫范圍55125,在-10+85時精度為±0.5 (6)可編程的分辨率為912位,對應的可分辨溫度分別為0.5、0.25、0.125和0.0625,可實現(xiàn)高精度測溫 (7)在9位分辨率時最多在93.75ms內(nèi)把溫度轉(zhuǎn)換為數(shù)字,12位分辨率時最多在750ms內(nèi)把溫度值轉(zhuǎn)換為數(shù)字,速

29、度更快 (8)測量結(jié)果直接輸出數(shù)字溫度信號,以"一線總線"串行傳送給CPU,同時可傳送CRC校驗碼,具有極強的抗干擾糾錯能力 (9)負壓特性:電源極性接反時,芯片不會因發(fā)熱而燒毀,但不能正常工作。二、DS18B20的外形和內(nèi)部結(jié)構(gòu)DS18B20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器TH和TL、配置寄存器。圖2: DS18B20內(nèi)部結(jié)構(gòu)圖三、DS18B20工作原理DS18B20的讀寫時序和測溫原理與DS1820相同,只是得到的溫度值的位數(shù)因分辨率不同而不同,且溫度轉(zhuǎn)換時的延時時間由2s減為750ms。 DS18B20

30、測溫原理如圖3所示。圖中低溫度系數(shù)晶振的振蕩頻率受溫度影響很小,用于產(chǎn)生固定頻率的脈沖信號送給計數(shù)器1。高溫度系數(shù)晶振隨溫度變化其振蕩率明顯改變,所產(chǎn)生的信號作為計數(shù)器2的脈沖輸入。計數(shù)器1和溫度寄存器被預置在55所對應的一個基數(shù)值。計數(shù)器1對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行減法計數(shù),當計數(shù)器1的預置值減到0時,溫度寄存器的值將加1,計數(shù)器1的預置將重新被裝入,計數(shù)器1重新開始對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行計數(shù),如此循環(huán)直到計數(shù)器2計數(shù)到0時,停止溫度寄存器值的累加,此時溫度寄存器中的數(shù)值即為所測溫度。圖3中的斜率累加器用于補償和修正測溫過程中的非線性,其輸出用于修正計數(shù)器1的預置值。圖3

31、: DS18B20測溫原理框圖DS18B20有4個主要的數(shù)據(jù)部件: (1)光刻ROM中的64位序列號是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼。64位光刻ROM的排列是:開始8位(28H)是產(chǎn)品類型標號,接著的48位是該DS18B20自身的序列號,最后8位是前面56位的循環(huán)冗余校驗碼(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一個DS18B20都各不相同,這樣就可以實現(xiàn)一根總線上掛接多個DS18B20的目的。 (2)DS18B20中的溫度傳感器可完成對溫度的測量,以12位轉(zhuǎn)化為例:用16位符號擴展的二進制補碼讀數(shù)形式提供,以0.0625/LSB形式表達,其中S為符

32、號位。表1: DS18B20溫度值格式表這是12位轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲在18B20的兩個8比特的RAM中,二進制中的前面5位是符號位,如果測得的溫度大于0,這5位為0,只要將測到的數(shù)值乘于0.0625即可得到實際溫度;如果溫度小于0,這5位為1,測到的數(shù)值需要取反加1再乘于0.0625即可得到實際溫度。 例如+125的數(shù)字輸出為07D0H,+25.0625的數(shù)字輸出為0191H,-25.0625的數(shù)字輸出為FF6FH,-55的數(shù)字輸出為FC90H。 表2: DS18B20溫度數(shù)據(jù)表(3)DS18B20溫度傳感器的存儲器 DS18B20溫度傳感器的內(nèi)部存儲器包括一個高速暫存RAM和一個非

33、易失性的可電擦除的EEPRAM,后者存放高溫度和低溫度觸發(fā)器TH、TL和結(jié)構(gòu)寄存器。 (4)配置寄存器 該字節(jié)各位的意義如下:TMR1R011111表3: 配置寄存器結(jié)構(gòu)低五位一直都是"1",TM是測試模式位,用于設置DS18B20在工作模式還是在測試模式。在DS18B20出廠時該位被設置為0,用戶不要去改動。R1和R0用來設置分辨率,如下表所示:(DS18B20出廠時被設置為12位)R1R0分辨率溫度最大轉(zhuǎn)換時間009位93.75ms0110位187.5ms1011位375ms1112位750ms表4: 溫度分辨率設置表四、 高速暫存存儲器 高速暫存存儲器由9個字節(jié)組成,

34、其分配如表5所示。當溫度轉(zhuǎn)換命令發(fā)布后,經(jīng)轉(zhuǎn)換所得的溫度值以二字節(jié)補碼形式存放在高速暫存存儲器的第0和第1個字節(jié)。單片機可通過單線接口讀到該數(shù)據(jù),讀取時低位在前,高位在后,數(shù)據(jù)格式如表1所示。對應的溫度計算:當符號位S=0時,直接將二進制位轉(zhuǎn)換為十進制;當S=1時,先將補碼變?yōu)樵a,再計算十進制值。表?2是對應的一部分溫度值。第九個字節(jié)是冗余檢驗字節(jié)。寄存器內(nèi)容字節(jié)地址溫度值低位 (LS Byte)0溫度值高位 (MS Byte)1高溫限值(TH)2低溫限值(TL)3配置寄存器4保留5保留6保留7CRC校驗值8表5: DS18B20暫存寄存器分布根據(jù)DS18B20的通訊協(xié)議,主機(單片機)控制

35、DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過三個步驟:每一次讀寫之前都要對DS18B20進行復位操作,復位成功后發(fā)送一條ROM指令,最后發(fā)送RAM指令,這樣才能對DS18B20進行預定的操作。復位要求主CPU將數(shù)據(jù)線下拉500微秒,然后釋放,當DS18B20收到信號后等待1660微秒左右,后發(fā)出60240微秒的存在低脈沖,主CPU收到此信號表示復位成功。指 令約定代碼功 能讀ROM33H讀DS1820溫度傳感器ROM中的編碼(即64位地址)符合 ROM55H發(fā)出此命令之后,接著發(fā)出 64 位 ROM 編碼,訪問單總線上與該編碼相對應的 DS1820 使之作出響應,為下一步對該 DS1820 的讀寫作準備

36、。搜索 ROM0FOH用于確定掛接在同一總線上 DS1820 的個數(shù)和識別 64 位 ROM 地址。為操作各器件作好準備。跳過 ROM0CCH忽略 64 位 ROM 地址,直接向 DS1820 發(fā)溫度變換命令。適用于單片工作。告警搜索命令0ECH執(zhí)行后只有溫度超過設定值上限或下限的片子才做出響應。指 令約定代碼功 能溫度變換44H啟動DS1820進行溫度轉(zhuǎn)換,12位轉(zhuǎn)換時最長為750ms(9位為93.75ms)。結(jié)果存入內(nèi)部9字節(jié)RAM中。讀暫存器0BEH讀內(nèi)部RAM中9字節(jié)的內(nèi)容寫暫存器4EH發(fā)出向內(nèi)部RAM的3、4字節(jié)寫上、下限溫度數(shù)據(jù)命令,緊跟該命令之后,是傳送兩字節(jié)的數(shù)據(jù)。復制暫存器4

37、8H將RAM中第3 、4字節(jié)的內(nèi)容復制到EEPROM中。重調(diào) EEPROM0B8H將EEPROM中內(nèi)容恢復到RAM中的第3 、4字節(jié)。讀供電方式0B4H讀DS1820的供電模式。寄生供電時DS1820發(fā)送“ 0 ”,外接電源供電 DS1820發(fā)送“ 1 ”。五、DS18B20的應用電路DS18B20測溫系統(tǒng)具有測溫系統(tǒng)簡單、測溫精度高、連接方便、占用口線少等優(yōu)點。下面就是DS18B20幾個不同應用方式下的測溫電路圖: 1、DS18B20寄生電源供電方式電路圖如下面圖4所示,在寄生電源供電方式下,DS18B20從單線信號線上汲取能量:在信號線DQ處于高電平期間把能量儲存在內(nèi)部電容里,在信號線處于

38、低電平期間消耗電容上的電能工作,直到高電平到來再給寄生電源(電容)充電。獨特的寄生電源方式有三個好處:1)進行遠距離測溫時,無需本地電源2)可以在沒有常規(guī)電源的條件下讀取ROM3)電路更加簡潔,僅用一根I/O口實現(xiàn)測溫要想使DS18B20進行精確的溫度轉(zhuǎn)換,I/O線必須保證在溫度轉(zhuǎn)換期間提供足夠的能量,由于每個DS18B20在溫度轉(zhuǎn)換期間工作電流達到1mA,當幾個溫度傳感器掛在同一根I/O線上進行多點測溫時,只靠4.7K上拉電阻就無法提供足夠的能量,會造成無法轉(zhuǎn)換溫度或溫度誤差極大。因此,圖4電路只適應于單一溫度傳感器測溫情況下使用,不適宜采用電池供電系統(tǒng)中。并且工作電源VCC必須保證在5V,

39、當電源電壓下降時,寄生電源能夠汲取的能量也降低,會使溫度誤差變大。注: 站長曾經(jīng)就此電路做過實驗,在實驗中,降低電源電壓VCC,當?shù)陀?.5V時,測出的溫度值比實際的溫度高,誤差較大。當電源電壓降為4V時,溫度誤差有3之多,這就應該是因為寄生電源汲取能量不夠造成的吧,因此,站長建議大家在開發(fā)測溫系統(tǒng)時不要使用此電路。圖42、DS18B20寄生電源強上拉供電方式電路圖改進的寄生電源供電方式如下面圖5所示,為了使DS18B20在動態(tài)轉(zhuǎn)換周期中獲得足夠的電流供應,當進行溫度轉(zhuǎn)換或拷貝到E2存儲器操作時,用MOSFET把I/O線直接拉到VCC就可提供足夠的電流,在發(fā)出任何涉及到拷貝到E2存儲器或啟動溫

40、度轉(zhuǎn)換的指令后,必須在最多10S內(nèi)把I/O線轉(zhuǎn)換到強上拉狀態(tài)。在強上拉方式下可以解決電流供應不走的問題,因此也適合于多點測溫應用,缺點就是要多占用一根I/O口線進行強上拉切換。圖5注意:在圖4和圖5寄生電源供電方式中,DS18B20的VDD引腳必須接地3、DS18B20的外部電源供電方式在外部電源供電方式下,DS18B20工作電源由VDD引腳接入,此時I/O線不需要強上拉,不存在電源電流不足的問題,可以保證轉(zhuǎn)換精度,同時在總線上理論可以掛接任意多個DS18B20傳感器,組成多點測溫系統(tǒng)。注意:在外部供電的方式下,DS18B20的GND引腳不能懸空,否則不能轉(zhuǎn)換溫度,讀取的溫度總是85。圖6:外

41、部供電方式單點測溫電路圖7:外部供電方式的多點測溫電路圖外部電源供電方式是DS18B20最佳的工作方式,工作穩(wěn)定可靠,抗干擾能力強,而且電路也比較簡單,可以開發(fā)出穩(wěn)定可靠的多點溫度監(jiān)控系統(tǒng)。站長推薦大家在開發(fā)中使用外部電源供電方式,畢竟比寄生電源方式只多接一根VCC引線。在外接電源方式下,可以充分發(fā)揮DS18B20寬電源電壓范圍的優(yōu)點,即使電源電壓VCC降到3V時,依然能夠保證溫度量精度。六、DS1820使用中注意事項 DS1820雖然具有測溫系統(tǒng)簡單、測溫精度高、連接方便、占用口線少等優(yōu)點,但在實際應用中也應注意以下幾方面的問題: 1) 較小的硬件開銷需要相對復雜的軟件進行補償,由于DS18

42、20與微處理器間采用串行數(shù)據(jù)傳送,因此,在對DS1820進行讀寫編程時,必須嚴格的保證讀寫時序,否則將無法讀取測溫結(jié)果。在使用PL/M、C等高級語言進行系統(tǒng)程序設計時,對DS1820操作部分最好采用匯編語言實現(xiàn)。 2) 在DS1820的有關資料中均未提及單總線上所掛DS1820數(shù)量問題,容易使人誤認為可以掛任意多個DS1820,在實際應用中并非如此。當單總線上所掛DS1820超過8個時,就需要解決微處理器的總線驅(qū)動問題,這一點在進行多點測溫系統(tǒng)設計時要加以注意。 3) 連接DS1820的總線電纜是有長度限制的。試驗中,當采用普通信號電纜傳輸長度超過50m時,讀取的測溫數(shù)據(jù)將發(fā)生錯誤。當將總線電

43、纜改為雙絞線帶屏蔽電纜時,正常通訊距離可達150m,當采用每米絞合次數(shù)更多的雙絞線帶屏蔽電纜時,正常通訊距離進一步加長。這種情況主要是由總線分布電容使信號波形產(chǎn)生畸變造成的。因此,在用DS1820進行長距離測溫系統(tǒng)設計時要充分考慮總線分布電容和阻抗匹配問題。 4) 在DS1820測溫程序設計中,向DS1820發(fā)出溫度轉(zhuǎn)換命令后,程序總要等待DS1820的返回信號,一旦某個DS1820接觸不好或斷線,當程序讀該DS1820時,將沒有返回信號,程序進入死循環(huán)。這一點在進行DS1820硬件連接和軟件設計時也要給予一定的重視。 測溫電纜線建議采用屏蔽4芯雙絞線,其中一對線接地線與信號線,另一組接VCC

44、和地線,屏蔽層在源端單點接地。例程#include"reg52.h"#include"intrins.h"  #define unchar unsigned char#define unint unsigned intsbit rs=P20;sbit rw=P21;sbit en=P22;sbit DQ=P00;/DS18B20部分函數(shù)變量 unchar tempL,tempH;unint tmp;void reset();void writechar(unchar dat);unint readchar();unint readtempera

45、ture(); void delay(unint t);/液晶部分函數(shù)和變量void delay1();unint ttvoid wrcmd(unchar cmd);void wrdata(unchar date);void display();void lcdchus();void time(unint t);unchar temp2="temperature:"unchar temp3="000.0"/數(shù)碼管部分/sbit sda=P02;/sbit scl=P03;/sbit inter=P32;/unint n;/void shift();/un

46、char code  table=0x88;/*             寫DS18B20開始*/*    延時子函數(shù)*/void delay(unint t)  unint n; n=0;  while(n<t)     n+;  /*  DS18B20復位函數(shù)*/void reset()    DQ=1; /DQ先置高 

47、0;delay(8); /延時  DQ=0; /發(fā)送復位脈沖delay(85); /延時(>480us)DQ=1; /拉高數(shù)據(jù)線  delay(14); /等待(1560us)這里是等待DS18B20做出回應,如果回應DQ將變低, /MCU是在DQ拉高后開始監(jiān)視DQ的值的。 /*  DS18B20寫一個字節(jié)函數(shù)*/void writechar(unchar dat)    unint i;   for(i=8;i>0;i-)      DQ=0; /先將DQ拉低,

48、我們這里先不延時15us先,在下面的 delay(5)一起延了,         /因為時序圖它是一直保持低電平的  DQ=dat&0x01;/去數(shù)據(jù)的最低位,應為DS18B20是從低到高讀的   delay(5);/延時在60-120us之間   DQ=1; /將DQ拉高  dat>>=1;/右移一位      delay(4);/這里延時1us以上 /*   DS18B20讀一個字節(jié)函數(shù)*/unint readchar()  unchar i,dat=0;/這里要付初值  for (i=8;i>0;i-)     DQ=1;  /DQ稍微拉高,這不可有可無  delay(1);/延時小會,這里延時不嚴格   DQ=0;  /按照時序圖,將DQ拉低,先不延時,在下面delay(4)在一起延!  dat>>=1;/右移一位   DQ=1; /釋

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論