温度传感器是指能感受温度并转换成可用输出信号的传感器。按测量方式分为接触式和非接触式,按照传感器材料及电子元件分为热电阻和热电偶两类,按照工作原理分为模拟式和数字式。本篇主要介绍数字温度传感器 DS18B20的使用。

1 简介:Why DS18B20?

以往的温度传感器输出的是模拟量,我们还要增加额外的 A/D 和 D/A 芯片进行转换,那么对于 Arduino 外部接口资源并不丰富是一大挑战,同时利用率不高,那么 DS18B20 Temperature Sensor Module 就很好的解决了这个问题,DS18B20数字温度传感器采用单总线模式,和MCU通讯仅需要一个IO,完全适用 Arduino 平台,使用户可轻松地组建传感器网络。

DS18B20使用集成芯片,采用单总线技术,能够有效的减小外界的干扰,提高测量的精度。其输出的是数字信号,接线非常方便,封装成不同方式可以应用于不同场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式。

1.1 技术参数

(1)供电方便。单总线数字温度传感器 DS18B20,外界供电电压范围为 3.0 V 至 5.5 V,无需备用电源。
(2)测量范围宽,精度高。测量温度范围为 -55°C 至 +125℃,华氏相当于是 67°F 到 257°F,-10°C 至 +85°C 范围内精度为 ±0.5°C。
(3)测量参数可配置。温度传感器可编程的分辨率为 9~12 位,用户课通过程序设定。
(4)多点组网。每一个 DS18B20 包含一个独特的序号,多个 DS18B20 可以同时存在于一条总线,实现多点测温。
(5)掉电保护功能。内部含有EEPROM,在系统掉电以后,仍可保存分辨率及报警温度的设定值。

1.2 实验材料

  1. Arduino 控制器 ×1
  2. DS18B20模块 ×1
  3. USB数据线 ×1

1.3 相关库导入

本实验用到两个库,分别为 OneWireDallasTemperature ,前者是单总线库,后者是在前者基础上针对Dallas温度传感器封装的库。可以采用下面两种方法导入:

  • 下载相关库文件,两个库均在GitHub上。下载两个库的zip包后,在Arduino IDE中选择:项目 → 加载库 → 添加一个 .ZIP库 ,两个库添加完成后就可以使用了。
  • 在Arduino IDE中点击 项目 → 加载库 → 管理库 ,查找 [OneWire] 和 [DallasTemperature],选择最新版本进行安装。

1.4 实验步骤

1、搭建电路图

找出 DS18B20 Temperature Sensor Module 的电源线,地线和数据线;电源线,地线分别连到 Arduino 实验板的+5V,GND 端口,数据总线连至数字端口。实验原理图如下图所示。

2、代码测试

本篇主要实现 Arduino 读取温度传感器DS18B20的值,然后计算出当前温度,通过串口发送给PC,PC串口调试助手显示。程序设计流程如下:

测试代码:

/*********************************************************************——————1.开发环境:Arduino IDE————————————————————————————————————————2.使用开发板型号:Arduino UNO————————————————————————————3.传感器类型:DS18B20数字温度传感器———————————————————————
*********************************************************************/
#include <OneWire.h>
#include <DallasTemperature.h>#define ONE_WIRE_BUS 2                      // 定义DS18B20数据口连接UNO的2脚OneWire oneWire(ONE_WIRE_BUS);               // 声明连接在单总线上的单总线设备
DallasTemperature sensors(&oneWire);        // 声明一个传感器对象void setup(){Serial.begin(9600);                        // 设置串口通信波特率sensors.begin();                        // 初始总线
}void loop(){sensors.requestTemperatures();             // 向总线上的设备发送温度转换请求,默认情况下该方法会阻塞Serial.print("此时测量的温度为:");Serial.print(sensors.getTempCByIndex(0));   // 获取索引号0的传感器摄氏温度数据,并串口输出Serial.println(" ℃\n");delay(500);
}

3、效果演示

1.5 相关库说明

1、OneWire库

这是用于1-Wire总线通讯的库,单总线(One-Wire)是Dallas公司的一项特有的总线技术,它采用单根信号线实现数据的双向传输,具有节省I/O口资源、结构简单、便于扩展和维护等优点。One-Wire适用于单个主机的系统,能够控制一个或多个从机设备。OneWire库是针对单总线推出的扩展库,想要了解更多,请阅读:OneWire和DallasTemperature库。

2、DallasTemperature库

这个库在上面那个库之上再封装了一层,方便直接使用DS18B20等系列的温度传感器。DallasTemperature库常用的成员函数:

// 构造函数 DallasTemperature(OneWire*)
DallasTemperature sensor(OneWire*)      // 构造一个温度传感器对象。void begin() // 初始化总线,获取总线上有多少OneWire设备和其中多少为DS18等系列设备,,并为每个传感器设置位分辨率(12位)。void requestTemperatures(void)
/* 向总线上所有设备发送温度转换指令,阻塞模式下该方法将阻塞一定时间;阻塞时间和全局设备最大分辨率以及
是否在阻塞时检查转换完成标志有关,分辨率影响: 9:最大94ms;10:最大188ms;11:最大375ms;其它:最大750ms;*/float getTempFByIndex(uint8_t deviceIndex)
// 功能读取并返回传感器的温度读数,如果发送错误则返回默认值。deviceIndex只是总线上传感器的位置。
如果您仅在总线上使用一个DS18B20,请将其设置为0。uint8_t getDS18Count()       // 返回DS18等系列设备数量。void setResolution(uint8_t newResolution)
// 该功能将DS18B20的内部模数转换器的分辨率设置为9位,10位,11位或12位,分别对应于0.5°C,0.25°C,0.125°C和0.0625°C的增量。bool getWaitForConversion()        // 函数返回waitForConversion标志的值。当您要检查温度转换是否完成时,此功能很有用。setHighAlarmTemp()&setLowAlarmTemp()       // 功能可设置设备的内部高温和低温警报(以摄氏度为单位)。有效范围是-55至125°Cbool hasAlarm()       // 如果温度超过上限和下限警报温度设置时设备处于警报状态,此功能将返回true。uint8_t getResolution()     // 返回全局设备最大分辨率;

补充

  • OneWire库:https://github.com/PaulStoffregen/OneWire
  • DallasTemperature库:https://github.com/milesburton/Arduino-Temperature-Control-Library

Arduino基础篇(七)-- 如何使用DS18B20数字温度传感器(基于OneWire和DallasTemperature库)相关推荐

  1. 在Arduino中使用DS18B20温度传感器(基于OneWire和DallasTemperature库)

    文章目录 目的 快速使用 相关库引入 使用步骤 使用演示 演示一 演示二 演示三 相关库说明 OneWire库 DallasTemperature库 总结 目的 DS18B20是常用的温度传感器,功能 ...

  2. 【ESP32】13.DS18B20温度传感器实验(OneWire和DallasTemperature库)

    上一篇: [ESP32]12.I2C LCD1602液晶显示实验(LiquidCrystal_I2C库) 前言: 先放电路连接图: DS18B20是单总线温度传感器.比较有特色的是该模块仅仅需要一个接 ...

  3. DS18B20数字温度传感器

    目录 一.基础知识 1.基础介绍: 2.DS18B20特点: 3.单总线时序 4.相关操作时序 5.部分ROM指令 二.相关代码 1. 使用步骤(单点总线情况) 2. 代码展示 数字温度传感器你会用了 ...

  4. 基于DS18B20数字温度传感器的温度计设计

    基于DS18B20数字温度传感器的温度计设计 本报告为哈尔滨工业大学电子与信息工程学院大二学期微机原理课程的课设报告.请注意,本文所述代码均在Quartus II 13.0程序内使用汇编语言运行. 一 ...

  5. 【正点原子STM32连载】第三十九章 DS18B20数字温度传感器实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1

    1)实验平台:正点原子MiniPro H750开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=677017430560 3)全套实验源码+手册+视频 ...

  6. 【正点原子MP157连载】第二十六章 DS18B20数字温度传感器实验-摘自【正点原子】STM32MP1 M4裸机CubeIDE开发指南

    1)实验平台:正点原子STM32MP157开发板 2)购买链接:https://item.taobao.com/item.htm?&id=629270721801 3)全套实验源码+手册+视频 ...

  7. 温度传感器的c语言程序,DS18B20数字温度传感器C语言程序实例

    51单片机DS18B20数字温度传感器设计 与C程序 #include #define uchar unsigned char #define uint unsigned int #define DQ ...

  8. DS18B20数字温度传感器及单总线协议规定

    1,DS18B20数字温度传感器的主要特点 通信采用1-Wire接口 每个DS18B20都有唯一的64位序列码储存在板载ROM中 无需外部元件 可从数据线供电,电源范围为3.0V ~ 5.5V. 可测 ...

  9. 【正点原子FPGA连载】第二十七章DS18B20数字温度传感器实验 -摘自【正点原子】新起点之FPGA开发指南_V2.1

    1)实验平台:正点原子新起点V2开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=609758951113 2)全套实验源码+手册+视频下载地址:ht ...

最新文章

  1. “中文版GPT-3”来了:会算术、可续写红楼梦,用64张V100训练了3周
  2. linux服务器性能监控命令汇总(一)
  3. echart 数据视图_关于数据可视化图表的制作,你需要关注的30个小技巧
  4. 页面复杂对象传递参数 开发中遇到的问题
  5. android 点击侧滑代码,代码分析Android实现侧滑菜单
  6. emu8086,汇编程序:屏幕输入字符串,设置寄存器的值
  7. c语言程序坐标反算,坐标正算反算公式讲解
  8. 陶哲轩实分析 5.2 节习题试解
  9. svg 填充图案_设计师:从英雄图案中获取免费的SVG背景图案
  10. BitComet的简介与下载
  11. 终于有人把 单点 登录说清楚了!
  12. 淘宝店铺宝贝转化率该如何提升
  13. ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  14. 浅谈产业界与学术界的合作研究
  15. Anaconda3-5.2.0+PyTorch1.3.0+cuda9.2本地安装教程
  16. 四乙氧基硅烷(TEOS)的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  17. VARIATIONAL AUTOENCODER FOR SPEECH ENHANCEMENT WITH A NOISE-AWARE ENCODER
  18. 《java入门第一季》之面向对象
  19. 5GNR漫谈13:Zadoff –Chu(ZC)序列性质
  20. 商家编号_doc_010简洁的简历模板word格式

热门文章

  1. IBDP tok课程是什么课?怎么拿高分?
  2. k-medoid(k中心点)聚类算法Python实现
  3. 如何提高Bug敏感度
  4. C语言实现房贷计算器
  5. 失无所失的伤感空间日志分享:我会一直这样爱着你,心甘情愿
  6. Android 新手引导添加View的方法
  7. Android 开机画面和wallpaper总结
  8. 生态保护重要性评价之生态脆弱性评价
  9. Blender教程之魔方全自动特效教学
  10. MAX31856 高精度热电偶至数字输出转换器开发笔记