西安工业大学毕业设计(论文) 3.在使用中不需要任何外围元件;
4.多个DS18B20可以并联在唯一的三线上,实现多点测温;
5.供电方式灵活,DS18B20可以通过内部寄生电路从数据线上获取电源,也可以外界电源;
6.测量参数可配置,DS18B20的测量分辨率可通过程序设定9~12位; 7.负压特性,电源极性接反时温度计不会因发热而烧毁,但不能正常工作; 8.掉电保护功能,DS18B20内部含有EEPROM,在系统掉电后,仍可保存功能。
下面将对其内部结构做以介绍,DS18B20采用3脚PR-35封装或8脚SOIC封装,其内部结构框图如图2-2所示。
64位ROM的结构开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。温度报警触发器TH和TL,可通过软件写入户报警上下限。DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为8字节的存储器,结构如图2-2所示。头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。该字节各位的定义如图3-4所示。低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分率。
图2.2 DS18B20内部结构图 图2.3 DS18B20引脚图 2.4.2DS18B20测温原理
DS18B20内部的低温度系数振荡器是一个振荡频率随温度变化很小的振荡器,为计数器1提供一个频率稳定的计数脉冲。
7
西安工业大学毕业设计(论文) 高温度系数振荡器是一个振荡频率对温度很敏感的振荡器,为计数器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位补码形式读出。 2.4.3DS18B20供电方式
DS18B20有两种供电方式,一种是寄生电源强上拉供电方式(图2.4),一种是外部供电方式(图2.5),如下图:
图2.4 寄生电源强上拉供电方式电路图
在寄生电源供电方式下,DS18B20从单线信号线上汲取能量:在信号线DQ 处于高电平期间把能量储存在内部电容里,在信号线处于低电平期间消耗电容上的电能工作,直到高电平到来再给寄生电源(电容)充电。为了使 DS18B20 在动态转换周期中获得足够的电流供应,当进行温度转换或拷贝到
8
西安工业大学毕业设计(论文) E2存储器操作时,用MOSFET 把 I/O 线直接拉到 VCC 就可提供足够的电流,在发出任何涉及到拷贝到E2存储器或启动温度转换的指令后,必须在最10μS内把I/O线转换到强上拉状态。在强上拉方式下可以解决电流供应不走的问题,因此也适合于多点测温应用,缺点就是要多占用一根I/O口线进行强上拉切换。
图2.5 外部电源供电方式电路
在外部电源供电方式下,DS18B20工作电源由VDD引脚接入,此时I/O线不需要强上拉,不存在电源电流不足的问题,可以保证转换精度,同时在总线上理论可以挂接任意多个 DS18B20传感器,组成多点测温系统。在外部供电的方式下,DS18B20的GND引脚不能悬空,否则不能转换温度,读取的温度总是85℃。 2.4.4DS18B20时序
DS18B20的工作方式看似简单,只是单线传输,直接解读,其实初始化与读写操作比较复杂,时序要求非常精确,一下将一一介绍
初始化:使用DS18B20时, 首先需将其复位, 然后才能执行其它命令。复位时, 主机将数据线拉为低电平并保持480us~960us,然后释放数据线, 再由上拉电阻将数据线拉高15us~60us,等待DS18B20发出存在脉冲, 存在脉冲有效时间为60 us~240us,这样,就完成了复位操作。其复位时序如图2.6所示
2.6 初始化时序 2.7 写时序
写时隙:在主机对DS18B20写数据时, 先将数据线置为高电平, 再变为低电平, 该低电平应大于1us。在数据线变为低电平后15us内,根据写“1”或写“0” 使数据线变高或继续为低。DS18B20将在数据线变成低电平后15us~ 60us内对数据线进行采样。要求写入DS18B20的数据持续时间应大于60us而小于120us,两次写数据之间的时间间隔应大于1us。写时隙的时序如图2.7所示
9
西安工业大学毕业设计(论文) 读时隙:当主机从DS18B20读数据时, 主机先将数据线置为高电平, 再变为低电平, 该低电平应大于1us,然后释放数据线,使其变为高电平。DS18B20在数据线从高电平变为低电平的15us内将数据送到数据线上。主机可在15us后读取数据线。读时隙的时序如图2.8所示
图2.8 读时隙
2.4.5DS18B20操作命令
主机可通过一线端口对DS18B20进行操作,其步骤为:初始化命令(复位)→ROM功能命令→存储器功能命令→执行/数据,DS18B20的ROM命令有5个,存储器命令有6个。命令的执行都是由复位、多个读时隙和写时隙基本时序单元组成。因此,只要将复位、读时隙、写时隙的时序了解清楚, 使用DS18B20就比较容易了, 其操作指令如下。
1.Read ROM[33H]
2.Match ROM[55H]:这个是匹配ROM命令,后跟64位ROM序列,让总线控制器在多点总线上定位一只特定的DS18B20。只有和64位ROM序列完全匹配的DS18B20才能响应随后的存储器操作。所有和64位ROM序列不匹配的从机都将等待复位脉冲。这条命令在总线上有单个或多个器件时都可以使用。
3.Skip ROM[0CCH]:这条命令允许总线控制器不用提供64位ROM编码就使用存储器操作命令,在单点总线情况下,可以节省时间。如果总线上不止一个从机,在Skip ROM命令之后跟着发一条读命令,由于多个从机同时传送信号,总线上就会发生数据冲突(漏极开路下拉效果相当于相“与”)。
4.Search ROM[0F0H]:当一个系统初次启动时,总线控制器可能并不知道单线总线上有多个器件或它们的64位编码,搜索ROM命令允许总线控制器用排除法识别总线上的所有从机的64位编码。
5.Alarm Search[0ECH]:这条命令的流程和Search ROM相同。然而,只有在最近一次测温后遇到符合报警条件的情况,DS18B20才会响应这条命令。报警条件定义为温度高于TH或低于TL。只要DS18B20不掉电,报警状态将一直保持,知道再一次测得的温度值达不到报警条件。
6.Write Scratchpad[4EH]:这个命令向DS18B20的暂存器TH和TL中写入数据。可以在任何时刻发出复位命令来中止写入。
7.Read Scratchpad[0BEH]:这个命令读取暂存器的内容。读取将从第1个字节开始,一直进行下去,直到第9(CRC)字节读完。如果不想读完所有字
10
西安工业大学毕业设计(论文) 节,控制器可以在任何时间发出复位命令来中止读取。
8.Copy Scratchpad[48H]:这个命令把暂存器的内容拷贝到DS18B20的E2ROM存储器里,即把温度报警触发字节存入非易失性存储器里。如果总线控制器在这条命令之后跟着发出读时间隙,而DS18B20又忙于把暂存器拷贝到E2存储器,DS18B20就会输出一个0,如果拷贝结束的话,DS18B20则输出1。如果使用寄生电源,总线控制器必须在这条命令发出后立即启动强上拉并保持10ms。
9.Convert T[44H]:这条命令启动一次温度转换而无需其他数据。温度转换命令被执行,而后DS18B20保持等待状态。如果总线控制器在这条命令之后跟着发出时间隙,而DS18B20又忙于做时间转换的话,DS18B20将在总线上输出0,若温度转换完成,则输出1,。如果使用寄生电源,总线控制必须在发出这条命令后立即启动强上拉,并保持500ms以上时间。
10.Recall E2:这条命令把报警触发器里的值拷贝回暂存器。这种拷贝操作在DS18B20上电时自动执行,这样器件一上电,暂存器里马上就存在有效的数据了。若在这条命令发出之后发出读数据隙,器件会输出温度转换忙的标识:0为忙,1为完成。
11.Read Power Supply[0B4H]:若把这条命令发给DS18B20后发出读时间隙,器件会返回它的电源模式:0为寄生电源,1为外部电源。
2.5 硬件设计
设计采用FPGA器件和DS18B20实现温度测量,核心芯片采用ALTERA公司生产的CycloneII系列EP2C8Q208C8芯片,将DS18B20与FPGA开发板焊接在一起,同时使能温度传感器和数码管显示模块,元件安装示意图如图2.9所示,该系统要正常工作,还需要电源电路、下载电路、时钟电路,复位电路等单元电路支持,下面将对其进行说明。
图2.9 FPGA开发板与DS18B20的连接
2.5.1FPGA最小系统硬件原理图
FPGA测温最小系统主要由FPGA器件、时钟电路、电源电路、显示电路
11