Arduino基础篇(七)

您所在的位置:网站首页 英语六级资料下载网站 Arduino基础篇(七)

Arduino基础篇(七)

2024-06-09 17:47:48| 来源: 网络整理| 查看: 265

温度传感器是指能感受温度并转换成可用输出信号的传感器。按测量方式分为接触式和非接触式,按照传感器材料及电子元件分为热电阻和热电偶两类,按照工作原理分为模拟式和数字式。本篇主要介绍数字温度传感器 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 实验材料 Arduino 控制器 ×1DS18B20模块 ×1USB数据线 ×1 1.3 相关库导入

        本实验用到两个库,分别为 OneWire 和 DallasTemperature ,前者是单总线库,后者是在前者基础上针对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 #include #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°C bool hasAlarm() // 如果温度超过上限和下限警报温度设置时设备处于警报状态,此功能将返回true。 uint8_t getResolution() // 返回全局设备最大分辨率;

补充

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


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭