DS18B20 单线数字温度传感器,即“一线器件”,其具有独特的优点:

( 1 )采用单总线的接口方式 与微处理器连接时 仅需要一条口线即可实现微处理器与 DS18B20 的双向通讯。 单总线具有经济性好,抗干扰能力强,适合于恶劣环境的现场温度测量,使用方便等优点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。

( 2 )测量温度范围宽,测量精度高 DS18B20 的测量范围为 -55 ℃ ~+ 125 ℃ ; 在 -10~+ 85°C 范围内,精度为 ± 0.5°C 。

( 3 )持多点组网功能 多个 DS18B20 可以并联在惟一的单线上,实现多点测温。

( 4)供电方式灵活 DS18B20 可以通过内部寄生电路从数据线上获取电源。因此,当数据线上的时序满足一定的要求时,可以不接外部电源,从而 使系统结构更趋简单,可靠性更高。

( 5 )测量参数可配置 DS18B20 的测量分辨率可通过程序设定 9~12 位。

DS18B20 具有体积更小、适用电压更宽、更经济、可选更小的封装方式,更宽的电压适用范围,适合于构建自己的经济的测温系统,因此也就被设计者们所青睐。

产品封装

时序图

典型应用电路

寄生供电方式

支持命令集

复位时序

读写时序

具体操作:

1、打开IDE,项目-加载库-管理库,搜索下载安装相应的库,不然程序写好了,编译时会报错;

搜索 18B20 ,看到18B20相关的库,点击 安装好,

打开 文件-示例,第三方库刚安装好的库,找到第一个例子Alarm;

看到除了DallasTemperature.h,还需要另一个库OneWire.h,再按之前步骤,搜索 OneWire 安装即可;ONE_WIRE_BUS 2 意思是 数据口连接开发版引脚pin 2;

2、Arduino 开发版用USB连接电脑,选择对应的开发版和端口,编译上传烧录,

3、接线,必须加电阻,不加电阻检测不到设备;

管脚定义:面朝印字面,左为GND,右为VCC,中间为数字输出引脚(须接上4.7K—10K的上拉电阻)本例4.7K电阻;

BOM表

Arduino Uno *1

18B20温度传感器 *1

4.7K电阻*1

接线

Arduino Uno 18B20温度传感器 颜色

Pin 2 DO 白色

5V VCC 红色

GND GND 黄色

Arduino接线图

4、接好线后,再用USB连接电脑,打开串口监视器查看结果;

Alarm案例代码,可根据需要自行修改:

#include //引用单总线头文件

#include //引用18b20驱动文件

// Data wire is plugged into port 2 on the Arduino

#define ONE_WIRE_BUS 2//定义2脚为数据脚

// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)

OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature.

DallasTemperature sensors(&oneWire);

// arrays to hold device addresses

DeviceAddress insideThermometer, outsideThermometer;

void setup(void)

{

// start serial port

Serial.begin(9600);

Serial.println("Dallas Temperature IC Control Library Demo");

// Start up the library

sensors.begin();//初始化器件

// locate devices on the bus

Serial.print("Found ");

Serial.print(sensors.getDeviceCount(), DEC);//DEC的意思是串口数据以10进制的格式输出

Serial.println(" devices.");

// search for devices on the bus and assign based on an index.

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

Serial.println("Unable to find address for Device 0");

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

Serial.println("Unable to find address for Device 1");

// show the addresses we found on the bus

Serial.print("Device 0 Address: ");

printAddress(insideThermometer);

Serial.println();

Serial.print("Device 0 Alarms: ");

printAlarms(insideThermometer);

Serial.println();

Serial.print("Device 1 Address: ");

printAddress(outsideThermometer);

Serial.println();

Serial.print("Device 1 Alarms: ");

printAlarms(outsideThermometer);

Serial.println();

Serial.println("Setting alarm temps...");

// alarm when temp is higher than 30C

sensors.setHighAlarmTemp(insideThermometer, 30);

// alarm when temp is lower than -10C

sensors.setLowAlarmTemp(insideThermometer, -10);

// alarm when temp is higher than 31C

sensors.setHighAlarmTemp(outsideThermometer, 31);

// alarn when temp is lower than 27C

sensors.setLowAlarmTemp(outsideThermometer, 27);

Serial.print("New Device 0 Alarms: ");

printAlarms(insideThermometer);

Serial.println();

Serial.print("New Device 1 Alarms: ");

printAlarms(outsideThermometer);

Serial.println();

}

// function to print a device address

void printAddress(DeviceAddress deviceAddress)

{

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

{

if (deviceAddress[i] < 16) Serial.print("0");

Serial.print(deviceAddress[i], HEX);

}

}

// function to print the temperature for a device

void printTemperature(DeviceAddress deviceAddress)

{

float tempC = sensors.getTempC(deviceAddress);

Serial.print("Temp C: ");

Serial.print(tempC);

Serial.print(" Temp F: ");

Serial.print(DallasTemperature::toFahrenheit(tempC));

}

void printAlarms(uint8_t deviceAddress[])

{

char temp;

temp = sensors.getHighAlarmTemp(deviceAddress);

Serial.print("High Alarm: ");

Serial.print(temp, DEC);

Serial.print("C/");

Serial.print(DallasTemperature::toFahrenheit(temp));

Serial.print("F | Low Alarm: ");

temp = sensors.getLowAlarmTemp(deviceAddress);

Serial.print(temp, DEC);

Serial.print("C/");

Serial.print(DallasTemperature::toFahrenheit(temp));

Serial.print("F");

}

// main function to print information about a device

void printData(DeviceAddress deviceAddress)

{

Serial.print("Device Address: ");

printAddress(deviceAddress);

Serial.print(" ");

printTemperature(deviceAddress);

Serial.println();

}

void checkAlarm(DeviceAddress deviceAddress)

{

if (sensors.hasAlarm(deviceAddress))

{

Serial.print("ALARM: ");

printData(deviceAddress);

}

}

void loop(void)

{

// call sensors.requestTemperatures() to issue a global temperature

// request to all devices on the bus

Serial.print("Requesting temperatures...");

sensors.requestTemperatures();

Serial.println("DONE");

// Method 1:

// check each address individually for an alarm condition

checkAlarm(insideThermometer);

checkAlarm(outsideThermometer);

/*

// Alternate method:

// Search the bus and iterate through addresses of devices with alarms

// space for the alarm device's address

DeviceAddress alarmAddr;

Serial.println("Searching for alarms...");

// resetAlarmSearch() must be called before calling alarmSearch()

sensors.resetAlarmSearch();

// alarmSearch() returns 0 when there are no devices with alarms

while (sensors.alarmSearch(alarmAddr))

{

Serial.print("ALARM: ");

printData(alarmAddr);

}

*/

}

arduino水温度传感器数字显示_温度传感器DS18B20相关推荐

  1. arduino水温度传感器数字显示_【雕爷学编程】Arduino动手做(5)---热敏温度传感器模块...

    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器模块,依照实践(动手试试)出真知的理念,以学习和交流为目的,这里准备逐 ...

  2. arduino水温度传感器数字显示_创客出品_Arduino智能温度监测器

    产品简介: 本机采用Arduino控制技术,采用LCD显示方式和白色背光,清晰明了.可实时显示当前摄氏温度,可实时语音播报当前摄氏温度,同时记录温度值储存在设备里,方便用户查看.最大设定温度范围为:- ...

  3. arduino水温度传感器数字显示_液晶显示屏应用示例以及程序详解

    在本应用中,我们将向您展示如何在Arduino上使用1.8 TFT显示屏.您将学习如何连接显示屏幕,书写文本,绘制形状以及在屏幕上显示图像. 使用1.8 TFT显示屏 1.8 TFT是具有128 x ...

  4. arduino水温度传感器数字显示_乐创物联物联网架构之硬件层中间件Arduino模拟量...

    0 前言 大家好!我叫乐创物联,我主要是做工业自动化方面和物联网方面的.了解熟悉工业自动化领域的,也开发过物联网相关的产品.我的初衷是做工业物联网的,但这个系统太过于庞大,后续也会自主去学习一下.所以 ...

  5. java温度传感器用法_温度传感器怎么测好坏

    温度传感器也就是负温度系数热敏电阻,温度越高,电阻越小,测量时先看其阻值能不能根据温度的变化而变,再看其变化的阻值是不是在标定的范围之内. 有以下四种方法: 1.若是有表的话,可以将传感器接到表上,将 ...

  6. 【Arduino 连接DHT11 湿度和温度传感器】

    Arduino 连接DHT11 湿度和温度传感器 前言 DHT11 模块引脚 DHT11 模块 DHT11模块电路图 关于 DHT11 传感器的常见问题 DHT11 是如何工作的? DHT11 1-W ...

  7. 实验室装水的容器叫什么_实验室常见水的种类_生命之源水

    实验室常见水的种类_生命之源水 2.实验室常见水的种类 升腾后的凝结--蒸馏水 蒸馏水是指经过蒸馏处理后的水.这种水常用于试验,人们一般都认为蒸馏水是纯净物. 蒸馏水有它独特的功能,它能去除自来水内大 ...

  8. 「雕爷学编程」Arduino动手做(39)——DS18B20温度传感器

    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里 ...

  9. python串口上位机画图_温度传感器+I2C+串口+PC上位机(pyserial)例子

    温度传感器+I2C+串口+PC上位机(pyserial)例子 例子写的有点乱,主要是学习: 温度传感器DS18b20,E2PROM,I2C, 串口读写,PC上位机(pyserial)数据显示 Seri ...

最新文章

  1. IT行业HR:我们很缺人...
  2. bmp调色板颜色信息重复_PASCAL VOC数据集-分割标签索引颜色对照及程序
  3. Android --- Glide加载图片时候调用asBitmap()方法的时候总是报错,点不出来?
  4. YBTOJ:前缀匹配(AC自动机)
  5. 第13章 程序的动态加载和执行(一,引导)
  6. 安全之心:一文读懂可信计算
  7. 如何选指数基金?何时买入指数基金?长投温度如何计算?
  8. STM32工作笔记0016---MDK开发环境安装
  9. git commit 规范校验配置和版本发布配置
  10. Codeforces 994 C - Two Squares
  11. checkbox是否被选中
  12. Spring Aop(八)——advisor标签
  13. vmare下Linux空间扩大教程(chinaitlab)
  14. ubuntu freeradius mysql_ubuntu上安装和配置FreeRadius
  15. 为什么计算机二级查成绩显示验证码错误,我明明输入的是正确的验证码,为何电脑总显示验证码错误呢?...
  16. 2021-04-20论文——视网膜识别技术作为绵羊生物识别方法的评价
  17. Safe Browsing
  18. methodinvocationexception: property ‘driverclassname‘ threw exception; nested exception is java.lang
  19. 2021年安全生产模拟考试(全国特种作业操作证电工作业-电气试验模拟考试题库二)安考星
  20. IFIX数据写入html,iFIX常见问题问答.doc

热门文章

  1. 住进布达拉宫,我是雪域最大的王。流浪在拉萨街头,我是世间最美的情郎。...
  2. 黑盒测试技术(概念等价类划分法详细)——软件质量保证与测试
  3. web端自动化测试框架之selenium4从入门到项目实战-3- unittest使用
  4. 统计单词频率 java_java 统计一个(英文)文本中频率最高的10个单词
  5. 《社交困境》:算法抓住了人类的弱点……
  6. ios图片放大之后如何不模糊_如何放大图片而不模糊
  7. MySQL之索引,执行计划及SQL优化
  8. 企业信息化战略与实施
  9. 计算机瑞士留学经验,瑞士留学你可能会遇到的问题详解
  10. 程序员跳槽B站遭老东家索赔200万,法院判定无需赔偿,竞业限制不应阻碍工程师再就业...