ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:306.86KB ,
资源ID:6132451      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6132451.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(DS18B20的使用方法.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

DS18B20的使用方法.docx

1、DS18B20的使用方法图1 DS18B20的封装图 DS18B20的特点:1、DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内2、温范围55+125,在-10+85时精度为0.53、支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能并联8个,实现多点测温,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定4、工作电源: 35V/DC5、 可编程的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温,测量结果以912位数字量方式串行传送6、在9位分辨率时最多在 93.75

2、ms内把温度转换为数字量,12位分辨率时最多在750ms内把温度值转换为数字量,速度更快7、测量结果直接输出数字温度信号,以一线总线串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力8、负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作1) 产品型号与规格型 号 测温范围 安装螺纹 电缆长度 适用管道 TS-18B20 -55125 无 1.5 m TS-18B20A -55125 M10X1 1.5m DN1525 TS-18B20B -55125 1/2G 接线盒 DN4060图2 DS18B20测温原理如图2所示:图中低温度系数晶振的振荡频率受温度影响很小,用

3、于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在-55所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图2中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。2) 接线说明 特点:独特的一线接口,只需要一条口线通信多点能力,简

4、化了分布式温度传感器应用,无需外部元件可用数据总线供电,电压范围为3.0 V至5.5 V无需备用电源测量温度范围为-55至+125 ,-10至+85范围内精度为0.5 。温度传感器可编程的分辨率为912位温度转换为12位数字格式最大值为750毫秒用户可定义的非易失性温度报警设置应用范围包括恒温控制,工业系统,消费电子产品温度计,或任何热敏感系统 。DS18B20提供9至12位温度输出。信息发送从DS18B20通过1线接口,所以中央微处理器与DS18B20只有一条口线连接。数据读写以及温度转换可以从数据线本身获得能量,不需要外接电源。因为每一个DS18B20包含一个独特的序号,多个DS18B20

5、可以同时存在于一条总线,这使得温度传感器可以放置在许多不同的地方。它的用途很多,包括空调环境控制,感测建筑物内温设备或机器,并进行过程监测和控制。3) DS18B20有4个主要的数据部件: 图3 DS18B20内部结构图DS18B20内部结构主要由四部分组成:64位光刻ROM,温度传感器,非挥发的温度报警触发器TH和TL,配置寄存器。(1)光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余检验码(CRC=X8+X5+X4+1

6、)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。64位的光刻ROM又包括5个ROM的功能命令:读ROM,匹配ROM,跳跃ROM,查找ROM和报警查找。根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位操作,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。表1 ROM指令表指 令约定代码功 能读ROM33H读DS18B20温度传感器ROM中的编码(即64位地址)符合 ROM55H发出此命令之后,接着发出 64 位 ROM

7、 编码,访问单总线上与该编码相对应的 DS18B20 使之作出响应,为下一步对该 DS18B20 的读写作准备搜索 ROM0F0H用于确定挂接在同一总线上 DS18B20 的个数和识别 64 位 ROM 地址。为操作各器件作好准备跳过 ROM0CCH忽略 64 位 ROM 地址,直接向 DS18B20 发温度变换命令,适用于单片工作告警搜索命令0ECH执行后只有温度超过设定值上限或下限的片子才做出响应 表2 RAM指令表指 令约定代码功 能温度转换44H启动DS18b20进行温度转换,12位转换时间最长为750ms(9位为93.75ms),结果存入内部9字节RAM中读暂存器0BEH读内部RAM

8、中9字节的内容写暂存器4EH发出向内部RAM的3、4字节写上、下限温度数据命令,紧跟该命令之后,是传送三字节的数据,三字节的数据分别被存到暂存器的第3、4、5字节复制暂存器48H将RAM中第3 、4、5字节的内容复制到E2PROM中重调E2PR0M0B8H将E2PROM中内容恢复到RAM中的第3 、4、5字节读供电方式0B4H读DS18B20的供电模式。寄生供电时DS18B20发送“ 0 ”,外接电源供电 DS18B20发送“ 1 ”(2) DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625/LSB形式表达,其中S为符号位

9、。表3 DS18B20温度值格式表这是12位转化后得到的12位数据,存储在DS18B20的两个8bit的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0, 这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。 例如+125的数字输出为07D0H,+25.0625的数字输出为0191H,-25.0625的数字输出为FE6FH,-55的数字输出为FC90H。表4 DS18B20温度数据表(3)DS18B20温度传感器的存储器 DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易

10、失性的可电擦除的E2 PRAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。存储器能完整的确定一线端口的通讯,数据开始用写寄存器的命令写进寄存器,接着也可以用读寄存器的命令来确认这些数据。当确认以后就可以用复制寄存器的命令来将这些数据转移到可电擦除RAM中。当修改过寄存器中的数据时,这个过程能确保数据的完整性。 高速暂存存储器由9个字节组成,其分配如表5所示。当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第1和第2个字节。CPU可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式如表3所示。对应的温度计算:当符号位S=0时,直接将二进制位转换为十

11、进制;当S=1时,先将补码变为原码,再计算十进制值。第3和第4个字节是复制TH和TL,同时第3和第4个字节的数据可以更新;第5个字节是复制配置寄存器,同时第5个字节的数据可以更新;6、7、8三个字节是计算机自身使用。第9个字节是冗余检验字节。表5 DS18B20暂存寄存器分布寄存器内容字节地址温度值低位 (LS Byte)1温度值高位 (MS Byte)2高温限值(TH)3低温限值(TL)4配置寄存器5保留6保留7保留8CRC校验值9(4)配置寄存器 该字节各位的意义如下:表6 配置寄存器结构低五位一直都是1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出

12、厂时该位被设置为0,用户不要去改动。R1和R0用来设置分辨率,如下表所示(DS18B20出厂时被设置为12位)。表7 温度分辨率设置表4) DS18B20外部电源的连接方式 DS18B20可以使用外部电源VDD,也可以使用内部的寄生电源。当VDD端口接3.0V5.5V的电压时是使用外部电源;当VDD端口接地时使用了内部的寄生电源。无论是内部寄生电源还是外部供电,I/O口线都要接4.7K的上拉电阻。 DS18B20的外部电源供电方式在外部电源供电方式下,DS18B20工作电源由VDD引脚接入,此时I/O线不需要强上拉,不存在电源电流不足的问题,可以保证转换精度,同时在总线上理论可以挂接任意多个D

13、S18B20传感器,组成多点测温系统。注意:在外部供电的方式下,DS18B20的GND引脚不能悬空,否则不能转换温度,读取的温度总是85。 图4 外部电源连接5) DS18B20温度处理过程1、 配置寄存器配置寄存器是配置不同的位数来确定温度和数字的转化。2、温度的读取DS18B20在出厂时已配置为12位,读取温度时共读取16位,所以把后11位的2进制转化为10进制后再乘以0.0625便为所测的温度,还需要判断正负。前5个数字为符号位,当前5位全为1时,读取的温度为负数;当前5位全为0时,读取的温度为正数。16位数字摆放是从低位到高位。3、DS18B20控制方法DS18B20有六条控制命令(R

14、AM):见表2。4、DS18B20的初始化 (1)总线主机发送一复位脉冲(最短为480us的低电平信号)(2)总线主机释放总线,并进入接收方式(3)单线总线经过5K的上拉电阻被拉至高电平状态(4)DS18B20在I/O引脚上检测到上升沿之后,等待15-60us,接着发送存在脉冲(60us-240us的低电平信号)初始化时序5、向DS18B20发送控制命令 先通过总线向DS18B20发送ROM指令,对ROM进行操作;之后,发送ROM指令,来启动传感器或进行其它RAM操作,以完成对温度数据的转换。6) DS1820使用中注意事项 DS1820虽然具有测温系统简单、测温精度高、连接方便、占用口线少等

15、优点,但在实际应用中也应注意以下几方面的问题: (1)较小的硬件开销需要相对复杂的软件进行补偿,由于DS18B20与微处理器间采用串行数据传送,因此,在对DS18B20进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。在使用PL/M、C等高级语言进行系统程序设计时,对 DS18B20操作部分最好采用汇编语言实现。 (2)在DS18B20的有关资料中均未提及单总线上所挂DS18B20数量问题,容易使人误认为可以挂任意多个DS18B20,在实际应用中并非如此。当单总线上所挂DS18B20超过8个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。(3)连接

16、DS18B20的总线电缆是有长度限制的。试验中,当采用普通信号电缆传输长度超过50m时,读取的测温数据将发生错误。当将总线电缆改为双绞线带屏蔽电缆时,正常通讯距离可达150m,当采用每米绞合次数更多的双绞线带屏蔽电缆时,正常通讯距离进一步加长。这种情况主要是由总线分布电容使信号波形产生畸变造成的。因此,在用DS18B20进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配问题。(4)在DS18B20测温程序设计中,向DS18B20发出温度转换命令后,程序总要等待DS18B20的返回信号,一旦某个DS18B20接触不好或断线,当程序读该DS18B20时,将没有返回信号,程序进入死循环。这一点

17、在进行DS18B20硬件连接和软件设计时也要给予一定的重视。测温电缆线建议采用屏蔽4芯双绞线,其中一对线接地线与信号线,另一组接VCC和地线,屏蔽层在源端单点接地。数据的处理部分:要求出正数的十进制值,必须将读取到的LSB 字节,MSB 字节进行整合处理,然后乘以0.0625 即可。Eg:假设从,字节0 读取到0xD0 赋值于Temp1,而字节1 读取到0x07 赋值于Temp2,然后求出十进制值。unsigned int Temp1,Temp2,Temperature;Temp1=0xD0; /低八位Temp2=0x07; /高八位Temperature = (Temp28 ) | Temp

18、1 ) * 0.0625;/又或者Temperature = (Temp1 + Temp2 *256) * 0.0625; /Temperature=125在这里我们遇见了一个问题,就是如何求出负数的值呢?很遗憾的,单片机不像人脑那样会心算,我们必须判断BIT1115 是否是1,然后人为置一负数标志。Eg. 假设从,字节0 读取到0x90 赋值于Temp1,而字节1 读取到0xFC 赋值于Temp2,然后求出该值是不是负数,和转换成十进制值。unsigned int Temp1,Temp2,Temperature;unsigned char Minus_Flag=0;Temp1=0x90; /

19、低八位Temp2=0xFC; /高八位/Temperature = (Temp1 + Temp2 *256) * 0.0625; /Temperature=64656/很明显不是我们想要的答案if(Temp2&0xFC) /判断符号位是否为1Minus_Flag=1; /负数标志置一Temperature = (Temp28 ) | Temp1 ) /高八位第八位进行整合Temperature= (Temperature)+1); /求反,补一Temperature*= 0.0625; /求出十进制 /Temperature=55;elseMinus_Flag=0;Temperature =

20、(Temp28 ) | Temp1 ) * 0.0625;继续继续,以上我们是求出没有小数点的正数。如果我要求出小数点的值的话,那么我应该这样做。Eg:假设从,字节0 读取到0xA2 赋值于Temp1,而字节1 读取到0x00 赋值于Temp2,然后求出十进制值,要求连同小数点也求出。unsigned int Temp1,Temp2,Temperature;Temp1=0XA2; /低八位Temp2=0x00; /高八位/实际值为10.125/Temperature = (Temp28 ) | Temp1 ) * 0.0625; /10,无小数点Temperature = (Temp28 )

21、| Temp1 ) * (0.0625 * 10) ; /101 ,一位小数点/Temperature = (Temp28 ) | Temp1 ) * (0.0625 * 100) ; /1012,二位小数点如以上的例题,我们可以先将0.0625 乘以10,然后再乘以整合后的Temperature 变量,就可以求出后面一个小数点的值(求出更多的小数点,方法都是以此类推)。得出的结果是101,然后再利用简单的算法,求出每一位的值。unsinged char Ten,One,Dot1Ten=Temperature/100; /1One=Temperature%100/10; /0Dot1=%10;

22、 /1DS18B20的读写操作方法: 总线控制器在写时间隙向DS18B20写数据,在读时间隙从DS18B20读数据;在每个时间隙有一位的数据通过单总线被传输。 写时间隙的产生过程:写时间隙的产生从总线控制器把单总线拉低开始。Write 0和write 1时间隙间隔要大于1us。 1、产生write 1时间隙:当总线控制器把单总线拉到低电平后,必须在15us内释放单总线,单总线被释放后5K的上拉电阻会把单总线拉到高电平。2、产生write 0时间隙:当总线控制器把单总线拉到电平后,总线控制器在write 0时间隙内必须继续保持低电平,最少60us。在总线控制器发出写时间隙后1560us,DS18

23、B20会采样单总线上的数据。如果在采样窗口期单总线为高电平,则视为向DS18B20写入“1”;如果在采样窗口期单总线为低电平,则视为向DS18B20写入“0”。 读时间隙的产生:一个读时间隙的产生是通过控制器把单总线拉到低电平,并保持至少1us,之后释放总线产生的。当控制器发出读时间隙后,DS18B20将开始传输数据“1”或“0”到总线上。DS18B20通过把总线置于高电平传输“1”,通过把总线置于低电平传输“0”。当传输“0”时,DS18B20将在读时间隙结束时释放总线,总线将会被上拉电阻拉回高电平闲置状态。DS18B20的输出数据在发出读时间隙后的15us内有效,因此:在读时间隙发出后,控制器必须释放总线并在15us内采样总线的电平状态。DS18B20 读/写时间隙:Write 0 、write 1和read 0、read 1方法(时序)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1