1)DS18B20性能与特点
传统的温度检测可以使用热敏电阻作为温度敏感元件,热敏电阻的主要优点是成本低,但需后续信号处理电路,而且可靠性相对较差,准确度和精度都较低。美国Dallas公司推出的DS18B20数字式温度传感器与传统的热敏电阻温度传感器不同,它能够直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式,可以分别在93.75ms和750ms内将温度值转化9位和12位的数字量。因而使用DS18B20可使系统结构更简单,可靠性更高。DS18B20芯片的耗电量很小,从总线上“偷”一点电(空闲时数微瓦,工作时数毫瓦)存储在片内的电容中就可正常工作,一般不用另加电源。最可贵的是这些芯片在检测点已把被测信号数字化了,因此在单总线上传送的是数字信号,这使得系统的抗干扰性好、可靠性高、传输距离远。
DS18B20有如下特点[2]:
(1)单线接口,只有一根信号线与CPU连接;
(2)不需要备份电源,可通过信号线供电,电源电压范围为3.3~5V;
(3)传送串行数据,不需要外部元件;
(4)温度测量范围为-55℃~+125℃,-10~+85℃时测量精度为±0.5℃;
(5)用户可自行设定非易失性的报警上下限值;
(6)报警搜索命令可以识别哪片DS18B20温度超限;
(7)通过编程可实现9~12位的数字值读数方式(出厂时被设置为12位);
(8)在93.75ms和750ms内将温度值转化9位和12位的数字量;
(9)零功耗等待;
(10)现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性,适合于恶劣环境的现场温度测量,如环境控制、设备或过程控制、测温类消费电子产品等。
2)DS18B20引脚排列及其内部结构
DS18B20的封装有3脚、6脚和8脚三种方式,如图2-5所示,其中DQ为数字信号输入/输出端,GND为地,VDD为外接供电电源输入端(在寄生电源接线方式时接地)。
图2-5 DS18B20封装方式
DS18B20内部结构如图2-6所示。它主要由64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器组成。
图2-6 DS18B20的内部结构框图
光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作该DS18B20的地址序列码。64位光刻ROM序列号的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC码)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。
DS18B20中的温度传感器可完成对温度的测量,用16位符号扩展的二进制补码读数形式提供,以0.062 5℃/LSB形式表达,例如+125℃的数字输出为07D0H,+25.062 5℃的数字输出为0191H,-25.062 5℃的数字输出为FF6FH,-55℃的数字输出为FC90H,如表2-1所列。
表2-1 DS18B20中的温度传感器对温度的测量值
DS18B20完成温度转换后,就把测得的温度值与TH、TL(TH和TL分别为最高和最低检测温度)作比较。若T>TH或T<TL,则将该器件内的告警标志置位,并对主机发出的告警搜索命令作出响应。因此,可用多个DS18B20同时测量温度并进行告警搜索。一旦某测温点超限,主机利用告警搜索命令即可识别正在告警的器件并读出其序号,而不必考虑非告警器件。高低温报警触发器TH和TL、配置寄存器均由一个字节的EEPROM组成,使用一个存储器功能命令可对TH、TL或配置寄存器写入。
配置寄存器的R0和R1决定温度转换的精度,R1R0=00,9位精度,最大转换时间93.75ms;R1R0=01,10位精度,最大转换时间187.5 ms;R1R0=10,11位精度,最大转 换时间375ms;R1R0=11,12位精度,最大转换时间750ms;未编程时默认为12位精度。分辨率设定及用户设定的报警温度存储在EEPROM中,掉电后仍然保存。
高速暂存寄存器占用9个字节的存储单元,如表2-2所列。开始两个字节包含被测温度的数字量信息;第3、4、5字节分别是TH、TL、配置寄存器的临时复制,每一次上电复位时被刷新;第6字节未用,表现为全逻辑1;第7、8字节为计数剩余值和每度计数值;第9字节读出的是前面所有8个字节的CRC码,可用来保证通信正确。
表2-2 DS18B20高速暂存寄存器分布
3)DS18B20测温原理
DS18B20的测温原理如图2-7所示,图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在-55℃所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置值将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。
图2-7 DS18B20测温原理图
DS18B20在正常使用时的测温分辨率为0.5℃,如果要更高的精度,则在对DS18B20测温原理进行详细分析的基础上,采取直接读取DS18B20内部暂存寄存器的方法,将DS18B20的测温分辨率提高到0.1~0.01℃。
DS18B20内部暂存寄存器的分布如表2-2所列,其中第7字节存放的是当温度寄存器停止增值时计数器1的计数剩余值,第8字节存放的是每度所对应的计数值,这样我们就可以通过下面的方法获得高分辨率的温度测量结果。首先用DS18B20提供的读暂存寄存器指令(BEH),读出以0.5℃为分辨率的温度测量结果,然后切去测量结果中的最低有效位(LSB),得到所测实际温度整数部分T整数,再用BEH指令读取计数器1的计数剩余值M剩余和每度计数值M每度,考虑到DS18B20测量温度的整数部分是以0.25℃、0.75℃为进位界限的关系,实际温度T可用下式计算得到:
4)DS18B20的操作
(1)初始化
执行总线上的所有操作前要初始化主机,先发复位信号,之后从机发出在线信号,后者通知主机DS18B20在线并等待接收命令。
(2)ROM操作(www.xing528.com)
主机收到DS18B20在线信号后,就可以发送四个ROM操作命令中的一个,这些命令均为8位的16进制数(最低位在前),现将这些命令说明如下:
读命令(33H)
通过该命令主机可以读出ROM中的8位系列产品代码、48位产品序列号和8位CRC码。读命令仅用在单个DS18B20在线情况,当多于一个时由于DS18B20为开漏输出将产生线与,从而引起数据冲突。
选择定位命令(55H)
多片DS18B20在线时,主机发出该命令和一个64位数列,DS18B20内部ROM与主机数列一致者,才响应主机发送的寄存器操作命令,其他DS18B20等待复位。该命令也可以用于单片DS18B20的情况。
跳过ROM序列号检测命令(CCH)
对于单片DS18B20在线系统,该命令允许主机跳过ROM序列号检测而直接对寄存器操作,从而节省时间。对于多片DS18B20在线系统,该命令将引起数据冲突。
查询命令(F0H)
当系统初建时,主机可能不知道总线上有多少设备以及它们各自的64位序列号,用该命令可以做到这点。
报警查询命令(ECH)
该命令的操作过程同ROM查询命令,但是,仅当上次温度测量值已置位报警标志(由于高于TH或低于TL)时,DS18B20才响应该命令,如果DS18B20处于上电状态,该标志将保持有效,直到遇到下列两种情况:①本次测量温度发生变化,测量值处于TH、TL之间;②TH、TL改变,温度值处于新的范围之间。设置报警时要考虑到EEROM中的值。
(3)寄存器操作
写入(4EH)
用此命令把数据写入寄存器第2~4字节,从第2字节(TH)开始。复位信号发出之前必须把这三个字节写完。
读出(BEH)
用此命令读出寄存器中的内容,从第1字节开始,直到读完第9字节,如果仅需要寄存器中部分内容,主机可以在合适时刻发送复位命令结束该过程。
复制(48H)
用该命令把暂存器第2~4字节转存到DS18B20的EEROM中。如果DS18B20是由信号线供电,主机发出此命令后,总线必须保证至少10ms的上拉,当发出命令后,主机发出读时隙来读总线,如果转存正在进行,读结果为0,转存结束时为1。
开始转换(44H)
DS18B20收到该命令后立刻开始温度转换,不需要其他数据。此时DS18B20处于空闲状态,当温度转换正在进行时,主机读总线将收到0,转换结束时为1。如果DS18B20是由信号线供电,主机发出此命令后主机必须立即提供至少相应于分辨率的温度转换时间的上拉电平。
回调(B8H)
执行该命令可把EEROM中的内容回调到寄存器TH、TL和设置寄存器单元中,DS18B20上电时能自动回调,因此设备上电后TH、TL就存在有效数据。该命令发出后,如果主机跟着读总线,读到0意味着忙,读到1为回调结束。
读电源标志(B4H)
主机发出命令后读总线,DS18B20将发送电源标志,0为信号线供电,1为外接电源。使用单片DS18B20时,总线接5kΩ上拉电阻即可;如挂接多片DS18B20,应适当降低上拉电阻值,调试时,可把上拉电阻换作一电位器,逐步调节电位器直到获得正确的温度数据。读写DS18B20时,应严格按照既定的时序操作,否则读写无效。
(4)DS18B20的读写操作
复位
对DS18B20操作时,首先要将它复位。复位时,DQ线被拉为低电平,时间为480~960μs;接着将数据线拉为高电平,时间为15~60μs;最后DS18B20发出60~240μs的低电平作为应答信号,这时主机才能进行其他操作。
写操作
将数据线从高电平拉至低电平,产生写起始信号。从DQ线的下降沿起计时,在15μs到60μs这段时间内对数据线进行检测,如数据线为高电平,则写1;若为低电平,则写0,完成了一个写周期。在开始另一个写周期前,必须有1μs以上的高电平恢复期。每个写周期必须要有60μs以上的持续期。
读操作
主机将数据线从高电平拉至低电平1μs以上,再使数据线升为高电平,从而产生读起始信号。从主机将数据线从高电平拉至低电平起15μs至60μs,主机读取数据。每个读周期最短的持续期为60μs。周期之间必须有1μs以上的高电平恢复期。
5)应用电路及注意事项
以AT89S52单片机为核心的8路温度采集和显示的DS18B20应用系统如图2-8所示[3]。8路温度传感器由8个DS18B20组成,显示器采用1602LCM液晶显示模块,它是一种可编程的器件。本系统可以定时循环检测和通过1602LCM显示8路的温度,同时可显示路数,可以由开关S1~S8控制显示某一路的温度,D1~D8也是用来显示哪一路温度被采集和显示的。限于篇幅,有关控制软件不在这里说明。
图2-8 基于DS18B20的多点测温应用系统
DS18B20虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点,但在实际应用中也应注意以下几方面的问题。
(1)较小的硬件开销需要相对复杂的软件进行补偿,由于DS18B20与微处理器间采用串行数据传送,因此在对DS18B20进行读写编程时,必须严格地保证读写时序,否则将无法读取测温结果。
(2)在DS18B20的有关资料中均未提及单总线上所挂DS18B20数量问题,容易使人误认为可以挂任意多个。在实际应用中并非如此,当单总线上所挂DS18B20超过8个时,就需解决微处理器的总线驱动问题,所以在进行多点测温系统设计时要加以注意。
(3)连接DS18B20的总线电缆是有长度限制的。试验中,当采用普通信号电缆传输长度超过50m时,读取的测温数据将发生错误。当将总线电缆改为双绞线带屏蔽电缆时,正常通信距离可达150m,当采用每米绞合次数更多的双绞线带屏蔽电缆时,正常通信距离进一步加长。这种情况主要是由总线分布电容使信号波形产生畸变造成的。因此,在用DS18B20进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配问题。
(4)在DS18B20测温程序设计中,向DS18B20发出温度转换命令后,程序总要等待DS18B20的返回信号,一旦某个DS18B20接触不好或断线,当程序读该DS18B20时,将没有返回信号,程序进行入循环。这一点在进行DS18B20硬件连接和软件设计时也要给予一定的重视。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。