DS18B20作业原理及时序
- DS18B20原理与剖析
DS18B20是美国DALLAS半导体公司继DS1820之后最新推出的一种改善型智能温度传感器。与传统的热敏电阻比较,他能够直接读出被测温度并且可根据实践要求经过简略的编程完结9~12位的数字值读数方法。能够别离在93.75 ms和750 ms内完结9位和12位的数字量,并且从DS18B20读出的信息或写入DS18B20的信息仅需求一根口线(单线接口)读写,温度改换功率来源于数据总线,总线自身也能够向所挂接的DS18B20供电,而无需额定电源。因而运用DS18B20可使体系结构更趋简略,可靠性更高。他在测温精度、转化时刻、传输间隔、分辨率等方面较DS1820有了很大的改善,给用户带来了更便利的运用和更令人满意的作用。
1.DS18B20简介
DS18B20的测温原理
DS18B20作业进程及时序
DS18B20内部的低温度系数振动器是一个振动频率随温度改动很小的振动器,为计数器1供给一频率安稳的计数脉冲。
高温度系数振动器是一个振动频率对温度很灵敏的振动器,为计数器2供给一个频率随温度改动的计数脉冲。
初始时,温度存放器被预置成-55℃,每逢计数器1从预置数开端减计数到0时,温度存放器中存放的温度值就添加1℃,这个进程重复进行,直到计数器2计数到0时便间断。
初始时,计数器1预置的是与-55℃相对应的一个预置值。今后计数器1每一个循环的预置数都由斜率累加器供给。为了补偿振动器温度特性的非线性性,斜率累加器供给的预置数也随温度相应改动。计数器1的预置数也便是在给定温度处使温度存放器存放值添加1℃计数器所需求的计数个数。
DS18B20内部的比较器以四舍五入的量化方法确认温度存放器的最低有用位。在计数器2间断计数后,比较器将计数器1中的计数剩余值转化为温度值后与0.25℃进行比较,若低于0.25℃,温度存放器的最低位就置0;若高于0.25℃,最低位就置1;若高于0.75℃时,温度存放器的最低位就进位然后置0。这样,经过比较后所得的温度存放器的值便是终究读取的温度值了,其最终位代表0.5℃,四舍五入最大量化差错为±1/2LSB,即0.25℃。
温度存放器中的温度值以9位数据格式表明,最高位为符号位,其他8位以二进制补码方法表明温度值。测温完毕时,这9位数据转存到暂存存储器的前两个字节中,符号位占用榜首字节,8位温度数据占有第二字节。
DS18B20丈量温度时运用特有的温度丈量技能。DS18B20内部的低温度系数振动器能产生安稳的频率信号;相同的,高温度系数振动器则将被测温度转化成频率信号。当计数门翻开时,DS18B20进行计数,计数门注册时刻由高温度系数振动器决议。芯片内部还有斜率累加器,可对频率的非线性度加以补偿。丈量成果存入温度存放器中。一般情况下的温度值应该为9位,但因符号位扩展成高8位,所以最终以16位补码方法读出。
DS18B20作业进程一般遵从以下协议:初始化——ROM操作指令——存储器操作指令——处理数据
① 初始化
单总线上的一切处理均从初始化序列开端。初始化序列包含总线主机宣布一复位脉冲,接着由隶属器材送出存在脉冲。存在脉冲让总线操控器知道DS1820 在总线上且已准备好操作。
② ROM操作指令
一旦总线主机检测到隶属器材的存在,它便能够宣布器材ROM操作指令之一。一切ROM操作指令均为8位长。这些指令列表如下:
Read ROM(读ROM)[33h]
此指令答应总线主机读DS18B20的8位产品系列编码,仅有的48位序列号,以及8位的CRC。此指令只能在总线上仅有一个DS18B20的情况下能够运用。假如总线上存在多于一个的隶属器材,那么当一切从片妄图一起发送时将产生数据抵触的现象(漏极开路会产生线与的成果)。
Match ROM( 契合ROM)[55h]
此指令后继以64位的ROM数据序列,答应总线主机对多点总线上特定的DS18B20寻址。只需与64位ROM序列严厉相符的DS18B20才能对后继的存贮器操作指令作出呼应。一切与64位ROM序列不符的从片将等候复位脉冲。此指令在总线上有单个或多个器材的情况下均可运用。
Skip ROM( 越过ROM )[CCh]
在单点总线体系中,此指令经过答应总线主机不供给64位ROM编码而拜访存储器操作来节省时刻。假如在总线上存在多于一个的隶属器材并且在Skip ROM指令之后宣布读指令,那么因为多个从片一起发送数据,会在总线上产生数据抵触(漏极开路下拉会产生线与的作用)。
Search ROM( 查找ROM)[F0h]
当体系开端作业时,总线主机或许不知道单线总线上的器材个数或许不知道其64位ROM编码。查找ROM指令答应总线操控器用排除法辨认总线上的一切从机的64位编码。
Alarm Search(告警查找)[ECh]
此指令的流程与查找ROM指令相同。可是,仅在最近一次温度丈量呈现告警的情况下,DS18B20才对此指令作出呼应。告警的条件界说为温度高于TH 或低于TL。只需DS18B20一上电,告警条件就坚持在设置状况,直到另一次温度丈量显示出非告警值或许改动TH或TL的设置,使得丈量值再一次坐落答应的规模之内。贮存在EEPROM内的触发器值用于告警。
③ 存储器操作指令
Write Scratchpad(写暂存存储器)[4Eh]
这个指令向DS18B20的暂存器中写入数据,开端方位在地址2。接下来写入的两个字节将被存到暂存器中的地址方位2和3。能够在任何时刻宣布复位指令来间断写入。
Read Scratchpad(读暂存存储器)[BEh]
这个指令读取暂存器的内容。读取将从字节0开端,一向进行下去,直到第9(字节8,CRC)字节读完。假如不想读完一切字节,操控器能够在任何时刻宣布复位指令来间断读取。
Copy Scratchpad(仿制暂存存储器)[48h]
这条指令把暂存器的内容复制到DS18B20的E2存储器里,即把温度报警触发字节存入非易失性存储器里。假如总线操控器在这条指令之后跟着宣布读时刻隙,而DS18B20又正在忙于把暂存器复制到E2存储器,DS18B20就会输出一个“0”,假如复制完毕的话,DS18B20 则输出“1”。假如运用寄生电源,总线操控器有必要在这条指令宣布后当即起动强上拉并最少坚持10ms。
Convert T(温度改换)[44h]
这条指令发动一次温度转化而无需其他数据。温度转化指令被执行,然后DS18B20坚持等候状况。假如总线操控器在这条指令之后跟着宣布读时刻隙,而DS18B20又忙于做时刻转化的话,DS18B20将在总线上输出“0”,若温度转化完结,则输出“1”。假如运用寄生电源,总线操控器有必要在宣布这条指令后当即起动强上拉,并坚持500ms。
Recall E2(从头调整E2)[B8h]
这条指令把贮存在E2中温度触发器的值从头调至暂存存储器。这种从头调出的操作在对DS18B20上电时也主动产生,因而只需器材一上电,暂存存储器内就有了有用的数据。在这条指令宣布之后,关于所宣布的榜首个读数据时刻片,器材会输出温度转化忙的标识:“0”=忙,“1”=准备就绪。
Read Power Supply(读电源)[B4h]
关于在此指令发送至DS18B20之后所宣布的榜首读数据的时刻片,器材都会给出其电源方法的信号:“0”=寄生电源供电,“1”=外部电源供电。
④ 处理数据
DS18B20的高速暂存存储器由9个字节组成,其分配如图3所示。当温度转化指令发布后,经转化所得的温度值以二字节补码方法存放在高速暂存存储器的第0和第1个字节。单片机可经过单线接口读到该数据,读取时低位在前,高位在后。
图3 高速暂存存储器分配图
温度/0C |
二进制表明 |
十六进制表明 |
|||||||||||
符号位(5位) |
数据位(11位) |
||||||||||||
+125 |
0 0 0 0 0 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
07D0H |
+25.0625 |
0 0 0 0 0 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
0191H |
+10.125 |
0 0 0 0 0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
00A2H |
+0.5 |
0 0 0 0 0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0008H |
0 |
0 0 0 0 0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0000H |
-0.5 |
1 1 1 1 1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
FFF8H |
-10.125 |
1 1 1 1 1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
FF5EH |
-25.625 |
1 1 1 1 1 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
FE6FH |
-55 |
1 1 1 1 1 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
FC90H |
上表是DS18B20温度收集转化后得到的12位数据,存储在DS18B20的两个8比特的RAM中,二进制中的前面5位是符号位,假如测得的温度大于或等于0,这5位为0,只需将测到的数值乘于0.0625即可得到实践温度;假如温度小于0,这5位为1,测到的数值需求取反加1再乘于0.0625即可得到实践温度。
温度转化核算方法举例:
例如当DS18B20收集到+125℃的实践温度后,输出为07D0H,则:
实践温度=07D0H╳0.0625=2000╳0.0625=1250C。
例如当DS18B20收集到-55℃的实践温度后,输出为FC90H,则应先将11位数据位取反加1得370H(符号位不变,也不作为核算),则:
实践温度=370H╳0.0625=880╳0.0625=550C。