当前位置:首页 > 单片机 > 单片机
[导读]任何一个DS18B20其内部64位ROM用于存储位移的芯片ID(这就为我们的多点采集提供了极大的方便),我使用3pin封装的芯片,值得注意的是:DS18B20使用一根数据线一根地线也能正常工作,也就是VCC并不是必须的,什么原因

任何一个DS18B20其内部64位ROM用于存储位移的芯片ID(这就为我们的多点采集提供了极大的方便),我使用3pin封装的芯片,值得注意的是:DS18B20使用一根数据线一根地线也能正常工作,也就是VCC并不是必须的,什么原因呢?因为DS18B20在内部有一个寄生电容,当我们的数据线的电压范围在3.3--5V之间的时候,他会转存为power,所以当我们外部断电之后,这个power就为IC提供了电源,这很好的起到了一个节能的作用。。

还有一些其他的特点总结如下:

--全数字温度转换及输出。
-- 先进的单总线数据通信。
--最高12位分辨率,精度可达土0.5摄氏度。
--12位分辨率时的最大工作周期为750毫秒。
--可选择寄生工作方式。
--检测温度范围为–55°C ~+125°C (–67°F ~+257°F)
--内置EEPROM,限温报警功能。
--64位光刻ROM,内置产品序列号,方便多机挂接。
--多样封装形式,适应不同硬件系统。

一、硬件介绍

1、首先看一看DS13B20的整体框图

总结一下我自己对这几个部分的理解:

1、电源检测用于检测是外部提供电源还是使用数据线转换的power

2、64为ROM用于读取芯片ID

3、温度灵敏元件用于DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位

4、接下来就是高低温触发器了,

5、还有配置寄存器,配置寄存器是配置不同的位数来确定温度和数字的转化。配置寄存器的结构格式如下

R1、R2与控制器分辨率关系如下:

测温操作 DS18B20的核心功能是它的直接读数字的温度传感器。温度传感器的精度为用户可编程的9,10,11或12位,分别以0.5℃,0.25℃,0.125℃和0.0625℃增量递增。在上电状态下默认的精度为12位。

所以能够很清楚的看到转换位数和转换时间之间的关系。

温度寄存器的格式如下:


二、接下来看看如何控制这个芯片

a、协议:

单总线串行通信协议,这个与普通的spi协议有一点点区别

b、操作流程:一下操作流程是我参照网上的,写的比较容易理解

1,复位:首先我们必须对DS18B20芯片进行复位,复位就是由控制器(单片机)给DS18B20单总线至少480uS的低电平信号。当18B20接到此复位信号后则会在15~60uS后回发一个芯片的存在脉冲。

2,存在脉冲:在复位电平结束之后,控制器应该将数据单总线拉高,以便于在15~60uS后接收存在脉冲,存在脉冲为一个60~240uS的低电平信号。至此,通信双方已经达成了基本的协议,接下来将会是控制器与18B20间的数据通信。如果复位低电平的时间不足或是单总线的电路断路都不会接到存在脉冲,在设计时要注意意外情况的处理。

3,控制器发送ROM指令:双方打完了招呼之后最要将进行交流了,ROM指令共有5条,每一个工作周期只能发一条,ROM指令分别是读ROM数据、指定匹配芯片、跳跃ROM、芯片搜索、报警芯片搜索。ROM指令为8位长度,功能是对片内的64位光刻ROM进行操作。其主要目的是为了分辨一条总线上挂接的多个器件并作处理。诚然,单总线上可以同时挂接多个器件,并通过每个器件上所独有的ID号来区别,一般只挂接单个18B20芯片时可以跳过ROM指令(注意:此处指的跳过ROM指令并非不发送ROM指令,而是用特有的一条“跳过指令”)。ROM指令在下文有详细的介绍。

4,控制器发送存储器操作指令:在ROM指令发送给18B20之后,紧接着(不间断)就是发送存储器操作指令了。操作指令同样为8位,共6条,存储器操作指令分别是写RAM数据、读RAM数据、将RAM数据复制到EEPROM、温度转换、将EEPROM中的报警值复制到RAM、工作方式切换。存储器操作指令的功能是命令18B20作什么样的工作,是芯片控制的关键。

5,执行或数据读写:一个存储器操作指令结束后则将进行指令执行或数据的读写,这个操作要视存储器操作指令而定。如执行温度转换指令则控制器(单片机)必须等待18B20执行其指令,一般转换时间为500uS。如执行数据读写指令则需要严格遵循18B20的读写时序来操作。数据的读写方法将有下文有详细介绍。

若要读出当前的温度数据我们需要执行两次工作周期,第一个周期为复位、跳过ROM指令、执行温度转换存储器操作指令、等待500uS温度转换时间。紧接着执行第二个周期为复位、跳过ROM指令、执行读RAM的存储器操作指令、读数据(最多为9个字节,中途可停止,只读简单温度值则读前2个字节即可)。其它的操作流程也大同小异,在此不多介绍。

除此之外,还有一篇文章或许能够解决你的一些关于DS13b20的疑惑,这是我在百度空间转载过来的

http://blog.csdn.net/king_bingge/article/details/8808631好的,如果读完了这篇文章,那么下面对代码进行分析也不成问题了

三、代码分析

1、首先是一段获取温度的主代码


/**************************************************************************************

*名称:DS18B20_Get_Temp

*功能:从ds18b20得到温度值,精度:0.1C

*参数:无

*返回值:温度值(-550~1250)

**************************************************************************************/

shortDS18B20_Get_Temp(void)

{

u8temp;

u8TL,TH;

shorttem;//2bytes

DS18B20_Start();//ds1820startconvert

DS18b20_Reset();

DS18B20_Check();

DS18B20_Write_Byte(0xcc);//skiprom

DS18B20_Write_Byte(0xbe);//convert

TL=DS18B20_Read_Byte();//LSB

TH=DS18B20_Read_Byte();//MSB

if(TH>7)//判断正负

{

TH=~TH;

TL=~TL;

temp=0;//温度为负

}elsetemp=1;//温度为正

tem=TH;//获得高八位

tem<<=8;

tem+=TL;//获得低八位

tem=(float)tem*0.625;//转换

if(temp)returntem;//返回温度值

elsereturn-tem;

}

说道读取温度就得看看这个表了



下面的就是一个官方的示例表,说明了我们转换的时候要注意的地方


注意精度上电默认的12位的。那么如何确定精度的呢?我问了我一个学长,是这样解释的,小数部分是4位,那么最小分辨率就是2的4次方分之一

也就是1/16. = 0.0625

2、开始信号


/**************************************************************************************

*名称:DS18B20_Start

*功能:开始信号

*参数:无

*返回值:无

**************************************************************************************/

voidDS18B20_Start(void)//ds1820startconvert

{

DS18b20_Reset();

DS18B20_Check();

DS18B20_

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭