还剩4页未读,继续阅读
文本内容:
单线数字温度传感器DS18B20原理及其应用DALLAS最新单线数字温度传感器DS18B20简介新的“一线器件”体枳更小、适用电压更宽、更经济Dallas半导体公司的数字化温度传感器DSI82O是世界上第一片支持“一线总线接口的温度传感器一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念DS18B
20.DS1822一线总线数字化温度传感器同DS1820一样,DS18B20也支持“一线总线”接口,测量温度范围为-55℃~+125℃在-10~+85久范围内,精度为土DS1822的精度较差为土25可选更小的封装方式,更宽的电压适用范围分辨率设定,及用户设定的报警温度存储在EEPROM中,抻电后依然保存DS18B20的性能是新代产品中最好的!性能价格比也非常出色!DS1822与DS18B20软件兼容,是DS18B20的简化版本省略了存储用户定义报警温度、分辨率参数的EEPROM精度降低为±2适用于对性能要求不高,成本控制严格的应用,是经济型产品继“一线总线”的早期产品后,DS182O开辟了温度传感器技术的新概念DS18B20和DS1822使电压、特性及封装有更多的选择,让我们可以构建适合自己的经济的测温系统DS18B20的新性能2测温范围-55~+125C在-10~+85℃时精度为土C3可编程的分辨率为9~12位,对应的可分辨温度分别为C、“C、C和C;12位分辨率时最多在750ms内把温度值转换为数字;5负压特性电源极性接反时,温度计不会因发热而烧毁,但不能正常工作DS18B20的外形和内部结构DS18B20内部结构主要由四部分组成64位光亥ljROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器DS18B20的管脚排列如下图1DS18B20外形图引脚定义DQ为数字信号输入/输出端GND为电源地;VDD为外接供电电源输入端在寄生电源接线方式时接地内部结构图2DS18B20内部结构图DS18B20有4个主要的数据部件1光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码64位光刻ROM的排列是:开始8位28H是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码CRC=X8+X5+X4+1光刻ROM的作用是使每•个DS18B20都各不相同,这样就可以实现•根总线上挂接多个DSI8B20的目的DS18B20中的温度传感器可完成对温度的测量,以12位转化为例用16位符号扩展的二进制补码读数形式提供,以C/LSB形式表达,其中S为符号位表1DS18B20温度值格式表例如+125℃的数字输出为07D0H+℃的数字输出为019IH℃的数字输出为FF6FH-55c的数字输出为FC90H表2DSI8B20温度数据表DSI8B20温度传感器的存储器DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM后者存放高温度和低温度触发器TH、TL和结构寄存器4配置寄存器该字节各位的意义如下:表3配置寄存器结构低五位一直都是1TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式在DS18B20出厂时该位被设置为0用户不要去改动R1和R0用来设置分辨率,如下表所示DS18B20出厂时被设置为12位分辨率设置表表4温度值分辨率设置表高速暂存存储器高速暂存存储器由9个字节组成,其分配如表5所示当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第和第1个字节单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式如表1所示对应的温度计算当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变为原码,再计算十进制值表2是对应的一部分温度值第九个字节是冗余检验字节表5DS18B20暂存寄存器分布根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B2O进行预定的操作复位要求主CPU将数据线下拉500微秒,然后粹放,DS18B20收到信号后等待16〜60微秒左右,后发出60〜240微秒的存在低脉冲,主CPU收到此信号表示匏位成功表6ROM指令表表7RAM指令表DS18B20的使用方法由于DS18B20采用的是1-Wire总线协议方式,即在一根数据线实现数据的双向传输,而对AT89S51单片机来说硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性该协议定义了几种信号的时序初始化时序、读时序、写时序所有时序都是将主机作为主设备,单总线器件作为从设备而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收数据和命令的传输都是低位在先DS18B20的复位时序DS18B20的读时序对于DS18B20的读时序分为读0时序和读1时序两个过程对于DS18B20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单总线上DS18B20在完成一个读时序过程,至少需要60us才能完成DS18B20的写时序对于DS18B20的写时序仍然分为写0时序和写1时序两个过程对于DS18B20写时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us保证DS18B20能够在15us到45us之间能够正确地采样I0总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线DS18B20工作原理DS18B20是直接数字式高精度温度传感器,其内部含有两个温度系数不同的温敏振荡器,其中低温度系数振荡器相当于标尺,高温度系数振荡器相当于测温元件,通过不断比较两个温敏振荡器的振荡周期得到两个温敏振荡器在测量温度下的振荡频率比值根据频率比值和温度的对应曲线得到相应的温度值这种方式避免了测温过程中的A/D转换,提高了温度测量的精度DS18B20测温原理如图所示图中低温度系数晶振的振荡频率受温度影响很小,用来向计数器I提供固定频率的脉冲信号高温度系数晶振的振荡频率受温度影响较大,随温度的变化而明显改变,其产生的信号作为计数器2的脉冲输入,用于控制闸门的关闭时间初态时,计数器1和温度寄存器被预置在与-55°C相对应的一个基值上计数器1对低温度系数晶振产生的脉冲信号进行减法计数,在计数器2控制的闸门时间到达之前,如果计数器I的预置值减到0则温度寄存器的值将作加1运算,与此同时,用于补偿和修正测温过程中非线性的斜率累加器将输出一个与温度变化相对应的计数值,作为计数器I的新预置值,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环,直到计数器2控制的闸门时间到达亦即计数到时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度在默认的配置中DS18B20的测温分辨率为
0.0625°C以数位有效数据表示其中高位的s表示符号位,其数据格式如表1所示如000000110010001表示+
25.0625℃DS18B20的读写时序如下DJNZR2READLRETDS1820使用中注意事项DS1820虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点,但在实际应用中也应注意以下几方面的问题1较小的硬件开销需要相对复杂的软件进行补偿,由于DS1820与微处理器间采用串行数据传送,因此,在对DS1820进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果在使用PIJM、C等高级语言进行系统程序设计时,对DS1820操作部分最好采用汇编语言实现2在DS1820的有关资料中均未提及单总线上所挂DS182O数量问题,容易使人误认为可以挂任意多个DSI820在实际应用中并非如此当单总线上所挂DS1820超过8个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意3连接DS1820的总线电缆是有长度限制的试验中,当采用普通信号电缆传输长度超过50m时,读取的测温数据将发生错误当将总线电缆改为双绞线带屏蔽电缆时,正常通讯距离可达150m当采用每米绞合次数更多的双线线带屏蔽电缆时,正常通讯距离进一步加长这种情况主要是由总线分布电容使信号波形产生畸变造成的因此,在用DS1820进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配问题.4在DS1820测温程序设计中,向DS1820发出温度转换命令后,程序总要等待DSI820的返回信号,一旦某个DS182O接触不好或断线,当程序读该DSI820时,将没有返回信号,程序进入死循环这一点在进行DS1820硬件连接和软件设计时也要给予一定的重视测温电缆线建议采用屏蔽4芯双绞线,其中•对线接地线与信号线,另•组接VCC和地线,屏蔽层在源端单点接地TMR1R011111R1R0分辨率温度最大转换时间009位0110位1011位375ms1112位750ms寄存器内容字节地址温度值低位0温度值高位1高温限值TH2低温限值TL3配置寄存器4保留5保留6保留7CRC检验8指令约定代码功能读ROM33H读DS1820ROM中的编码(即64位地址)符合ROM55H发出此命令之后,接着发出64位ROM编码,访问单总线上与该编码相对应的DS1820使之作出响应,为下一步对该DS1820的读写作准备搜索ROMOFOH用于确定挂接在同一总线上DS1820的个数和识别64位ROM地址为操作各器件作好准备跳过ROM0CCH忽略64位ROM地址,直接向DS1820发温度变换命令适用于单片工作告警搜索命令0ECH执行后只有温度超过设定值上限或卜.限的片子才做出响应指令约定代码功能温度变换44H启动DS1820进行温度转换,转换时最长为500ms(典型为200ms)结果存入内部9字节RAM中读暂存器OBEH内部RAM中9字节的内容写暂存器4EH发出向内部RAM的
3、4字节写上、下限温度数据命令,紧跟该命令之后,是传送两字节的数据复制暂存器48H将RAM中第
3、4字节的内容复制到EEPROM中重调EEPROM0B8H将EEPROM中内容恢复到RAM中的第
3、4字节读供电方式0B4H读DS1820的供电模式寄生供电时DS1820发送“0外接电源供电DS1820发送PROCWRITEWRITE:MOVR
2.#8CLRCWR1:CLRDQMOVR7#6DJNZR7$RRCAMOVDQCMOVR7#23DJNZR
7.SSETBDQNOPDJNZR2WRISETBDQRET;读一个字节,出口:A=读入的字节PROCDREADDREAD:MOVR2#8READL:CLRCSETBDQNOPNOPCLRDQNOPNOPNOPSETBDQ;产生时间片MOVR
7.#7DJNZR7SMOVCDQMOVR
7.#23DJNZR7SRRCA。