单总线两个DS18B20温度传感器温度读取
数字温度传感器DS18B20C-25页说明
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※DS1B820单总线数字温度计※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※一、概述1.1一般说明DS18B20数字温度计提供9至12位(可设置)温度读数,指示器件的温度。
信息经过单线接口送入DS18B20或从DS18B20送出,因此从中央处理器到DS18B20仅需连接一条线(另加上地线)。
读、写和完成温度变换所需的电源可以由数据线本身提供,而不需要外部电源。
因为每一个DS18B20有唯一的系列号(silicon serial number),因此多个DS18B20可以连接在于同一条单线总线上。
这允许在许多不同的地方放置DS18B20温度传感器。
此特性可广泛地应用于HVAC环境控制,建筑物、设备或机械内的温度检测,以及过程监视和控制中的温度检测。
1.2特性·独特的单线接口,只需1个接口引脚即可通信·多点并接能力使分布式温度检测的应用得以简化·不需要外部元件·可用数据线供电,若外加电源,范围3V至5.5V·不需备份电源·测量范围从-55℃至+125℃,对应的华氏温度范围是-67℉至257℉。
·在-10℃至+85℃内的准确度为±0.5℃。
·可编程设定9至12位的温度分辨率·在750毫秒(最大值)内把温度变换为12位数字值·用户可设置,非易失性的温度告警值·告警搜索命令可在众多的器件中,快速识别出超过设定的“告警温度”值的器件。
·应用范围包括恒温控制,工业系统,消费类产品,温度计或任何热敏系统25/11.3引脚排列1.4详细的引脚说明TSOC8脚SOIC TO92符说明151GND地线242DQ数据输入/输出引脚。
漏极开路结构,详见“寄生电源”一节。
DS18B20智能温度控制器(附软件程序)
DS18B20智能温度控制器DALLAS最新单线数字温度传感器DS18B20简介新的“一线器件”体积更小、适用电压更宽、更经济 Dallas 半导体公司的数字化温度传感器DS1820是世界上第一片支持“一线总线”接口的温度传感器。
一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。
DS18B20、 DS1822 “一线总线”数字化温度传感器同DS1820一样,DS18B20也支持“一线总线”接口,测量温度范围为 -55°C~+125°C,在-10~+85°C范围内,精度为±0.5°C。
DS1822的精度较差为± 2°C 。
现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。
适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。
与前一代产品不同,新的产品支持3V~5.5V 的电压范围,使系统设计更灵活、方便。
而且新一代产品更便宜,体积更小。
DS18B20、 DS1822 的特性 DS18B20可以程序设定9~12位的分辨率,精度为±0.5°C。
可选更小的封装方式,更宽的电压适用范围。
分辨率设定,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。
DS18B20的性能是新一代产品中最好的!性能价格比也非常出色! DS1822与 DS18B20软件兼容,是DS18B20的简化版本。
省略了存储用户定义报警温度、分辨率参数的EEPROM,精度降低为±2°C,适用于对性能要求不高,成本控制严格的应用,是经济型产品。
继“一线总线”的早期产品后,DS1820开辟了温度传感器技术的新概念。
DS18B20和DS1822使电压、特性及封装有更多的选择,让我们可以构建适合自己的经济的测温系统。
DS18B20的内部结构DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
DS18B20数字温度传感器介绍
DS18B20数字温度传感器介绍[日期:2011-02-22 ] [来源:本站编辑作者:佚名] [字体:大中小] (投递新闻)目前常用的微机与外设之间进行的数据通信的串行总线主要有I 2C 总线,SPI 总线等。
其中I 2C 总线以同步串行 2 线方式进行通信(一条时钟线,一条数据线),SPI 总线则以同步串行3 线方式进行通信(一条时钟线,一条数据输入线,一条数据输出线)。
这些总线至少需要两条或两条以上的信号线。
而单总线(1-wire bus ),采用单根信号线,既可传输数据,而且数据传输是双向的,CPU 只需一根端口线就能与诸多单总线器件通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。
因而,这种单总线技术具有线路简单,硬件开销少,成本低廉,软件设计简单,便于总线扩展和维护。
同时,基于单总线技术能较好地解决传统识别器普遍存在的携带不便,易损坏,易受腐馈,易受电磁干扰等不足,因此,单总线具有广阔的应用前景,是值得关注的一个发展领域。
单总线即只有一根数据线,系统中的数据交换,控制都由这根线完成。
主机或从机通过一个漏极开路或三态端口连至数据线,以允许设备在不发送数据时能够释放总线,而让其它设备使用总线。
单总线通常要求外接一个约为 4.7K 的上拉电阻,这样,当总线闲置时其状态为高电平。
DS18B20 数字式温度传感器,与传统的热敏电阻有所不同的是,使用集成芯片,采用单总线技术,其能够有效的减小外界的干扰,提高测量的精度,同时,它可以直接将被测温度转化成串行数字信号供微机处理,接口简单,使数据传输和处理简单化。
部分功能电路的集成,使总体硬件设计更简洁,能有效地降低成本,搭建电路和焊接电路时更快,调试也更方便简单化,这也就缩短了开发的周期。
DS18B20 单线数字温度传感器,即“一线器件”,其具有独特的优点:(1 )采用单总线的接口方式与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20 的双向通讯。
ds18b20工作原理
ds18b20工作原理
DS18B20是一种数字温度传感器,它基于One-Wire总线协议进行通信。
其工作原理是利用温度对半导体器件电阻值的变化进行测量。
在DS18B20内部,有一个温度传感器、一个模数转换器和一个存储器。
在测量过程中,DS18B20内部的温度传感器会不断感知环境温度,并将温度转换为数字信号。
然后,模数转换器将数字信号转换成相应的数字代码,代表温度值。
这些数字代码通过One-Wire总线协议被传送给主控设备(如微控制器或电脑)进行处理。
DS18B20的One-Wire总线协议是一种串行通信协议,它使用单根数据线进行数据传输。
通信过程中,主控设备产生一个复位脉冲,然后从DS18B20传感器接收到ROM编号(唯一标识符)以便进行身份验证。
接下来,主控设备发送命令给传感器,比如读取温度值。
DS18B20会将温度值的数字代码通过数据线传输给主控设备,主控设备解析代码并将其转换为实际温度值。
DS18B20还具有一定的存储能力,在开启存储功能后,它可以将温度值存储在内部的存储器中。
这样,即使主控设备没有及时读取温度值,DS18B20也能够保存最新的温度数据。
总的来说,DS18B20通过测量半导体器件电阻值的变化来获取环境温度,并通过One-Wire总线协议将温度值传输给主控设备。
它的工作原理简单而可靠,在许多应用中被广泛使用。
温度传感器ds18b20实验报告
温度传感器ds18b20实验报告温度传感器DS18B20实验报告引言:温度传感器是一种用于测量环境温度的设备,它在许多领域都有广泛的应用,如气象学、工业控制、冷链物流等。
本实验报告将介绍DS18B20温度传感器的原理、实验装置和实验结果,并对其性能进行评估。
一、实验原理DS18B20温度传感器是一种数字温度传感器,采用单总线接口进行通信。
它采用了最新的数字温度传感器技术,具有高精度、低功耗、抗干扰等特点。
其工作原理是利用温度对半导体材料电阻值的影响,通过测量电阻值的变化来确定温度。
二、实验装置本实验使用的实验装置包括DS18B20温度传感器、Arduino开发板、杜邦线和计算机。
Arduino开发板用于读取传感器的温度数据,并通过串口将数据传输到计算机上进行处理和显示。
三、实验步骤1. 连接电路:将DS18B20温度传感器的VCC引脚连接到Arduino开发板的5V 引脚,GND引脚连接到GND引脚,DQ引脚连接到Arduino开发板的数字引脚2。
2. 编写代码:使用Arduino开发环境编写代码,通过OneWire库和DallasTemperature库读取DS18B20传感器的温度数据。
3. 上传代码:将编写好的代码上传到Arduino开发板上。
4. 监测温度:打开串口监视器,可以看到DS18B20传感器实时的温度数据。
四、实验结果在实验过程中,我们将DS18B20温度传感器放置在不同的环境中,记录了其测得的温度数据。
实验结果显示,DS18B20温度传感器具有较高的精度和稳定性,能够准确地测量环境温度。
五、实验评估本实验评估了DS18B20温度传感器的性能,包括精度、响应时间和抗干扰能力。
实验结果表明,DS18B20温度传感器具有较高的精度,能够在0.5℃的误差范围内测量温度。
响应时间较快,能够在毫秒级别内完成温度测量。
同时,DS18B20温度传感器具有较好的抗干扰能力,能够在干扰环境下保持稳定的测量结果。
ds18b20温度传感器工作原理
ds18b20温度传感器工作原理
DS18B20是一种数字温度传感器,它通过一根单一的数据总线进行工作。
传感器内部有一个精确的温度传感器和数字转换器。
以下是DS18B20温度传感器的工作原理:
1. 单线总线通信:DS18B20传感器使用单一的数据总线进行通信。
该总线不仅用于传输数据,还用于为传感器提供电源。
通过这种方式,可以减少传感器的引脚数量,使其适用于各种微控制器和嵌入式系统。
2. 温度测量:传感器内部有一个温度传感器,该传感器可以测量实时环境温度。
它使用精确的电阻和温度-电压转换技术,以确保温度测量的准确性和稳定性。
3. 数据转换:DS18B20传感器将温度测量结果转换为数字信号。
传感器内部的模数转换器将模拟信号转换为数字码,以便于传感器与主控制器之间的通信和处理。
4. ROM存储器:每个DS18B20传感器都有一个唯一的64位ROM存储器。
这个ROM存储器包含传感器的唯一序列号、制造商信息和其他相关信息。
这些信息可以用来识别传感器并设置其工作参数。
5. 通信协议:DS18B20传感器使用一种称为1-Wire协议的通信协议与主控制器进行通信。
该协议在传感器和主控制器之间建立一种基于时间的序列通信方式,主控制器上的软件可以通过这种协议与传感器进行数据传输、配置和控制。
总而言之,DS18B20温度传感器通过单一的数据总线进行通信,并使用内部的温度传感器和数字转换器测量环境温度。
它通过ROM存储器保存唯一的序列号和其他信息,使用1-Wire 协议与主控制器进行通信。
单总线温度传感器DS18B20
单总线温度传感器DS18B20DS18B20是DALLAS公司生产的单总线式数字温度传感器,它特别适用于构成多点温度测控系统,可直接将温度转化成串行数字信号(提供9位二进制数字)给单片机处理,且在同一总线上可以挂接多个传感器芯片。
它具有3引脚TO-92小体积封装形式,温度测量范围为-55℃~+125℃,可编程为9位~12位A/D转换精度,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出,其工作电源既可在远端引入,也可采用寄生电源方式产生,多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与多个DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。
以上特点使DS18B20非常适用于远距离多点温度检测系统。
⑴ DS18B20外形及引脚说明外形及引脚如图2所示:图2 管脚排列图在TO-92和SO-8的封装中引脚有所不同,具体差别请查阅PDF手册,在TO-92封装中引脚分配如下:1(GND):地2(DQ):单线运用的数据输入输出引脚3(VDD):可选的电源引脚⑵ DS18B20工作过程及时序DS18B20内部的低温度系数振荡器是一个振荡频率随温度变化很小的振荡器,为计数器1提供一频率稳定的计数脉冲。
高温度系数振荡器是一个振荡频率对温度很敏感的振荡器,为计数器2提供一个频率随温度变化的计数脉冲。
初始时,温度寄存器被预置成-55℃,每当计数器1从预置数开始减计数到0时,温度寄存器中寄存的温度值就增加1℃,这个过程重复进行,直到计数器2计数到0时便停止。
初始时,计数器1预置的是与-55℃相对应的一个预置值。
以后计数器1每一个循环的预置数都由斜率累加器提供。
为了补偿振荡器温度特性的非线性性,斜率累加器提供的预置数也随温度相应变化。
计数器1的预置数也就是在给定温度处使温度寄存器寄存值增加1℃计数器所需要的计数个数。
DS18B20内部的比较器以四舍五入的量化方式确定温度寄存器的最低有效位。
DS18B20的工作原理
DS18B20的工作原理DS18B20是一种数字温度传感器,它采用单总线接口进行通信,并使用独特的1-Wire协议进行数据传输。
DS18B20的工作原理可以简单概括为温度测量和数据传输两个主要过程。
1. 温度测量过程:DS18B20内部集成了一个温度传感器,它通过测量半导体材料的电阻值来获取环境温度。
在工作时,DS18B20会将电源电压应用到传感器上,并通过内部电路将传感器的电阻值转换为数字信号。
具体的温度测量过程如下:1.1 上电初始化:当DS18B20接收到电源电压时,它会进行一系列的初始化操作,包括复位传感器、读取存储在ROM中的唯一地址等。
1.2 温度转换:DS18B20内部的温度传感器会将环境温度转换为电阻值。
这个转换过程是通过将电源电压应用到传感器上,然后测量传感器两端的电压来实现的。
传感器的电阻值与环境温度之间存在一种特定的关系,DS18B20会根据这个关系将电阻值转换为温度值。
1.3 数字信号输出:经过温度转换后,DS18B20会将测量到的温度值以数字信号的形式输出。
它使用独特的1-Wire协议将温度数据传输到控制器或其他外部设备。
2. 数据传输过程:DS18B20使用1-Wire协议进行数据传输,这种协议只需要一个数据线来实现通信。
数据传输过程如下:2.1 主设备发送指令:主设备(通常是控制器)向DS18B20发送指令,指令可以是温度转换命令、读取温度值命令等。
2.2 DS18B20接收指令:DS18B20接收到主设备发送的指令后,会进行相应的处理。
例如,如果是温度转换命令,DS18B20会启动温度转换过程。
2.3 DS18B20发送应答信号:DS18B20在接收到指令后,会向主设备发送一个应答信号,表示已经准备好进行数据传输。
2.4 DS18B20发送数据:DS18B20会将温度数据以1-Wire协议的格式发送给主设备。
数据传输过程中,DS18B20会按照一定的时序将数据位发送给主设备。
基于单总线器件DS18B20的温度测量仪
基于单总线器件DS18B20的温度测量仪廖琪梅,韩彬,杨文昭,屈景辉时间:2008-08-281 引言许多情况下需要测量温度参数。
通常测温系统的主要器件是热敏电阻,由于它体积小、重复性好、测量方法简单,所以在测温系统中广泛应用。
但采用热敏电阻的测温系统需要A/D转换,而且测量精度不高。
本文采用Dallas公司生产的一种新型温度传感器DS18B20,它集温度测量、A/D转换于一体,其测量范围宽(-55℃~+125℃),精度高(0.0625℃),DS18B20是一款具有单总线结构的器件。
由DS18B20组建的温度测量单元体积小,便于携带、安装。
同时,DS18B20的输出为数字量,可以直接与单片机连接,无需后级A/D转换,控制简单。
由于DS18B20具有单总线特性,便于扩展,可在一根总线上挂接多个DS18B20来组建温度测量网络。
2 硬件电路设计本系统设计采用 Mega8单片机控制DS18B20,由显示电路显示当前温度。
其系统硬件电路如图1所示。
Atmel的Mega8单片机采用RTSC(精简指令集),指令执行速度快,内嵌8 KB Flash程序存储器,支持ISP(在系统编程),片内含有大容量的RAM 区,具有SPT总线、I2C总线、ADC功能。
Mega8单片机体积小,功能强,具有PDIP-28封装及TQFP封装。
DS18B20采用单总线方式和Mega8单片机相连,即DS18B20的1引脚和3引脚接地,2引脚通过一只240 Ω的电阻接至Mega8的PB7引脚,同时将PB7引脚采用一只4.7 kΩ的电阻上拉至VCC。
单总线即只用一根信号线,既供电,又传输数据,而且数据传输是双向的,单总线具有"线与"功能,连接方便,便于扩展。
由于DS18B20采用 CMOS技术,耗电量很小,从总线上"偷"一点电保存到DS18B20内的电容中就可供给器件工作。
串联240 Ω电阻的目的是防止有缺陷的程序损坏DS18B20,如果没有正确地采用OC(集电极开路)或OD(漏极开路)结构驱动DS18B20,而是选择推挽方式,DS18B20可能被烧坏。
DS18B20的工作原理
DS18B20的工作原理DS18B20是一种数字温度传感器,它基于一种称为“单总线”的通信协议来与微控制器进行通信。
DS18B20能够以高精度和高分辨率测量环境温度,并通过数字信号输出温度值。
DS18B20的工作原理如下:1. 温度传感器:DS18B20采用了一个精确的温度传感器,该传感器基于温度对半导体材料的电气特性的影响进行测量。
传感器内部包含一个电阻,其电阻值会随温度的变化而变化。
2. 单总线通信:DS18B20使用单总线通信协议与微控制器进行通信。
单总线是一种串行通信协议,只需要使用一个引脚即可实现数据传输。
DS18B20通过该引脚接收来自微控制器的指令,并将温度数据以数字信号的形式发送回微控制器。
3. ROM存储器:DS18B20内部包含一个唯一的64位ROM存储器,用于存储传感器的唯一标识符和其他相关信息。
这个唯一标识符可以用于区分多个DS18B20传感器。
4. 温度转换:DS18B20的温度转换过程分为三个步骤:启动转换、温度转换和读取温度。
首先,微控制器向DS18B20发送启动转换的指令。
然后,DS18B20开始测量环境温度,并将其转换为数字信号。
最后,微控制器通过单总线通信协议从DS18B20读取温度值。
5. 分辨率和精度:DS18B20具有可调节的分辨率和精度。
它可以以9位、10位、11位或12位的分辨率输出温度值,分别对应0.5°C、0.25°C、0.125°C和0.0625°C的精度。
通过调整分辨率,可以根据应用需求平衡精度和响应时间。
6. 供电和引脚:DS18B20可以通过单总线引脚从微控制器获得供电,也可以通过外部电源供电。
除了单总线引脚,DS18B20还包含用于供电和地线连接的引脚。
总结:DS18B20是一种数字温度传感器,通过单总线通信协议与微控制器进行通信。
它利用温度对半导体材料的电气特性的影响进行测量,具有高精度和高分辨率。
DS18B20温度传感器学习
TL=read18B20byte(); // LSB 连续读,先读去地位再读取高位数据 TH=read18B20byte(); // MSB 第三步 温度数据的处理,提取符号位和数据位 数据的格式如下图,读取的两个字节中,高字节的二进制中的前面 5 位是符号位,如果测 得的温度大于 0,这 5 位为 0,只要将测到的数值乘于 0.0625 即可得到实际温度;如果温度小 于 0,这 5 位为 1,测到的数值需要取反加 1 再乘于 0.0625 即可得到实际温度。所以程序中当 高字节大于 7(0000 0111)时,符号位为负,否则为正。最后返回算出的温度值。
在 DS18B20 测温程序设计中,向 DS18B20 发出温度转换命令后,程序总要等待 DS18B20 的 返回信号,一旦某个 DS18B20 接触不好或断线,当程序读该 DS18B20 时,将没有返回信号,程 序进入死循环。这一点在进行 DS18B20 硬件连接和软件设计时也要给予一定的重视。
测温电缆线建议采用屏蔽 4 芯双绞线,其中一对线接地线与信号线,另一组接 VCC 和地线, 屏蔽层在源端单点接地
言实现。 在 DS18B20 的有关资料中均未提及单总线上所挂 DS18B20 数量问题,容易使人误认为可以
挂任意多个 DS18B20,在实际 Nhomakorabea用中并非如此。当单总线上所挂 DS18B20 超过 8 个时,就需要 解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。
连接 DS18B20 的总线电缆是有长度限制的。试验中,当采用普通信号电缆传输长度超过 50m 时,读取的测温数据将发生错误。当将总线电缆改为双绞线带屏蔽电缆时,正常通讯距离可达 150m,当采用每米绞合次数更多的双绞线带屏蔽电缆时,正常通讯距离进一步加长。这种情况 主要是由总线分布电容使信号波形产生畸变造成的。因此,在用 DS18B20 进行长距离测温系统 设计时要充分考虑总线分布电容和阻抗匹配问题。
DS18B20的工作原理
DS18B20的工作原理DS18B20是一种数字温度传感器,采用单总线接口进行通信。
它可以精确测量环境温度,并将温度值以数字形式传输给微控制器或其他设备。
DS18B20是一种广泛应用于工业自动化、家用电器、医疗设备等领域的温度传感器。
DS18B20的工作原理如下:1. 温度测量原理:DS18B20采用了基于半导体的温度测量原理。
它内部集成了温度传感器和模数转换器(ADC),可以将环境温度转换为数字信号。
DS18B20使用的是温度依赖的电阻器件,称为温度传感器。
当温度升高时,温度传感器的电阻值会发生变化,DS18B20利用这种变化来测量温度。
2. 单总线通信:DS18B20采用了单总线通信协议,即通过单根数据线进行数据传输。
这种通信方式简化了连接和控制的复杂性,只需使用一个引脚即可实现数据的传输和控制。
在单总线通信中,DS18B20作为从设备,由主控制器发出指令,DS18B20接收指令并返回温度数据。
3. 工作原理:DS18B20的工作原理可以分为三个步骤:初始化、温度转换和读取温度。
3.1 初始化:在通信开始前,主控制器需要发送初始化指令来识别和准备DS18B20。
初始化指令包括发送复位脉冲和读取DS18B20的存在脉冲。
复位脉冲使DS18B20进入准备接收指令的状态,存在脉冲用于检测DS18B20是否存在于总线上。
3.2 温度转换:初始化完成后,主控制器发送温度转换指令给DS18B20。
温度转换指令包括启动温度转换和等待转换完成。
DS18B20接收到指令后,开始测量环境温度,并将结果存储在内部寄存器中。
温度转换时间取决于DS18B20的分辨率设置,一般为750ms到12秒不等。
3.3 读取温度:温度转换完成后,主控制器发送读取温度指令给DS18B20。
DS18B20将温度值以数字形式传输给主控制器。
主控制器接收到温度数据后,可以进行进一步的处理和显示。
4. 分辨率设置:DS18B20支持多种温度分辨率设置,包括9位、10位、11位和12位。
友台半导体有限公司 DS18B20H 单总线温度传感器说明书
特点 ● 单总线接口,节约布线资源● 应用简单,无需额外器件● 转换温度时间500ms● 可编程9~12位数字输出●宽供电电压范围● 每颗芯片有可编程的ID 序列号 ● 用户可自行设置报警值 ● 超强ESD 保护能力(HBM>8000V )● 典型待机电流功耗1µA @3V ●典型换电流功耗0.6mA@3V典型应用● 便携应用,手机与穿戴设备● 温度监控 ●粮情监测● 智能家电系统 ● 水温测量● 建筑、设备或机房内部温度监测系统● 过程监测和控制系统概述是一款高精度的单总线温度测量芯片。
温度传感器的测温范围为-55°C 到+125°C ;根据用户需要通过配置寄存器可以设定数字转换精度和测温速度。
芯片内置4byte 非易失性存储单元供用户使用,2byte 用于高低温报警,另外2byte 用于保存用户自定义信息。
在-10°C 到+85°C 范围内最大误差为±°C 。
用户可自主选择电源供电模式和寄生供电模式。
单总线接口允许多个设备挂在同一总线,该特性使得也非常便于部署分布型温度采集系统。
管脚图和管脚描述34167852GNDDQ VDD MSOP82.5V-5.5V DS18B20H DS18B200.4DS18B20图1 DS18B20框图结构框图图1是DS18B20的原理框图。
64位ROM存储了器件的唯一序列码。
暂存器包含了两个字节的温度寄存器,存储来自于温度传感器的数字输出。
另外,暂存器提供了一高一低两个报警触发阈值寄存器(TH和TL)。
配置寄存器允许用户设定温度数字转换的分辨率为9,10,11或12位。
2个字节的用户可编程E2PROM是非易失性存储,器件掉电时数据不会失去。
DS18B20使用单总线协议,总线通讯通过一根控制信号线实现。
控制线需要一个弱上拉电阻这样所有的器件都通过三态或者开漏极端口(就是DS18B20的DQ引脚)连接到总线上。
数字温度传感器DS18B20应用实例
二、对DS18B20写1字节数据
过
程
对应程序
(1)数据线先置低电平0,发送的起始 void write_OneChar(uchar dat) 信号。 { (2)延时确定的时间为15µs; uchar i = 0; (3)按低位到高位顺序发送数据(一次 for (i = 8; I > 0; i--) 只发送一位)。 { (4)延时时间为45µs,等待DS18B20 DQ = 0; 接收; delay(5); (5)将数据线拉到高电平1,单片机释 DQ = dat & 0x01; 放总线; delay(15); (6)重复①~⑤步骤,直到发送完整个 DQ = 1; 字节; dat >> = 1; (7)最后将数据线拉高,单片机释放总 } 线。 delay(4); }
所示。
图3 - 1 DS18B20外形及引脚排列D源自18B20引脚功能描述序号
1 2
名称
GND DQ 地信号
描述
数据输入输出引脚
3
Vdd 电源输入引脚,当工作于寄生 (Vcc) 电源模式时,此引脚必须接地
值得一提的是DQ引脚的I/O为数据输入/输出端(即单 总线),该引脚为漏极开路输出,常态下呈高电平。而单 总线技术是DS18B20的一个特点,也是目前的技术热点之 一。
3.2 单总线数据传输原理
单总线协议规定一条数据线传输串行数据,时序有严格 的控制,对于DS18B20的程序设计,必须遵守单总线协议。 DS18B20操作主要分初始化、写数据、读数据。下面分别 介绍操作步骤。
一、初始化时序
对DS18B20初始化的不得是:单片机感知 DS18B20存在并为下一步操作做准备,同时启动 DS18B20,程序设计依据时序进行。设P1.0口与 DS18B20的数据DQ连接,初始化过程如下:
DS18B20的工作原理
DS18B20的工作原理DS18B20是一种数字温度传感器,它采用单总线接口进行通信,并且具有高精度和可编程分辨率的特点。
它被广泛应用于温度测量和监控系统中。
DS18B20的工作原理如下:1. 温度传感器:DS18B20内部集成了一个温度传感器,该传感器基于基准电压和温度之间的关系来测量温度。
传感器采用了模拟传感技术,通过将温度转换为电压信号来实现温度测量。
2. 单总线接口:DS18B20使用单总线接口进行通信,这意味着它只需要一个引脚来传输数据和提供供电。
这种设计简化了连接和布线,使得DS18B20在各种应用中更加灵活和方便。
3. 工作原理:DS18B20的工作原理基于一种称为“1-Wire”的通信协议。
在1-Wire协议中,设备通过发送和接收脉冲信号来进行通信。
DS18B20作为从设备,可以接收主设备发送的命令,并将温度数据通过单总线接口返回给主设备。
4. 温度转换:DS18B20可以通过命令触发温度转换过程。
在转换过程中,它将测量环境温度并将其转换为数字信号。
转换的结果存储在DS18B20的内部寄存器中,主设备可以通过发送读取命令来获取温度数据。
5. 分辨率设置:DS18B20具有可编程分辨率的特点,可以根据应用需求进行配置。
它支持9位、10位、11位或12位的分辨率,分辨率越高,温度测量的精度越高。
6. 供电方式:DS18B20可以通过单总线接口从主设备获取供电,也可以通过外部供电引脚进行供电。
这种灵活的供电方式使得DS18B20适用于各种不同的应用场景。
总结:DS18B20是一种基于单总线接口的数字温度传感器,具有高精度和可编程分辨率的特点。
它通过内部温度传感器测量环境温度,并将温度数据通过单总线接口返回给主设备。
DS18B20的工作原理基于1-Wire通信协议,它可以通过命令触发温度转换,并支持不同的分辨率设置。
DS18B20的灵活供电方式使得它适用于各种应用场景,如温度测量和监控系统等。
DS18B20的工作原理
DS18B20的工作原理DS18B20是一种数字温度传感器,它采用单总线接口进行通信,并能够提供高精度的温度测量。
其工作原理如下:1. 基本原理:DS18B20采用了基于半导体的温度传感技术。
它内部集成了温度传感器、模数转换器和数字接口电路。
传感器通过测量半导体材料的电阻来获取温度信息,然后将其转换为数字信号输出。
2. 温度测量:DS18B20的温度测量是通过测量半导体材料的电阻来实现的。
半导体材料的电阻随着温度的变化而变化,DS18B20利用这一特性来确定温度。
其内部集成了一个精密的模数转换器,可以将电阻值转换为数字信号。
3. 单总线接口:DS18B20采用单总线接口进行通信,这意味着它只需要一条数据线即可完成数据传输。
通过控制数据线上的电平变化,可以实现与DS18B20的通信。
这种设计简化了连接和控制电路的复杂性。
4. 工作原理:DS18B20的工作原理可以分为三个步骤:初始化、温度转换和读取温度值。
- 初始化:主设备发送初始化命令,DS18B20响应并进入工作模式。
- 温度转换:主设备发送温度转换命令,DS18B20开始测量温度,并将结果存储在内部寄存器中。
- 读取温度值:主设备发送读取命令,DS18B20将温度值通过单总线接口发送给主设备。
5. 精度和分辨率:DS18B20具有高精度和可调节的分辨率。
它可以提供精度为±0.5℃的温度测量,并且可以通过设置分辨率来调整测量精度。
分辨率越高,测量精度越高,但测量时间也会增加。
6. 应用领域:DS18B20广泛应用于各种需要温度测量的领域,例如气象观测、工业自动化、家用电器等。
由于其数字接口和高精度的特性,它在温度监测和控制方面具有很大的优势。
总结:DS18B20是一种基于半导体技术的数字温度传感器,通过测量半导体材料的电阻来获取温度信息,并通过单总线接口与主设备进行通信。
它具有高精度、可调节的分辨率和广泛的应用领域。
在各种温度测量和控制场景中,DS18B20都是一种可靠且方便的选择。
使用DS18B20温度传感器测温
248第11章 使用DS18B20温度传感器测温11.1 概述现实生产生活中,小到测量体温的温度计,大到航天飞机的温控系统,处处都离不开温度测量。
工业生产中的三大指标(流量、压力、温度)之一就是温度,温度测量可以说是无处不在,遍布了我们生活生产的方方面面。
DS18B20温度传感器是美国DALLAS 半导体公司生产的数字化温度传感器,它与以往模拟量温度传感器不同,数字化是其一大特点,它能将被测环境温度直接转化为数字量,并以串行数据流的形式,传输给单片机等微处理器去处理。
DS18B20温度传感器的另一个主要特点是它是单总线的,即它与单片机等微处理器连接时,只需占用一个I/O 管脚,并且不再需要其它任何外部元器件,这大大简化了它与单片机之间的接口电路。
11.2 DS18B20温度传感器介绍目前,使用最普遍的DS18B20温度传感器是三脚TO-92直插式封装这一种,这种封装的DS18B20实物如图11-1所示。
可以看到它体积很小,只有三只管脚,外形与一般的三极管极其相似。
图11-2是DS18B20三脚TO-92直插式封装图,表11-1列出了DS18B20各个引脚的定义。
图11-1 DS18B20实物图 图11-2 DS18B20引脚图表11-1 DS18B20引脚定义。
11.2.1 DS18B20温度传感器特性简介◆独特的单总线(一条线)接口,与微处理器通信只需一个I/O 管脚,且硬件连接无需其它外部元件;◆测量结果直接输出数字量,可直接与微处理器通信;◆供电电压范围3.0V~5.5V ;在寄生电源方式下可由数据线供电;◆测温范围-55℃~+125℃;在-10℃~+85℃范围内,测量精度可达±0.5℃;◆可编程的9~12位测温分辨率,对应的可分辨温度值分别为0.5℃,0.25℃,0.125℃,0.0625℃;12位分辨率时的温度测量转换最长时间(上限)只有750ms ;◆每一片DS18B20都有自己独一无二的芯片号码;多片DS18B20可以并联在一条数据总线上,实现不同地点的多点组网;◆应用范围包括温度调控,工业现场测温,消费类产品,温度计及热敏系统等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
uchar a,b;
dsreset();
delay(1);
tempwritebyte(0xcc);
tempwritebyte(0xbe);
a=tempread();
b=tempread();
void read_and_display_DS18B20_ROMID(void)
{
uchar del,del1;
//得到ROM_ID;
ini_and_get_ROM_ID();
write_com(0x80+0x40);
del=D1_ROM_ID[0];
del1=del/16;
//然后通过调用“get_temperature(DD1_ROM_ID)” 得到总线上指定的DS18B20的温度,而不会读到其它的DS18B20的温度。
//需要注意的是:若单总线上有多个DS18B20时,读不到正确的序列号,因为单片机在总线上发出读序列号的命令后
//每一个DS18B20都会开始上传自己的序列号,因此读不到正确的序列号,只能一个一个地读序列号。
}
//液晶部分--end:1602的初始化
//DS18B20的相关程序--start
void dsreset(void) //DS18B20复位,初始化函数
{
uint i;
ds=1;
i++;
ds=0;
i=400;
while(i>0)i--;
ds=1;
tempwritebyte(0xbe); //读温度
a=tempread();
b=tempread();
temp=b;
temp=temp<<8;
temp=temp|a;
f_temp=temp*0.0625;
temp=f_temp*100+0.5; //乘*100表示小数点后面取2位,加0.5是四舍五入
{
uchar a,b;
uchar *p;
p=P_ROM_ID;
dsreset();
delay(5);
tempwritebyte(0x55); //匹配ROM
for(a=0;a<8;a++)
{
tempwritebyte(*p);
++p;
}
delay(5);
//uchar code DD2_ROM_ID[8]={0x28,0xc1,0xdc,0x0c,0x02,0x00,0x00,0x94};
//是读出来的,序列号只能一位一位读出来
//需要注意的是:若单总线上有多个DS18B20时,读不到正确的序列号,因为单片机在总线上发出读序列号的命令后
//每一个DS18B20都会开始上传自己的序列号,因此读不到正确的序列号,只能一个一个地读序列号。
write_data(i+0x30);
write_data('.'); //显示小数点
i=t%10000%1000%100/10;
write_data(i+0x30);
// i=t%10000%1000%100%10; //若需要显示第二位小数点,就把这里两行的注释取消就可以了。
temp=b;
temp=temp<<8;
temp=temp|a;
f_temp=temp*0.0625;
temp=f_temp*100+0.5; //乘*100表示小数点后面取2位,加0.5是四舍五入
return temp;
}
uint get_temperature(unsigned char P_ROM_ID[8]) //读取寄存器中存储的温度数据
void write_data(uchar date)
{
LCDrs=1;
P2=date;
delay(5);
LCDen=1;
delay(5);
LCDen=0;
}
//液晶部分--start:1602的初始化
void LCD_init()
{
write_com(0x38); //P150, tale7.2.6
{
D1_ROM_ID[i]=tempread();
delay(5);
}
}
//显示序列号的,通过LCD去显示,读出来的是ASCII码,减去0x30.
//比如:其中读到是"?",对应ASCII是0x3f,所以减去0x30,即为f
//uchar code DD1_ROM_ID[8]={0x28,0x0b,0x0f,0x0d,0x02,0x00,0x00,0x5b};
//
//序列号只能一位一位读出来,先写个程序读出序列号,然后可以针对某一个DS18B20进行操作
//需要注意的是:若单总线上有多个DS18B20时,读不到正确的序列号,因为单片机在总线上发出读序列号的命令后
//每一个DS18B20都会开始上传自己的序列号,因此读不到正确的序列号,只能一个一个地读序列号。
//不需要从液晶里读数据,所以这根脚就直接接地。
//往液晶里写命令:如清屏,设置显示的位置等。
void write_com(uchar com)
{
LCDrs=0;
P2=com;
delay(5);
LCDen=1;
delay(5);
LCDen=0;
}
//往液晶里写数据:要显示的数据,通过此程序来写进液晶里去。
float f_temp;
uchar D1_ROM_ID[8];
uchar D2_ROM_ID[8];
//通过调用“read_and_display_DS18B20_ROMID()” 在1602液晶里显示序列号,如何读到正确的序列号,请
//参考read_and_display_DS18B20_ROMID()的说明,读出正确的序列号后,把序列号填到下面的数组里面,
//读者须知:
//若要用这个程序,LCD的D0-D7跟单片机的P2口连。LCD用得是1602,LCD的第4脚与单片机的P3.5脚,LCD的第6脚与单片机的P3.4连
//LCD的第5脚接地。DS18B20的数据线(中间的引脚)接单片机的P1.0。单片机用的是AT89S52.
//这个程序,本人测试过了,测试过单总线上7个DS18B20的连接,并能正确读到。
//液晶1602部分--end
//延时xms毫秒
void delay(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=120;j>0;j--);
}
//R/W-->GND,no used 液晶的第5脚没有用到,直接接地。因为往液晶里写数据就显示,所以只需要接地。
i=30;while(i>0)i--; //i=8;while(i>0)i--; ;若是i=8,只能检测到5个 3
return(dat);
}
uchar tempread(void) //读1个字节数据函数
{
uchar i,j,dat;
dat=0;
for(i=1;i<=8;i++)
return temp;
}
void dis_temp(uint t) //显示温度值函数
{
uint i;
i=t/10000;
write_data(i+0x30);
i=t%10000/1000;
write_data(i+0x30);
i=t%10000%1000/100;
ds=1;
i++;i++;
}
}
}
void tempchange(void) //DS18B20开始获取温度并转换
{
dsreset();
delay(1);
tempwritebyte(0xcc);
tempwritebyte(0x44);
}
//只有一个DS18B20的时候可以用这个子程序得到温度
// i=4;
i=8;
while(i>0)i--;
}
bit tempreadbit(void) //读1位数据函数
{
uint i;
bit dat;
ds=1;i++;
ds=0;i++;i++; i++;i++;
ds=1;i++;i++;
dat=ds;
{
j=tempreadbit();
dat=(j<<7)|(dat>>1);
}
return dat;
}
void tempwritebyte(uchar dat) //向DS18B20写一个字节数据函数
{
uint i;
uchar j;
bit testb;
for(j=1;j<=8;j++)
uchar code DD1_ROM_ID[8]={0x28,0x0b,0x0f,0x0d,0x02,0x00,0x00,0x5b};
uchar code DD2_ROM_ID[8]={0x28,0xc1,0xdc,0x0c,0x02,0x00,0x00,0x94};