久久精品卡通在线|一级片视频免费观看|91AⅤ在线爱插射在线|无码a片网站中欧美在线精品|国产亚洲99久久精品|欧洲久久精品日本无码高清片|国产主播高清福利在线|国产一极小视频观看|国产十免费十无码十在线|国产一级视频在线观看免费

您當(dāng)前的位置:鋼材 > 型鋼 > 市場(chǎng)分析

ds18b20溫度傳感器測(cè)體溫,ky028數(shù)字溫度傳感器模塊

來(lái)源:頭條 作者: chanong
分享到
關(guān)注德勤鋼鐵網(wǎng)在線(xiàn):
在線(xiàn)咨詢(xún):
  • 掃描或點(diǎn)擊關(guān)注德勤鋼鐵網(wǎng)在線(xiàn)客服

溫度測(cè)量是制造商項(xiàng)目中最常見(jiàn)的功能需求之一。您還可以制作自己的溫度計(jì)并將其放在臥室或汽車(chē)中,這樣您就可以隨時(shí)了解周?chē)臏囟。通過(guò)添加其他輔助模塊和控制器,可以實(shí)現(xiàn)遠(yuǎn)程測(cè)溫和控溫。所有這些的基礎(chǔ)是小型溫度傳感器芯片,最常見(jiàn)的是DS18B20 數(shù)字溫度傳感器。

DS18B20是常用的數(shù)字溫度傳感器,輸出數(shù)字信號(hào),具有體積小、硬件開(kāi)銷(xiāo)低、抗干擾能力強(qiáng)、精度高等特點(diǎn)。接線(xiàn)簡(jiǎn)單,包裝后也可在各種場(chǎng)合使用。 DS18B20引腳定義:

DQ為數(shù)字信號(hào)輸入輸出端,GND為電源地,VDD為外部電源輸入端(寄生電源接線(xiàn)方式接地)。 DS18B20的主要特點(diǎn):

它具有較寬的適應(yīng)電壓范圍:3.0 至5.5 V,并且可以在寄生電源模式下通過(guò)數(shù)據(jù)線(xiàn)供電。獨(dú)特的單線(xiàn)接口模式,DS18B20與微處理器連接時(shí)僅需一根端口線(xiàn),微處理器與DS18B20之間雙向通信,DS18B20支持多點(diǎn)網(wǎng)絡(luò)功能,只需3根線(xiàn)即可將多個(gè)DS18B20并聯(lián),實(shí)現(xiàn)多點(diǎn)測(cè)溫網(wǎng)絡(luò)內(nèi),溫度測(cè)量范圍-55C至+125C、-10至+85C,精度0.5C,可編程分辨率為9至12位,兼容可分解溫度0.5、0.25 、0.125、0.0625?蛇M(jìn)行9位分辨率測(cè)量,93.75ms內(nèi)將溫度轉(zhuǎn)換為數(shù)值,12位分辨率下,最長(zhǎng)750ms內(nèi)將溫度值轉(zhuǎn)換為數(shù)值,測(cè)量結(jié)果原樣輸出更快,數(shù)字溫度信號(hào)發(fā)送至CPU通過(guò)“單線(xiàn)總線(xiàn)”,同時(shí)串行傳輸CRC校驗(yàn)碼,具有很強(qiáng)的抗干擾和糾錯(cuò)能力負(fù)電壓特性:如果電源極性不同,芯片會(huì)即使電源接反也不會(huì)被熱燒壞,但不工作屬于正,F(xiàn)象。 DS18B20內(nèi)部結(jié)構(gòu):

如圖所示,DS18B20的內(nèi)部結(jié)構(gòu)主要由四部分組成。 64 位光刻ROM、溫度傳感器、非易失性溫度報(bào)警觸發(fā)器TH 和TL 以及配置寄存器。

DS18B20內(nèi)部結(jié)構(gòu)

DS18B20工作原理:

DS18B20測(cè)溫原理圖

DS18B20的讀/寫(xiě)時(shí)序和溫度測(cè)量原理與DS1820相同,但由于分辨率的不同,獲得的溫度值的位數(shù)不同,并且溫度轉(zhuǎn)換時(shí)的延遲時(shí)間從2減少秒到750 毫秒。 DS18B20的溫度測(cè)量原理如圖所示。圖中低溫度系數(shù)晶振的振蕩頻率幾乎不受溫度影響,產(chǎn)生固定頻率的脈沖信號(hào),送至減法計(jì)數(shù)器1 。高溫度系數(shù)晶振的振蕩頻率隨溫度變化,這當(dāng)然是變化的,但產(chǎn)生的信號(hào)作為減法計(jì)數(shù)器2的脈沖輸入,計(jì)數(shù)門(mén)也隱藏在圖中。DS18B20對(duì)低溫度系數(shù)振蕩器產(chǎn)生的時(shí)鐘脈沖進(jìn)行計(jì)數(shù),完成溫度測(cè)量。

計(jì)數(shù)門(mén)的開(kāi)啟時(shí)間由高溫度系數(shù)振蕩器決定,每次測(cè)量前,首先將-55對(duì)應(yīng)的基數(shù)分別存入減法計(jì)數(shù)器1和溫度寄存器中。預(yù)設(shè)為基值-A,對(duì)應(yīng)于55C。

減法計(jì)數(shù)器1減去低溫度系數(shù)晶體振蕩器產(chǎn)生的脈沖信號(hào),當(dāng)減法計(jì)數(shù)器1的設(shè)定值達(dá)到0時(shí),溫度寄存器的值加1,減法計(jì)數(shù)器1的設(shè)定值變?yōu)?。減法計(jì)數(shù)器1,繼續(xù)對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行計(jì)數(shù),如此循環(huán),直到減法計(jì)數(shù)器2達(dá)到0,停止累加溫度寄存器值,此時(shí)溫度寄存器即為測(cè)量到的溫度。

圖中的斜率累加器用于補(bǔ)償和校正溫度測(cè)量過(guò)程的非線(xiàn)性,其輸出用于修改減法計(jì)數(shù)器的預(yù)設(shè)值,除非計(jì)數(shù)門(mén)關(guān)閉,否則重復(fù)上述過(guò)程。這就是DS18B20的溫度測(cè)量原理,直到溫度寄存器的值達(dá)到測(cè)量的溫度值。

另外,DS18B20的單線(xiàn)通信功能是分時(shí)完成的,因此有嚴(yán)格的時(shí)隙概念,使得讀寫(xiě)時(shí)序非常重要。系統(tǒng)對(duì)DS18B20的各種操作都必須按照協(xié)議進(jìn)行。操作協(xié)議為DS18B20初始化(復(fù)位脈沖發(fā)送)ROM功能命令發(fā)送存儲(chǔ)器操作命令發(fā)送數(shù)據(jù)處理。各種操作的時(shí)序圖與DS1820時(shí)序圖相同。

說(shuō)了這么多,如果您仍然感到困惑也沒(méi)關(guān)系。因?yàn)椴恍枰斫獾媚敲辞宄。通常,傳感器集成模塊可以直接在應(yīng)用過(guò)程中使用。具有更方便的接口和更可靠的性能。簡(jiǎn)單來(lái)說(shuō),就是在傳感器上加了一個(gè)上拉電阻和一個(gè)指示燈。

工作電壓:3V~5.5v 溫度測(cè)量范圍:-55~+125(誤差2)、-10~+85(誤差2) 電路板尺寸:21mm*10mmDS18B20 數(shù)字溫度傳感器模塊

DS18B20 數(shù)字溫度傳感器模塊原理圖

接下來(lái),使用Arduino驅(qū)動(dòng)DS18B20模塊,并使用串口顯示DS18B20測(cè)量的溫度。硬件設(shè)備:

Arduino控制器x 1DS18B20數(shù)字溫度傳感器模塊x 1 USB數(shù)據(jù)線(xiàn)x 1 接線(xiàn):連接電路非常簡(jiǎn)單,只需連接模塊的電源線(xiàn)和地線(xiàn),并將模塊的數(shù)據(jù)總線(xiàn)DO連接到數(shù)字端即可。連接Arduino的12針,是的,USB數(shù)據(jù)。

Arduino接線(xiàn)圖

步驟如下:先附上流程圖。

DS18B20程序流程圖

按照上面的流程圖使用單總線(xiàn)庫(kù)。使用OneWire 完成編程。

#include OneWire ds(12); //連接arduino12引腳void setup(void){ Serial.begin(9600);}void Loop(void) { byte i; byte Present=0; byte type_s; byte data[12] ; byte addr[8]; float 攝氏溫度、華氏溫度; if ( !ds.search(addr)) { Serial.println('沒(méi)有更多地址。'); Serial.println(); ds.reset_search(); Late (250 ) ; return; } Serial.print('ROM='); for( i=0; i 8; i++) { Serial.write(' '); Serial.print(addr, HEX); } if (OneWire:crc8 (addr , 7) !=addr[7]) { Serial.println('CRC is invalid!'); return; } Serial.println(); //第一個(gè)ROM 字節(jié)位于芯片開(kāi)關(guān)(addr[0] ) 指示的位置{ case0x10: Serial.println(' Chip=DS18S20'); //或更舊的DS1820 type_s=1; Break; case0x28: Serial.println(' Chip=DS18B20'); type_s=0; Break; case0x22: Serial.println( ' Chip=DS1822'); type_s=0; break; default: Serial.println('該設(shè)備不是DS18x20 系列設(shè)備。'); return; } ds.reset(); ds.select(addr); ds.write (0x44 , 1); //開(kāi)始轉(zhuǎn)換,最后打開(kāi)寄生電源。 Late(1000); //750ms 可能就足夠了,但也可能不夠//可能在這里運(yùn)行ds.depower(),但它將在重置時(shí)處理。present=ds.reset(); ds.select(addr); ds.write(0xBE); //讀取暫存器Serial.print(' Data='); Serial.print(present,HEX); Serial.print ( ' ') for ( i=0; i 9; i++) { //需要9 個(gè)字節(jié)data=ds.read(); Serial.print(data, HEX); Serial.print(' '); } Serial . print(' CRC='); Serial.print(OneWire:crc8(data, 8), HEX); Serial.println(); //將數(shù)據(jù)轉(zhuǎn)換為實(shí)際溫度unsigned int raw=(data[1] 8) | data [ 0 ]; if (type_s) { raw=raw 3; //默認(rèn)為9 位分辨率if (data[7]==0x10) { //剩余計(jì)數(shù)提供完整的12 位分辨率raw=( raw0xFFF0) + 12 - data [ 6]; } } else { byte cfg=(data[4]0x60); if (cfg==0x00) raw=raw 3; //9 位分辨率,93.75 ms else if (cfg==0x20) raw=raw 2 ; //10 位分辨率,187.5 ms else if (cfg==0x40) raw=raw 1; //11 位分辨率,375 ms //默認(rèn)為12 位分辨率,750 轉(zhuǎn)換時(shí)間(以毫秒為單位) }攝氏度=(float)raw/16.0; 華氏度=攝氏度* 1.8 + 32.0; Serial.print(' 溫度='); Serial.print(攝氏度); Serial.print(' 攝氏度, ') ; Serial.print(華氏度) ; Serial.println('Fahrenheit');} 程序還是很復(fù)雜,但是有一個(gè)更簡(jiǎn)單的方法。使用DS18B20 庫(kù)DallasTemperature。

#include #include //定義連接到Arduino IO 號(hào)12 的DS18B20 數(shù)據(jù)端口#define ONE_WIRE_BUS 12 //最初連接到單總線(xiàn)的單總線(xiàn)設(shè)備OneWire oneWire(ONE_WIRE_BUS);DallasTemperaturesensors(oneWire); void setup( void) { //設(shè)置串口通信的波特率Serial.begin(9600); Serial.println('達(dá)拉斯溫度IC控制庫(kù)演示'); //初始庫(kù)sensors.begin();}void loop(void ){ Serial .print ('請(qǐng)求溫度.');sensors.requestTemperatures(); //發(fā)送命令獲取溫度Serial.println('DONE'); Serial.print('設(shè)備1 的溫度(索引0) is: '); Serial .println(sensors.getTempCByIndex(0)); }這不是很簡(jiǎn)單嗎,連接上數(shù)碼管、液晶屏或者其他顯示溫度的顯示設(shè)備就可以完成儀表的創(chuàng)建了。

責(zé)任編輯:德勤鋼鐵網(wǎng) 標(biāo)簽:

熱門(mén)搜索

相關(guān)文章

廣告
德勤鋼鐵網(wǎng) |市場(chǎng)分析

ds18b20溫度傳感器測(cè)體溫,ky028數(shù)字溫度傳感器模塊

chanong

|

溫度測(cè)量是制造商項(xiàng)目中最常見(jiàn)的功能需求之一。您還可以制作自己的溫度計(jì)并將其放在臥室或汽車(chē)中,這樣您就可以隨時(shí)了解周?chē)臏囟。通過(guò)添加其他輔助模塊和控制器,可以實(shí)現(xiàn)遠(yuǎn)程測(cè)溫和控溫。所有這些的基礎(chǔ)是小型溫度傳感器芯片,最常見(jiàn)的是DS18B20 數(shù)字溫度傳感器。

DS18B20是常用的數(shù)字溫度傳感器,輸出數(shù)字信號(hào),具有體積小、硬件開(kāi)銷(xiāo)低、抗干擾能力強(qiáng)、精度高等特點(diǎn)。接線(xiàn)簡(jiǎn)單,包裝后也可在各種場(chǎng)合使用。 DS18B20引腳定義:

DQ為數(shù)字信號(hào)輸入輸出端,GND為電源地,VDD為外部電源輸入端(寄生電源接線(xiàn)方式接地)。 DS18B20的主要特點(diǎn):

它具有較寬的適應(yīng)電壓范圍:3.0 至5.5 V,并且可以在寄生電源模式下通過(guò)數(shù)據(jù)線(xiàn)供電。獨(dú)特的單線(xiàn)接口模式,DS18B20與微處理器連接時(shí)僅需一根端口線(xiàn),微處理器與DS18B20之間雙向通信,DS18B20支持多點(diǎn)網(wǎng)絡(luò)功能,只需3根線(xiàn)即可將多個(gè)DS18B20并聯(lián),實(shí)現(xiàn)多點(diǎn)測(cè)溫網(wǎng)絡(luò)內(nèi),溫度測(cè)量范圍-55C至+125C、-10至+85C,精度0.5C,可編程分辨率為9至12位,兼容可分解溫度0.5、0.25 、0.125、0.0625?蛇M(jìn)行9位分辨率測(cè)量,93.75ms內(nèi)將溫度轉(zhuǎn)換為數(shù)值,12位分辨率下,最長(zhǎng)750ms內(nèi)將溫度值轉(zhuǎn)換為數(shù)值,測(cè)量結(jié)果原樣輸出更快,數(shù)字溫度信號(hào)發(fā)送至CPU通過(guò)“單線(xiàn)總線(xiàn)”,同時(shí)串行傳輸CRC校驗(yàn)碼,具有很強(qiáng)的抗干擾和糾錯(cuò)能力負(fù)電壓特性:如果電源極性不同,芯片會(huì)即使電源接反也不會(huì)被熱燒壞,但不工作屬于正,F(xiàn)象。 DS18B20內(nèi)部結(jié)構(gòu):

如圖所示,DS18B20的內(nèi)部結(jié)構(gòu)主要由四部分組成。 64 位光刻ROM、溫度傳感器、非易失性溫度報(bào)警觸發(fā)器TH 和TL 以及配置寄存器。

DS18B20內(nèi)部結(jié)構(gòu)

DS18B20工作原理:

DS18B20測(cè)溫原理圖

DS18B20的讀/寫(xiě)時(shí)序和溫度測(cè)量原理與DS1820相同,但由于分辨率的不同,獲得的溫度值的位數(shù)不同,并且溫度轉(zhuǎn)換時(shí)的延遲時(shí)間從2減少秒到750 毫秒。 DS18B20的溫度測(cè)量原理如圖所示。圖中低溫度系數(shù)晶振的振蕩頻率幾乎不受溫度影響,產(chǎn)生固定頻率的脈沖信號(hào),送至減法計(jì)數(shù)器1 。高溫度系數(shù)晶振的振蕩頻率隨溫度變化,這當(dāng)然是變化的,但產(chǎn)生的信號(hào)作為減法計(jì)數(shù)器2的脈沖輸入,計(jì)數(shù)門(mén)也隱藏在圖中。DS18B20對(duì)低溫度系數(shù)振蕩器產(chǎn)生的時(shí)鐘脈沖進(jìn)行計(jì)數(shù),完成溫度測(cè)量。

計(jì)數(shù)門(mén)的開(kāi)啟時(shí)間由高溫度系數(shù)振蕩器決定,每次測(cè)量前,首先將-55對(duì)應(yīng)的基數(shù)分別存入減法計(jì)數(shù)器1和溫度寄存器中。預(yù)設(shè)為基值-A,對(duì)應(yīng)于55C。

減法計(jì)數(shù)器1減去低溫度系數(shù)晶體振蕩器產(chǎn)生的脈沖信號(hào),當(dāng)減法計(jì)數(shù)器1的設(shè)定值達(dá)到0時(shí),溫度寄存器的值加1,減法計(jì)數(shù)器1的設(shè)定值變?yōu)?。減法計(jì)數(shù)器1,繼續(xù)對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行計(jì)數(shù),如此循環(huán),直到減法計(jì)數(shù)器2達(dá)到0,停止累加溫度寄存器值,此時(shí)溫度寄存器即為測(cè)量到的溫度。

圖中的斜率累加器用于補(bǔ)償和校正溫度測(cè)量過(guò)程的非線(xiàn)性,其輸出用于修改減法計(jì)數(shù)器的預(yù)設(shè)值,除非計(jì)數(shù)門(mén)關(guān)閉,否則重復(fù)上述過(guò)程。這就是DS18B20的溫度測(cè)量原理,直到溫度寄存器的值達(dá)到測(cè)量的溫度值。

另外,DS18B20的單線(xiàn)通信功能是分時(shí)完成的,因此有嚴(yán)格的時(shí)隙概念,使得讀寫(xiě)時(shí)序非常重要。系統(tǒng)對(duì)DS18B20的各種操作都必須按照協(xié)議進(jìn)行。操作協(xié)議為DS18B20初始化(復(fù)位脈沖發(fā)送)ROM功能命令發(fā)送存儲(chǔ)器操作命令發(fā)送數(shù)據(jù)處理。各種操作的時(shí)序圖與DS1820時(shí)序圖相同。

說(shuō)了這么多,如果您仍然感到困惑也沒(méi)關(guān)系。因?yàn)椴恍枰斫獾媚敲辞宄Mǔ,傳感器集成模塊可以直接在應(yīng)用過(guò)程中使用。具有更方便的接口和更可靠的性能。簡(jiǎn)單來(lái)說(shuō),就是在傳感器上加了一個(gè)上拉電阻和一個(gè)指示燈。

工作電壓:3V~5.5v 溫度測(cè)量范圍:-55~+125(誤差2)、-10~+85(誤差2) 電路板尺寸:21mm*10mmDS18B20 數(shù)字溫度傳感器模塊

DS18B20 數(shù)字溫度傳感器模塊原理圖

接下來(lái),使用Arduino驅(qū)動(dòng)DS18B20模塊,并使用串口顯示DS18B20測(cè)量的溫度。硬件設(shè)備:

Arduino控制器x 1DS18B20數(shù)字溫度傳感器模塊x 1 USB數(shù)據(jù)線(xiàn)x 1 接線(xiàn):連接電路非常簡(jiǎn)單,只需連接模塊的電源線(xiàn)和地線(xiàn),并將模塊的數(shù)據(jù)總線(xiàn)DO連接到數(shù)字端即可。連接Arduino的12針,是的,USB數(shù)據(jù)。

Arduino接線(xiàn)圖

步驟如下:先附上流程圖。

DS18B20程序流程圖

按照上面的流程圖使用單總線(xiàn)庫(kù)。使用OneWire 完成編程。

#include OneWire ds(12); //連接arduino12引腳void setup(void){ Serial.begin(9600);}void Loop(void) { byte i; byte Present=0; byte type_s; byte data[12] ; byte addr[8]; float 攝氏溫度、華氏溫度; if ( !ds.search(addr)) { Serial.println('沒(méi)有更多地址。'); Serial.println(); ds.reset_search(); Late (250 ) ; return; } Serial.print('ROM='); for( i=0; i 8; i++) { Serial.write(' '); Serial.print(addr, HEX); } if (OneWire:crc8 (addr , 7) !=addr[7]) { Serial.println('CRC is invalid!'); return; } Serial.println(); //第一個(gè)ROM 字節(jié)位于芯片開(kāi)關(guān)(addr[0] ) 指示的位置{ case0x10: Serial.println(' Chip=DS18S20'); //或更舊的DS1820 type_s=1; Break; case0x28: Serial.println(' Chip=DS18B20'); type_s=0; Break; case0x22: Serial.println( ' Chip=DS1822'); type_s=0; break; default: Serial.println('該設(shè)備不是DS18x20 系列設(shè)備。'); return; } ds.reset(); ds.select(addr); ds.write (0x44 , 1); //開(kāi)始轉(zhuǎn)換,最后打開(kāi)寄生電源。 Late(1000); //750ms 可能就足夠了,但也可能不夠//可能在這里運(yùn)行ds.depower(),但它將在重置時(shí)處理。present=ds.reset(); ds.select(addr); ds.write(0xBE); //讀取暫存器Serial.print(' Data='); Serial.print(present,HEX); Serial.print ( ' ') for ( i=0; i 9; i++) { //需要9 個(gè)字節(jié)data=ds.read(); Serial.print(data, HEX); Serial.print(' '); } Serial . print(' CRC='); Serial.print(OneWire:crc8(data, 8), HEX); Serial.println(); //將數(shù)據(jù)轉(zhuǎn)換為實(shí)際溫度unsigned int raw=(data[1] 8) | data [ 0 ]; if (type_s) { raw=raw 3; //默認(rèn)為9 位分辨率if (data[7]==0x10) { //剩余計(jì)數(shù)提供完整的12 位分辨率raw=( raw0xFFF0) + 12 - data [ 6]; } } else { byte cfg=(data[4]0x60); if (cfg==0x00) raw=raw 3; //9 位分辨率,93.75 ms else if (cfg==0x20) raw=raw 2 ; //10 位分辨率,187.5 ms else if (cfg==0x40) raw=raw 1; //11 位分辨率,375 ms //默認(rèn)為12 位分辨率,750 轉(zhuǎn)換時(shí)間(以毫秒為單位) }攝氏度=(float)raw/16.0; 華氏度=攝氏度* 1.8 + 32.0; Serial.print(' 溫度='); Serial.print(攝氏度); Serial.print(' 攝氏度, ') ; Serial.print(華氏度) ; Serial.println('Fahrenheit');} 程序還是很復(fù)雜,但是有一個(gè)更簡(jiǎn)單的方法。使用DS18B20 庫(kù)DallasTemperature。

#include #include //定義連接到Arduino IO 號(hào)12 的DS18B20 數(shù)據(jù)端口#define ONE_WIRE_BUS 12 //最初連接到單總線(xiàn)的單總線(xiàn)設(shè)備OneWire oneWire(ONE_WIRE_BUS);DallasTemperaturesensors(oneWire); void setup( void) { //設(shè)置串口通信的波特率Serial.begin(9600); Serial.println('達(dá)拉斯溫度IC控制庫(kù)演示'); //初始庫(kù)sensors.begin();}void loop(void ){ Serial .print ('請(qǐng)求溫度.');sensors.requestTemperatures(); //發(fā)送命令獲取溫度Serial.println('DONE'); Serial.print('設(shè)備1 的溫度(索引0) is: '); Serial .println(sensors.getTempCByIndex(0)); }這不是很簡(jiǎn)單嗎,連接上數(shù)碼管、液晶屏或者其他顯示溫度的顯示設(shè)備就可以完成儀表的創(chuàng)建了。


市場(chǎng)分析