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

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

溫度傳感器DS18B20代碼,溫度傳感器DS18B20實驗

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

作為“一線器件”,DS18B20 單線數(shù)字溫度傳感器具有獨(dú)特的優(yōu)勢:

(1) 當(dāng)使用單總線接口連接微處理器時,只需一根端口線即可實現(xiàn)微處理器與DS18B20 之間的雙向通信。單總線具有經(jīng)濟(jì)性好、抗干擾性強(qiáng)、適合惡劣環(huán)境下的現(xiàn)場測溫、使用方便等優(yōu)點(diǎn),可以讓用戶輕松搭建傳感器網(wǎng)絡(luò)和測量系統(tǒng),可以為傳感器網(wǎng)絡(luò)的建設(shè)引入新的理念。

(2)測量溫度范圍寬,測量精度高DS18B20的測量范圍為-55至+125,在-10至+85范圍內(nèi)精度為0.5。

(3) 支持多點(diǎn)網(wǎng)絡(luò)功能將多個DS18B20并聯(lián)在一根線上,實現(xiàn)多點(diǎn)測溫。

(4)靈活的供電方案DS18B20可以通過內(nèi)部寄生電路從數(shù)據(jù)線獲取電源。因此,如果數(shù)據(jù)線時序滿足一定要求,則無需連接外部電源,使得系統(tǒng)配置更簡單、更可靠。

(5) 測量參數(shù)可設(shè)置DS18B20 的測量分辨率可通過程序設(shè)置為9 至12 位。

DS18B20的小尺寸、擴(kuò)展的電壓范圍、提高的經(jīng)濟(jì)性、可選的小封裝和擴(kuò)展的電壓范圍使其適合構(gòu)建您自己的經(jīng)濟(jì)型溫度測量系統(tǒng),使其成為設(shè)計人員的最愛,實屬難得。

產(chǎn)品包裝

時序圖

典型應(yīng)用電路

寄生供電方式

支持命令集

復(fù)位時序

讀寫時序

具體操作:

1. 打開IDE,進(jìn)入Project > Load Libraries > Manage Libraries查找、下載并安裝對應(yīng)的庫。否則程序創(chuàng)建后編譯時會報錯。

搜索18B20,瀏覽到18B20相關(guān)庫,然后單擊安裝。

打開剛剛安裝第三方庫的File-Examples,找到第一個例子Alarm。

驗證除了DallasTemperature.h 之外,您還需要另一個庫OneWire.h,然后按照前面的步驟查找并安裝OneWire。 ONE_WIRE_BUS 2 表示開發(fā)版本中數(shù)據(jù)端口連接到引腳2。

2、將Arduino開發(fā)版通過USB連接到電腦,選擇對應(yīng)的開發(fā)版本和端口,編譯、上傳、寫入。

3、接線時需要加電阻,沒有電阻就無法檢測到設(shè)備。

引腳定義:面向印刷面,左側(cè)為GND,右側(cè)為VCC,中間為數(shù)字輸出引腳(必須接4.7K至10K上拉電阻)。

物料清單表

Arduino Uno*1

18B20溫度傳感器1

4.7K電阻*1

接線

Arduino Uno ------ 18B20 溫度傳感器顏色

引腳2 ------ DO 白色

5V ------ VCC 紅色

GND ------ GND 黃色

Arduino接線圖

4. 連接線后,通過USB 連接計算機(jī)并打開串行監(jiān)視器以查看結(jié)果。

報警案例代碼。您可以根據(jù)您的需要更改它。

#include //引用單總線頭文件

#include //引用18b20驅(qū)動文件

//數(shù)據(jù)線連接到Arduino的2號端口

#define ONE_WIRE_BUS 2//定義引腳2為數(shù)據(jù)引腳

//設(shè)置OneWire 實例以與任何OneWire 設(shè)備通信(不僅僅是Maxim/Dallas 溫度IC)

OneWire oneWire(ONE_WIRE_BUS);

//將oneWire 引用傳遞給達(dá)拉斯溫度。

達(dá)拉斯溫度傳感器(oneWire);

//保存設(shè)備地址的數(shù)組

設(shè)備地址內(nèi)部溫度計、外部溫度計。

禁用設(shè)置(禁用)

{

//啟動串口

串行.開始(9600);

Serial.println(\'達(dá)拉斯溫度IC控制庫演示\');

//啟動庫

sensors.begin();//初始化設(shè)備

//查找總線上的設(shè)備

Serial.print(\'找到\');

Serial.print(sensors.getDeviceCount(), DEC);//DEC表示串口數(shù)據(jù)以十進(jìn)制格式打印

Serial.println(\'設(shè)備。\');

//在總線上查找設(shè)備并根據(jù)其索引對其進(jìn)行分配。

if (!sensors.getAddress(insideThermometer, 0))

Serial.println(\'未找到設(shè)備0地址\');

if (!sensors.getAddress(outsideThermometer, 1))

Serial.println(\'未找到設(shè)備1地址\');

//顯示總線上找到的地址

Serial.print(\'設(shè)備0地址:\');

printAddress(溫度計);

串行.println();

Serial.print(\'設(shè)備0 報警: \');

printAlarms(溫度計);

串行.println();

Serial.print(\'設(shè)備1地址:\');

printAddress(溫度計之外);

串行.println();

Serial.print(\'設(shè)備1報警:\');

printAlarms(外部溫度計);

串行.println();

Serial.println(\'設(shè)置報警溫度.\');

//溫度超過30時報警

sensors.setHighAlarmTemp(內(nèi)部溫度計, 30);

//溫度低于-10時發(fā)出警報

sensors.setLowAlarmTemp(內(nèi)部溫度計,-10);

//溫度超過31則發(fā)出警報

傳感器.setHighAlarmTemp(outsideThermometer, 31);

//如果溫度低于27則發(fā)送警報

傳感器.setLowAlarmTemp(outsideThermometer, 27);

Serial.print(\'新設(shè)備0報警:\');

printAlarms(溫度計);

串行.println();

Serial.print(\'新設(shè)備1報警:\');

printAlarms(外部溫度計);

串行.println();

}

//輸出設(shè)備地址的函數(shù)

void printAddress(設(shè)備地址設(shè)備地址)

{

for (uint8_t i=0; i 8; i++)

{

if (設(shè)備地址[i] 16) Serial.print(\'0\');

Serial.print(設(shè)備地址[i], HEX);

}

}

//輸出設(shè)備溫度的函數(shù)

void printTemperature(設(shè)備地址設(shè)備地址)

{

float tempC=Sensors.getTempC(deviceAddress);

Serial.print(\'臨時C: \');

串行打。╰empC);

Serial.print(\'溫度F: \');

Serial.print(達(dá)拉斯溫度:to華氏度(tempC));

}

void printAlarms(uint8_t 設(shè)備地址[])

{

焦化溫度。

temp=Sensors.getHighAlarmTemp(deviceAddress);

Serial.print(\'高位警報:\');

Serial.print(temp, DEC);

Serial.print(\'C/\');

Serial.print(達(dá)拉斯溫度:to華氏度(溫度));

Serial.print(\'F | 低警報: \');

temp=Sensors.getLowAlarmTemp(deviceAddress);

Serial.print(temp, DEC);

Serial.print(\'C/\');

Serial.print(達(dá)拉斯溫度:to華氏度(溫度));

Serial.print(\'F\');

}

//打印設(shè)備信息的主函數(shù)

void printData(設(shè)備地址設(shè)備地址)

{

Serial.print(\'設(shè)備地址:\');

printAddress(設(shè)備地址);

串口.print(\' \');

printTemperature(設(shè)備地址);

串行.println();

}

void checkAlarm(設(shè)備地址設(shè)備地址)

{

if (sensors.hasAlarm(deviceAddress))

{

Serial.print(\'ALARM: \');

printData(設(shè)備地址);

}

}

虛空循環(huán)(虛空)

{

//調(diào)用sensors.requestTemperatures()發(fā)出地球溫度

//請求總線上的所有設(shè)備

Serial.print(\'請求溫度.\');

傳感器.requestTemperatures();

Serial.println(\'完成\');

//方法1:

//分別檢查每個地址的報警情況

checkAlarm(溫度計);

checkAlarm(外部溫度計);

/*

//替代方法:

//搜索總線并迭代有警報的設(shè)備的地址。

//報警設(shè)備地址空間

設(shè)備地址報警地址;

Serial.println(\'正在搜索警報.\');

//調(diào)用alarm search()之前必須先調(diào)用重置alarm search()

傳感器.resetAlarmSearch();

//如果沒有設(shè)備有鬧鐘,則alarmSearch()返回0

while (sensors.alarmSearch(alarmAddr))

{

Serial.print(\'ALARM: \');

打印數(shù)據(jù)(alarmAddr);

}

*/

}

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

熱門搜索

相關(guān)文章

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

溫度傳感器DS18B20代碼,溫度傳感器DS18B20實驗

chanong

|

作為“一線器件”,DS18B20 單線數(shù)字溫度傳感器具有獨(dú)特的優(yōu)勢:

(1) 當(dāng)使用單總線接口連接微處理器時,只需一根端口線即可實現(xiàn)微處理器與DS18B20 之間的雙向通信。單總線具有經(jīng)濟(jì)性好、抗干擾性強(qiáng)、適合惡劣環(huán)境下的現(xiàn)場測溫、使用方便等優(yōu)點(diǎn),可以讓用戶輕松搭建傳感器網(wǎng)絡(luò)和測量系統(tǒng),可以為傳感器網(wǎng)絡(luò)的建設(shè)引入新的理念。

(2)測量溫度范圍寬,測量精度高DS18B20的測量范圍為-55至+125,在-10至+85范圍內(nèi)精度為0.5。

(3) 支持多點(diǎn)網(wǎng)絡(luò)功能將多個DS18B20并聯(lián)在一根線上,實現(xiàn)多點(diǎn)測溫。

(4)靈活的供電方案DS18B20可以通過內(nèi)部寄生電路從數(shù)據(jù)線獲取電源。因此,如果數(shù)據(jù)線時序滿足一定要求,則無需連接外部電源,使得系統(tǒng)配置更簡單、更可靠。

(5) 測量參數(shù)可設(shè)置DS18B20 的測量分辨率可通過程序設(shè)置為9 至12 位。

DS18B20的小尺寸、擴(kuò)展的電壓范圍、提高的經(jīng)濟(jì)性、可選的小封裝和擴(kuò)展的電壓范圍使其適合構(gòu)建您自己的經(jīng)濟(jì)型溫度測量系統(tǒng),使其成為設(shè)計人員的最愛,實屬難得。

產(chǎn)品包裝

時序圖

典型應(yīng)用電路

寄生供電方式

支持命令集

復(fù)位時序

讀寫時序

具體操作:

1. 打開IDE,進(jìn)入Project > Load Libraries > Manage Libraries查找、下載并安裝對應(yīng)的庫。否則程序創(chuàng)建后編譯時會報錯。

搜索18B20,瀏覽到18B20相關(guān)庫,然后單擊安裝。

打開剛剛安裝第三方庫的File-Examples,找到第一個例子Alarm。

驗證除了DallasTemperature.h 之外,您還需要另一個庫OneWire.h,然后按照前面的步驟查找并安裝OneWire。 ONE_WIRE_BUS 2 表示開發(fā)版本中數(shù)據(jù)端口連接到引腳2。

2、將Arduino開發(fā)版通過USB連接到電腦,選擇對應(yīng)的開發(fā)版本和端口,編譯、上傳、寫入。

3、接線時需要加電阻,沒有電阻就無法檢測到設(shè)備。

引腳定義:面向印刷面,左側(cè)為GND,右側(cè)為VCC,中間為數(shù)字輸出引腳(必須接4.7K至10K上拉電阻)。

物料清單表

Arduino Uno*1

18B20溫度傳感器1

4.7K電阻*1

接線

Arduino Uno ------ 18B20 溫度傳感器顏色

引腳2 ------ DO 白色

5V ------ VCC 紅色

GND ------ GND 黃色

Arduino接線圖

4. 連接線后,通過USB 連接計算機(jī)并打開串行監(jiān)視器以查看結(jié)果。

報警案例代碼。您可以根據(jù)您的需要更改它。

#include //引用單總線頭文件

#include //引用18b20驅(qū)動文件

//數(shù)據(jù)線連接到Arduino的2號端口

#define ONE_WIRE_BUS 2//定義引腳2為數(shù)據(jù)引腳

//設(shè)置OneWire 實例以與任何OneWire 設(shè)備通信(不僅僅是Maxim/Dallas 溫度IC)

OneWire oneWire(ONE_WIRE_BUS);

//將oneWire 引用傳遞給達(dá)拉斯溫度。

達(dá)拉斯溫度傳感器(oneWire);

//保存設(shè)備地址的數(shù)組

設(shè)備地址內(nèi)部溫度計、外部溫度計。

禁用設(shè)置(禁用)

{

//啟動串口

串行.開始(9600);

Serial.println(\'達(dá)拉斯溫度IC控制庫演示\');

//啟動庫

sensors.begin();//初始化設(shè)備

//查找總線上的設(shè)備

Serial.print(\'找到\');

Serial.print(sensors.getDeviceCount(), DEC);//DEC表示串口數(shù)據(jù)以十進(jìn)制格式打印

Serial.println(\'設(shè)備。\');

//在總線上查找設(shè)備并根據(jù)其索引對其進(jìn)行分配。

if (!sensors.getAddress(insideThermometer, 0))

Serial.println(\'未找到設(shè)備0地址\');

if (!sensors.getAddress(outsideThermometer, 1))

Serial.println(\'未找到設(shè)備1地址\');

//顯示總線上找到的地址

Serial.print(\'設(shè)備0地址:\');

printAddress(溫度計);

串行.println();

Serial.print(\'設(shè)備0 報警: \');

printAlarms(溫度計);

串行.println();

Serial.print(\'設(shè)備1地址:\');

printAddress(溫度計之外);

串行.println();

Serial.print(\'設(shè)備1報警:\');

printAlarms(外部溫度計);

串行.println();

Serial.println(\'設(shè)置報警溫度.\');

//溫度超過30時報警

sensors.setHighAlarmTemp(內(nèi)部溫度計, 30);

//溫度低于-10時發(fā)出警報

sensors.setLowAlarmTemp(內(nèi)部溫度計,-10);

//溫度超過31則發(fā)出警報

傳感器.setHighAlarmTemp(outsideThermometer, 31);

//如果溫度低于27則發(fā)送警報

傳感器.setLowAlarmTemp(outsideThermometer, 27);

Serial.print(\'新設(shè)備0報警:\');

printAlarms(溫度計);

串行.println();

Serial.print(\'新設(shè)備1報警:\');

printAlarms(外部溫度計);

串行.println();

}

//輸出設(shè)備地址的函數(shù)

void printAddress(設(shè)備地址設(shè)備地址)

{

for (uint8_t i=0; i 8; i++)

{

if (設(shè)備地址[i] 16) Serial.print(\'0\');

Serial.print(設(shè)備地址[i], HEX);

}

}

//輸出設(shè)備溫度的函數(shù)

void printTemperature(設(shè)備地址設(shè)備地址)

{

float tempC=Sensors.getTempC(deviceAddress);

Serial.print(\'臨時C: \');

串行打印(tempC);

Serial.print(\'溫度F: \');

Serial.print(達(dá)拉斯溫度:to華氏度(tempC));

}

void printAlarms(uint8_t 設(shè)備地址[])

{

焦化溫度。

temp=Sensors.getHighAlarmTemp(deviceAddress);

Serial.print(\'高位警報:\');

Serial.print(temp, DEC);

Serial.print(\'C/\');

Serial.print(達(dá)拉斯溫度:to華氏度(溫度));

Serial.print(\'F | 低警報: \');

temp=Sensors.getLowAlarmTemp(deviceAddress);

Serial.print(temp, DEC);

Serial.print(\'C/\');

Serial.print(達(dá)拉斯溫度:to華氏度(溫度));

Serial.print(\'F\');

}

//打印設(shè)備信息的主函數(shù)

void printData(設(shè)備地址設(shè)備地址)

{

Serial.print(\'設(shè)備地址:\');

printAddress(設(shè)備地址);

串口.print(\' \');

printTemperature(設(shè)備地址);

串行.println();

}

void checkAlarm(設(shè)備地址設(shè)備地址)

{

if (sensors.hasAlarm(deviceAddress))

{

Serial.print(\'ALARM: \');

printData(設(shè)備地址);

}

}

虛空循環(huán)(虛空)

{

//調(diào)用sensors.requestTemperatures()發(fā)出地球溫度

//請求總線上的所有設(shè)備

Serial.print(\'請求溫度.\');

傳感器.requestTemperatures();

Serial.println(\'完成\');

//方法1:

//分別檢查每個地址的報警情況

checkAlarm(溫度計);

checkAlarm(外部溫度計);

/*

//替代方法:

//搜索總線并迭代有警報的設(shè)備的地址。

//報警設(shè)備地址空間

設(shè)備地址報警地址;

Serial.println(\'正在搜索警報.\');

//調(diào)用alarm search()之前必須先調(diào)用重置alarm search()

傳感器.resetAlarmSearch();

//如果沒有設(shè)備有鬧鐘,則alarmSearch()返回0

while (sensors.alarmSearch(alarmAddr))

{

Serial.print(\'ALARM: \');

打印數(shù)據(jù)(alarmAddr);

}

*/

}


市場分析