ds18b20温度传感器

2023-06-17

第一篇:ds18b20温度传感器

数字温度传感器DS18B20控制接口设计

摘 要: DS18B20是一款经典的单总线数字温度传感器芯片,较传统的温度传感器具有结构简单、体积小、功耗小、抗干扰能力强、使用简单、可组网实现多点温度测量等优点。本设计简要介绍了数字温度传感器DS18B20 的特性及工作原理,着重论述了用FPGA实现对此传感器的控制,并将测到的温度在LED数码管上显示出来。

关键词:DS18B20;温度传感器;FPGA;LED数码管

Abstract: DS18B20 is a classic single-bus digital temperature sensor chip, the more traditional temperature sensor has a simple structure, small size, low power consumption, and anti-interference ability, easy to use networking to achieve multi-point temperature measurement. The design brief describes the features and working principle of the digital temperature sensor DS18B20, focuses on the control of this sensor using FPGA, and the measured temperature is displayed on the LED digital tube. Keywords: DS18B20; temperature sensor; FPGA; LED digital tube

1 引言

传统的温度传感器系统大都采用放大、调理、A/ D 转换, 转换后的数字信号送入计算机处理, 处理电路复杂、可靠性相对较差, 占用计算机的资源较多。DS18B20 是一线制数字温度传感器, 它可将温度信号直接转换成串行数字信号送给微处理器, 电路简单, 成本低, 每一只DS18B20 内部的ROM 存储器都有唯一的64位系列号, 在1 根地址/ 信号线上可以挂接多个DS18B20, 易于扩展, 便于 组网和多点测量。

随着科技的发展 ,温度的实时显示系统应用越来越广泛 ,比如空调遥控器上当前室温的显示、热水器温度的显示等等。实现温度的实时采集与显示系统有很多种解决方案 ,本文使用全数字温度传感器DS18B20来实现温度的实时采集FPGA作为控制中心与数据桥梁;LED数码管作为温度实时显示器件。其中DS18B20作为FPGA的外部信号源,把所采集到的温度转换为数字信号,通过接口 (113脚)传给FPGA,FPGA启动ROM内的控制程序驱动LED数码管,通过IO口和数据线把数据传送给LED数码管,将采集到的温度实时显示出来。该设计结构简单、测温准确,成本低,工作稳定可靠,具有一定的实际应用价值。

2 DS18B20数字温度传感器介绍

DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。DS18B20的性能特点如下:

2.1 DS18B20的性能特点

1独特的单线接口仅需要一个端口引脚进行通信; ○2多个DS18B20可以并联在惟一的三线上,实现多点组网功能; ○3无须外部器件; ○4可通过数据线供电,电压范围为3.0~5.5V; ○5零待机功耗; ○6温度以9或12位数字; ○7用户可定义报警设置; ○8报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件; ○9负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;○ 2.2 DS18B20的内部结构图

DS18B20采用3脚PR-35封装或8脚SOIC封装,其内部结构框图如图2-1所示。

图2-1 DS18B20内部结构框图 图2-2 DS18B20字节定义

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.3 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位补码形式读出。 2.4 DS18B20供电方式

DS18B20有两种供电方式,一种是寄生电源强上拉供电方式,一种是外部供电方式,如下图:

图2-3 寄生电源强上拉供电方式电路图

在寄生电源供电方式下,DS18B20 从单线信号线上汲取能量:在信号线 DQ 处于高电平期间把能量储存在内部电容里,在信号线处于低电平期间消耗电容上的电能工作,直到高电平到来再给寄生电源(电容)充电。为了使 DS18B20 在动态转换周期中获得足够的电流供应,当进行温度转换或拷贝到 E2 存储器操作时,用 MOSFET 把 I/O 线直接拉到 VCC 就可提供足够的电流,在发出任何涉及到拷贝到 E2 存储器或启动温度转换的指令后,必须在最多 10μS 内把 I/O 线转换到强上拉状态。在强上拉方式下可以解决电流供应不走的问题,因此也适合于多点测温应用,缺点就是要多占用一根 I/O 口线进行强上拉切换。

图2-4 外部电源供电方式电路图

在外部电源供电方式下,DS18B20 工作电源由 VDD 引脚接入,此时 I/O 线不需要强上拉,不存在电源电流不足的问题,可以保证转换精度,同时在总线上理论可以挂接任意多个 DS18B20 传感器,组成多点测温系统。在外部供电的方式下,DS18B20的GND引脚不能悬空,否则不能转换温度,读取的温度总是 85℃。 3 设计需求

1温度测量范围:-55℃~+125℃ ○2可编程为9位~12位A/D转换精度 ○3测温分辨率可达0.0625℃ ○4 LED数码管直读显示 ○4 设计方案

4.1 硬件设计

将[DF2C8]FPGA 核心板和[EB-F2]基础实验板连接在一起,同时使能DS18B20 模块和数码管模块:数码管使能:用“短路帽”将实验板上的JP4和JP5全部短接。DS18B20 温度传感器使能跳线JP10 全部短接,元件安装示意如下图4-1和4-2(注意方向,半圆形的一边朝板子内部,平面朝外,和板上的图示一致)。

图 4-1:数码管使能图示 图 4-2:温度传感器安装和使能图示

4.1.1 温度传感器 DS18B20 电路

基础实验板上提供了一个由DS18B20构成的温度测量模块,其原理如图4-3所示。该电路选择外部供电方式。外部电源供电方式工作稳定可靠, 抗干扰能力强。

图4-3 单线制温度传感器 DS18B20 电路图

DS18B20与[DF2C8]FPGA核心板的连接关系如表4-1所示

表 4-1:DS18B20与[DF2C8]FPGA核心板连接时的管脚对应关系

4.1.2 数码管显示电路

基础实验板上具有2个共阳极的位七段数码管,构成8位构,其电路如图4-4 所示。

图 4-4:七段数码管显示电路图

数码管的控制引脚由两个跳线JP4和JP5使能(如图4-1所示) R10~R17是段码上的限流电阻,位码由于电流较大,采用了PNP三极管驱动。当位码驱动信号为低电平(0)时,对应的数码管才能操作;当段码驱动信号为低电平(0)时,对应的段码点亮。数码管不核心板连接时的管脚对应如表4-2所示:

表 4-2:数码管与[DF2C8]FPGA核心板连接时的管脚对应关系

4.2 HDL编码 4.2.1 时序

(1)复位: 使用DS18B20 时, 首先需将其复位, 然后才能执行其它命令。复位时, 主机将数据线拉为低电平并保持480Ls~ 960Ls, 然后释放数据线, 再由上拉电阻将数据线拉高15~ 60Ls, 等待DS18B20 发出存在脉冲, 存在脉冲有效时间为60~ 240Ls, 这样, 就完成了复位操作。其复位时序如图4-5所示。

图4-5:初始化时序

图4-6:写时序

(2)写时隙: 在主机对DS18B20 写数据时, 先将数据线置为高电平, 再变为低电平, 该低电平应大于1us。在数据线变为低电平后15us 内, 根据写“1”或写“0” 使数据线变高或继续为低。DS18B20 将在数据线变成低电平后15us~ 60us 内对数据线进行采样。要求写入DS18B20 的数据持续时间应大于60us 而小于120us, 两次写数据之间的时间间隔应大于1us。写时隙的时序如图4-6 所示

(3)读时隙 :当主机从DS18B20 读数据时, 主机先将数据线置为高电平, 再变为低电平, 该低电平应大于1us, 然后释放数据线, 使其变为高电平。DS18B20 在数据线从高电平变为低电平的15us 内将数据送到数据线上。主机可在15us 后读取数据线。读时隙的时序如图4-7 所示。

图4-7 :读时隙

4.2.2 DS18B20 的操作命令

主机可通过一线端口对DS18B20 进行操作, 其步骤为: 复位( 初始化命令) -> ROM 功能命令-> 存储器功能命令-> 执行/ 数据, DS18B20 的ROM 命令有5个( 见表1) , 存储器命令有6个( 见表2) 。命令的执行都是由复位、多个读时隙和写时隙基本时序单元组成。因此, 只要将复位、读时隙、写时隙的时序了解清楚, 使用DS18B20 就比较容易了, 时序如上文所述。

表4-3: 存储器命令操作表 表4-4:ROM命令功能操作表

4.2.3 Verilog HDL编码

详细Verilog HDL代码参见工程文件:DF2C8_13_DS18B20 工程文件中含有三个v 文件,LED_CTL.v 是数码管显示功能模块,DS18B20_CTL.v 是温度传感器的控制模块,TEMP.v 为顶层模块,实例化了前面两个模块,并将采集的温度值送至数码管中进行显示。其中最主要的温度传感器的控制模块,DS18B20_CTL.v。该程序对DS18B20 进行控制, 不仅可以简化程序, 还可以缩短1 次温度转换所需的时间. 这样的话, 1 次温度转换和数字温度值输出循环所涉及到的控制命令、数据交换和所需时隙如图4-8所示。

.

图4-8:1次温度转换的控制命令和时隙

5 仿真测试结果

5.1 仿真波形

温度测量模块仿真结果如图6-1所示:

图5-1:仿真波形

5.2 结果显示

下载配置文件后,可在数码管上观察到带一位小数的温度数值。如果用手捏住传感器,会发现显示的温度在升高。如下图:

图5-2 测温效果图示

参考文献:

[1] 沙占友 集成传感器的应用[M]. 中国电力出版社. [2] 罗钧,童景琳. 智能传感器数据采集与信号处理[M]. 化学工业出版社

[3] 周月霞,孙传友. DS18B20硬件连接及软件编程[J]. 传感器世界,2001,12. [4] 王晓娟,张海燕,梁延兴.基于DS18B20的温度实时采集与显示系统的设计与实现[J]. , 2007:38-41. [5] 党 峰, 王敬农, 高国旺. 基于DS18B20 的数字式温度计的实现[ J] . 山西电子技术, 2007( 3) [6] 金伟正. 单线数字温度传感器的原理与应用[ J] . 仪表技术与传感器, 2000( 7) : 42- 43. [7]DS18B20 Datasheet [ EB/ OL] . Dalla s: Dallas Semico nductor Cor po r atio n, 2005.

第二篇:DS18B20学习总结

及其高精度温度测量的实现

1.1 DS18B20简介

DS18B20是美国DALLAS半导体公司生产的可组网数字式温度传感器. 主要由三个数据部件组成:64的激光ROM,温度灵敏原件,非易失性温度告警触发器TH和TL。 封装如图一:

图一 1.

2DS18B20的特点:

1. 独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。

2. DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现多点测温。 3. DS18B20在使用中不需要任何外围元件。

4. 测温范围-55℃~+125℃,固有测温分辨率0.5℃。 5. 测量结果以9位数字量方式串行传送。

内部结构框图如图二所示。

图二

2.1 访问温度计的协议:

(一)初始化

(二)ROM操作命令

(三)存贮器操作命令

(四)处理/数据

由热敏原件中晶振特性计算出所测的温度。 注意:复位操作如下图三

图三 必需要给DS18B20输入脉冲激活其复位功能。

DS18B20的驱动程序:

/*************************此部分为18B20的驱动程序*************************************/

#include #include sbit D18B20=P3^7; sbit error=P3^4; #define NOP() _nop_() /* 定义空指令 */ #define _Nop() _nop_() /*定义空指令*/ void TempDelay (unsigned char idata us); void Init18b20 (void); void WriteByte (unsigned char idata wr); //单字节写入 void read_bytes (unsigned char idata j); unsigned char CRC (unsigned char j); void GemTemp (void); void Config18b20 (void); void ReadID (void); void TemperatuerResult(void); bit flag; unsigned int idata Temperature; unsigned char idata temp_buff[9]; //存储读取的字节,read scratchpad为9字节,read rom ID为8字节 unsigned char idata id_buff[8];

unsigned char idata crc_data; unsigned char code CrcTable [256]={ 0, 94, 188, 226, 97, 63, 221, 131, 194, 156, 126, 32, 163, 253, 31, 65, 157, 195, 33, 127, 252, 162, 64, 30, 95, 1, 227, 189, 62, 96, 130, 220, 35, 125, 159, 193, 66, 28, 254, 160, 225, 191, 93, 3, 128, 222, 60, 98, 190, 224, 2, 92, 223, 129, 99, 61, 124, 34, 192, 158, 29, 67, 161, 255, 70, 24, 250, 164, 39, 121, 155, 197, 132, 218, 56, 102, 229, 187, 89, 7, 219, 133, 103, 57, 186, 228, 6, 88, 25, 71, 165, 251, 120, 38, 196, 154, 101, 59, 217, 135, 4, 90, 184, 230, 167, 249, 27, 69, 198, 152, 122, 36, 248, 166, 68, 26, 153, 199, 37, 123, 58, 100, 134, 216, 91, 5, 231, 185, 140, 210, 48, 110, 237, 179, 81, 15, 78, 16, 242, 172, 47, 113, 147, 205, 17, 79, 173, 243, 112, 46, 204, 146, 211, 141, 111, 49, 178, 236, 14, 80, 175, 241, 19, 77, 206, 144, 114, 44, 109, 51, 209, 143, 12, 82, 176, 238, 50, 108, 142, 208, 83, 13, 239, 177, 240, 174, 76, 18, 145, 207, 45, 115, 202, 148, 118, 40, 171, 245, 23, 73, 8, 86, 180, 234, 105, 55, 213, 139, 87, 9, 235, 181, 54, 104, 138, 212, 149, 203, 41, 119, 244, 170, 72, 22, 233, 183, 85, 11, 136, 214, 52, 106, 43, 117, 151, 201, 74, 20, 246, 168, 116, 42, 200, 150, 21, 75, 169, 247, 182, 232, 10, 84, 215, 137, 107, 53};

void GetTemp() {

if(TIM==100)

{ TIM=0;

TemperatuerResult();

每隔 1000ms 读取温度。

void TemperatuerResult(void) {

p = id_buff;

ReadID();

//先确定是第几个DS18B20

Config18b20(); //配置DS18B20的报警温度和分辨度

Init18b20 ();

//复位)

WriteByte(0xcc);

//skip rom

WriteByte(0x44);

//Temperature convert

Init18b20 ();

//复位)

WriteByte(0xcc);

//skip rom

WriteByte(0xbe);

//read Temperature

p = temp_buff;

GemTemp(); //读取温度

}

void GemTemp (void) {

read_bytes (9);

if (CRC(9)==0) //校验正确

{

Temperature = temp_buff[1]*0x100 + temp_buff[0]; //

Temperature *= 0.0625;

Temperature /= 16;

TempDelay(1);

} } *Function:CRC校验 *parameter: *Return: *Modify: *************************************************************/ unsigned char CRC (unsigned char j) {

unsigned char idata i,crc_data=0;

for(i=0;i

crc_data = CrcTable[crc_data^temp_buff[i]];

return (crc_data); }

/************************************************************ *Function:向18B20写入一个字节 *parameter: *Return: *Modify:

void WriteByte (unsigned char idata wr) //单字节写入 {

unsigned char idata i;

for (i=0;i<8;i++)

{

D18B20 = 0;

_nop_();

D18B20=wr&0x01;

TempDelay(3);

//delay 45 uS //

5 _nop_();

_nop_();

D18B20=1;

wr >>= 1;

} }

/************************************************************ *Function:读18B20的一个字节 *parameter: *Return: *Modify: *************************************************************/ unsigned char ReadByte (void)

//读取单字节

unsigned char idata i,u=0;

for(i=0;i<8;i++)

{

D18B20 = 0;

u >>= 1;

D18B20 = 1;

if(D18B20==1)

u |= 0x80;

TempDelay (2);

_nop_();

}

return(u); } /************************************************************ *Function:读18B20 *parameter: *Return: *Modify: *************************************************************/ void read_bytes (unsigned char idata j) {

unsigned char idata i;

for(i=0;i

{

*p = ReadByte();

p++;

} } /************************************************************ *Function:延时处理 *parameter: *Return: *Modify: *************************************************************/ void TempDelay (unsigned char idata us) {

while(us--); } /************************************************************ *Function:18B20初始化 *parameter: *Return: *Modify: *************************************************************/ void Init18b20 (void) {

D18B20=1;

_nop_();

D18B20=0;

TempDelay(80);

//delay 530 uS//80

_nop_();

D18B20=1;

TempDelay(14);

//delay 100 uS//14

_nop_();

_nop_();

_nop_();

if(D18B20==0)

{flag = 1; error=0; }

//detect 1820 success!

else

{flag = 0; error=1; }

//detect 1820 fail!

TempDelay(20);

//20

_nop_();

_nop_();

D18B20 = 1; }

/************************************************************

向18B20写入一个字节 *parameter: *Return: *Modify: *************************************************************/ void WriteByte (unsigned char idata wr) //单字节写入 {

unsigned char idata i;

for (i=0;i<8;i++)

{

D18B20 = 0;

_nop_();

D18B20=wr&0x01;

TempDelay(3);

//delay 45 uS //5

_nop_();

_nop_();

D18B20=1;

wr >>= 1;

} }

/************************************************************

读18B20的一个字节

*/ unsigned char ReadByte (void)

//读取单字节 {

unsigned char idata i,u=0;

for(i=0;i<8;i++)

{

D18B20 = 0;

u >>= 1;

D18B20 = 1;

if(D18B20==1)

u |= 0x80;

TempDelay (2);

_nop_();

}

return(u); }

/************************************************************ 3.1.2

SPI数据线配置。

/*************************此部分为74HC595的驱动程序使用SPI总线连接*************************************/

#include #include

#define NOP()

_nop_()

/* 定义空指令 */ #define _Nop() _nop_()

/*?定义空指令*/ void HC595SendData(unsigned int SendVal);

//SPI IO sbit

MOSIO =P1^5; sbit

R_CLK =P1^6; sbit

S_CLK =P1^7; sbit

IN_PL =P3^4;

//74HC165 shift load

把数据加载到锁存器中 sbit

IN_Dat=P3^5;

//74HC165 output

数据移出 sbit

OE

=P3^6;

/********************************************************************************************************* ** 函数名称: HC595SendData ** 功能描述: 向SPI总线发送数据

*********************************************************************************************************/ void HC595SendData(unsigned int SendVal) {

unsigned char i;

for(i=0;i<16;i++)

{

if((SendVal<

else MOSIO=0;

S_CLK=0;

NOP();

NOP();

S_CLK=1;

}

R_CLK=0; //set dataline low

NOP();

NOP();

R_CLK=1; //片选

OE=0; }

3.1.

3试验数码管上显示温度

#include extern GetTemp();

//声明引用外部函数 extern unsigned int idata Temperature;

// 声明引用外部变量 void delay(unsigned int i);

sbit

LS138A=P2^2;

//管脚定义 sbit

LS138B=P2^3; sbit

LS138C=P2^4;

//此表为 LED 的字模, 共阴数码管 0-9 -

unsigned char code Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; unsigned long LedOut[5],LedNumVal; void system_Ini() {

TMOD|= 0x11;

TH1 = 0xD8;

//10

TL1 = 0xF0;

IE = 0x8A;

TR1 = 1 main() { unsigned char i;

system_Ini();

while(1)

{

GetTemp();

/********以下将读18b20的数据送到LED数码管显示*************/

LedNumVal=Temperature;

//把实际温度送到LedNumVal变量中

LedOut[0]=Disp_Tab[LedNumVal%10000/1000];

LedOut[1]=Disp_Tab[LedNumVal%1000/100];

LedOut[2]=Disp_Tab[LedNumVal%100/10]; //十位

LedOut[3]=Disp_Tab[LedNumVal%10];

//个位

for(i=0; i<4; i++)

{

P0 = LedOut[i] ;

switch(i)

{

//138译码

case 0:LS138A=0; LS138B=0; LS138C=0; break;

case 1:LS138A=1; LS138B=0; LS138C=0; break;

case 2:LS138A=0; LS138B=1; LS138C=0; break;

case 3:LS138A=1; LS138B=1; LS138C=0; break;

}

delay(100);

}

P0 = 0;

} }

//延时程序

void delay(unsigned int i) {

char j;

for(i; i > 0; i--)

for(j = 200; j > 0; j--); } 4.1 讨论DS18B20的自动报警功能实现。

DS18B20只是一个测温元件,所谓的报警功能要通过程序由单片机来实现。

DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为8字节的存储器,头2个字节包含测得的温度信息,第3和第4字节TH(报警温度上限)和TL(报警温度下限)的拷贝。第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。第

6、

7、8字节保留未用。要实现报警,完成温度转换后,就把测得的温度值与RAM中的TH、TL字节内容作比较(当然要自己编程序)。若T>TH或T

第三篇:DS18B20的各个ROM命令

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)字节读完。如果不想读完所有字节,控制器可以在任何时间发出复位命令来中止读取。

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为外部电源。

第四篇:温度传感器课程设计

温度传感器简单电路的集成设计

当选择一个温度传感器的时候,将不再限制在模拟输出或数字输出装置。与你系统需要相匹配的传感器类型现在又很大的选择空间。市场上供应的所有温度感应器都是模拟输出。热电阻,RTDs和热电偶是另一种输出装置,矽温度感应器。在多数的应用中,这些模拟输出装置在有效输出时需要一个比较器,ADC,或一个扩音器。因此,当更高技术的集成变成可能的时候,有数字接口的温度传感器变成现实。这些集成电路被以多种形式出售,从超过特定的温度时才有信号简单装置,到那些报告远的局部温度提供警告的装置。现在不只是在模拟输出和数字输出传感器之间选择,还有那些应该与你的系统需要相匹配的更广阔的感应器类型的选择, 温度传感器的类型:

图一:传感器和集成电路制造商提供的四中温度传感器

在图一中举例说明四种温度感应器类型。一个理想模拟传感器提供一个完全线性的功能输出电压(A)。在传感器(B)的数字I/O类中,温度数据通常通过一个串行总线传给微控制器。沿着相同的总线,数据由温度传感器传到微控制器,通常设定温度界限在引脚得数字输出将下降的时候。当超过温度界限的时候,报警中断微控制器。这个类型的装置也提供风扇控制。

模拟输出温度传感器:

图2 热阻和矽温度传感器这两个模拟输出温度探测器的比较。

热电阻和矽温度传感器被广泛地使用在模拟输出温度感应器上。图2清楚地显示当电压和温度之间为线性关系时,矽温度传感器比热阻体好的多。在狭窄的温度范围之内,热电阻能提供合理的线性和好的敏感特性。许多构成原始电路的热电阻已经被矽温度感应器代替。

矽温度传感器有不同的输出刻度和组合。例如,与绝对温度成比例的输出转换功能,还有其他与摄氏温度和华氏温度成比例。摄氏温度部份提供一种组合以便温度能被单端补给得传感器检测。

在最大多数的应用中,这些装置的输出被装入一个比较器或A/D转换器,把温度数据转换成一个数字格式。这些附加的装置,热电阻和矽温度传感器继续被利用是由于在许多情况下它的成本低和使用方便。 数字I/O温度传感器: 大约在五年前,一种新类型温度传感器出现了。这种装置包括一个允许与微控制器通信的数字接口。接口通常是12C或SMBus序列总线,但是其他的串行接口例如SPI是共用的。阅读微控制器的温度报告,接口也接受来自温控制器的指令。那些指令通常是温度极限,如果超过,将中断微控制器的温度传感器集成电路上的数字信号。微控制器然后能够调整风扇速度或减慢微处理器的速度,例如,保持温度在控制之下。

图3:设计的温度传感器可遥测处理器芯片上的p-n结温度

图4。温度传感器可检测它自己的温度和遥测四个p-n结温度。

图5。风扇控制器/温度传感器集成电路也可使用PWM或一个线性模式的控制方案。

在图4中画是一个类似的装置:而不是检测一个p-n结温度,它检测四个结和它的自己内部的温度。因此内部温度接近周围温度。周围温度的测量给出关于系统风扇是否正在适当地工作的指示。

在图5中显示,控制风扇是在遥测温度时集成电路的主要功能。这个部分的使用能在风扇控制的二个不同的模式之间选择。在PWM模式中,微处理控制风扇速度是通过改变送给风扇的信号周期者测量温度一种功能。它允许电力消耗远少于这个部分的线性模式控制所提供的。因为某些风扇在PWM信号控制它的频率下发出一种听得见的声音,这种线性模式可能是有利的,但是需要较高功率的消耗和附加的电路。额外的功耗是整个系统功耗的一小部分。

当温度超出指定界限的时候,这个集成电路提供中断微控制器的警告信号。这个被叫做过热温度的信号形式里,安全特征也被提供。如果温度升到一个危险级别的时候温控制器或软件锁上,警告信号就不再有用。然而,温度经由SMBus升高到一个水平,过热在没有微控制器被使用去控制电路。因此,在这个非逻辑控制器高温中,过热能被直接用去关闭这个系统电源,没有为控制器和阻力潜在的灾难性故障。

装置的这个数字I/O普遍使用在服务器,电池组和硬盘磁碟机上。为了增加服务器的可靠性温度在很多的位置中被检测:在主板(本质上是在底盘内部的周围温度),在处理器钢模之内,和在其它发热元件例如图形加速器和硬盘驱动器。出于安全原因电池组结合温度传感器和使其最优化已达到电池最大寿命。

检测依靠中心马达的速度和周围温度的硬盘驱动器的温度有两个号的理由:在驱动器中读取错误增加温度极限。而且硬盘的MTBF大大改善温度控制。通过测量系统里面温度,就能控制马达速度将可靠性和性能最佳化。驱动器也能被关闭。在高端系统中,警告能为系统管理员指出温度极限或数据可能丢失的状况。

图6。温度超过某一界限的时候,集成电路信号能报警和进行简单的ON/OFF风扇控制。

图7.热控制电路部分在绝对温标形式下,频率与被测温度成比例的产生方波的温度传感器

图8。这个温度传感器传送它的周期与被测温度成比例的方波,因为只发送温度数据需要一条单一线,就需要单一光绝缘体隔离信道。

模拟正温度感应器

“模拟正量”传感器通常匹配比较简单的测量应用软件。这些集成电路产生逻辑输出量来自被测温度,而且区别于数字输入/输出传感器。因为他们在一条单线上输出数据,与串行总线相对。

在一个模拟正量传感器的最简单例子中,当特定的温度被超过的时候,逻辑输出出错:其它,是当温度降到一个温度极限的时候。当其它传感器有确定的极限的时候,这些传感器中的一些允许使用电阻去校正温度极限。

在图6中,装置显示购买一个特定的内在温度极限。这三个电路举例说明这个类型装置的使用:提供警告,关闭仪器,或打开风扇。

当需要读实际温度时,微控制器是可以利用的,在单线上传送数据的传感器可能是有用的。用微处理器的内部计数器,来自于这个类型温度感应器的信号很容易地被转换成温度的测量。图7传感器输出频率与周围温度成比例的方波。在图8中的装置是相似的,但是方波周期是与周围温度成比例的。

图9。用一条公共线与8个温度传感器连接的微控制器,而且从同一条线上接收每个传感器传送的温度数据。

图9,在这条公共线上允许连接达到八个温度传感器。当微控制器的I/O端口同时关闭这根线上的所有传感器的时候,开始提取来自这些传感器的温度数据。微控制器很快地重新装载接收来的每个传感器的数据,在传感器关闭期间,数据被编码。在特定时间内每个传感器对闸口脉冲之后的时间编码。分配给每个感应器自己允许的时间范围,这样就避免冲突。

通过这个方法达到的准确性令人惊讶:0.8 是典型的室温,正好与被传送方波频率的电路相匹配,同样适用于方波周期的装置。

这些装置在有线电线应用中同样显著。举例来说,当一个温度传感器被微控制器隔离的时候,成本被保持在一个最小量,因为只需要一个光绝缘体。这些传感器在汽车制造HVAC应用中也是很有效,因为他们减少铜的损耗数量。 温度传感器的发展:

集成电路温度传感器提供各式各样的功能和接口。同样地这些装置继续发展,系统设计师将会看见更多特殊应用就像传感器与系统接口连接的新方式一样。最后,在相同的钢模区域内集成更多的电子元件,芯片设计师的能力将确保温度传感器很快将会包括新的功能和特殊接口。

总结

通过这些天的查找资料,我了解了很多关于温度传感器方面的知识。我的大家都知道温度的一些基本知识,温度是一个基本的物理量,自然界中的一切过程无不与温度密切相关。利用温度所创造出来的传感器即温度传感器是最早开发,应用最广的一类传感器。并且从资料中显示温度传感器的市场份额大大超过了其他的传感器。从17世纪初人们开始利用温度进行测量。在半导体技术的支持下,在本世纪相继开发了半导体热电偶传感器、PN结温度传感器和集成温度传感器。与之相应,根据波与物质的相互作用规律,相继开发了声学温度传感器、红外传感器和微波传感器。

这些天,我通过许多的资料了解到两种不同材质的导体,如在某点互相连接在一起,对这个连接点加热,在它们不加热的部位就会出现电位差。这个电位差的数值与不加热部位测量点的温度有关,和这两种导体的材质有关。这种现象可以在很宽的温度范围内出现,如果精确测量这个电位差,再测出不加热部位的环境温度,就可以准确知道加热点的温度。由于它必须有两种不同材质的导体,所以称它为“热电偶”。我查找的资料显示数据:不同材质做出的热电偶使用于不同的温度范围,它们的灵敏度也各不相同。热电偶的灵敏度是指加热点温度变化1℃时,输出电位差的变化量。对于大多数金属材料支撑的热电偶而言,这个数值大约在5~40微伏/℃之间。

热电偶传感器有自己的优点和缺陷,它灵敏度比较低,容易受到环境干扰信号的影响,也容易受到前置放大器温度漂移的影响,因此不适合测量微小的温度变化。由于热电偶温度传感器的灵敏度与材料的粗细无关,用非常细的材料也能够做成温度传感器。也由于制作热电偶的金属材料具有很好的延展性,这种细微的测温元件有极高的响应速度,可以测量快速变化的过程。 温度传感器是五花八门的各种传感器中最为常用的一种,现代的温度传感器外形非常得小,这样更加让它广泛应用在生产实践的各个领域中,也为我们的生活提供了无数的便利和功能。

温度传感器有四种主要类型:热电偶、热敏电阻、电阻温度检测器(RTD)和IC温度传感器。IC温度传感器又包括模拟输出和数字输出两种类型。 接触式温度传感器的检测部分与被测对象有良好的接触,又称温度计。 温度计通过传导或对流达到热平衡,从而使温度计的示值能直接表示被测对象的温度。一般测量精度较高。在一定的测温范围内,温度计也可测量物体内部的温度分布。但对于运动体、小目标或热容量很小的对象则会产生较大的测量误差,常用的温度计有双金属温度计、玻璃液体温度计、压力式温度计、电阻温度计、热敏电阻和温差电偶等。它们广泛应用于工业、农业、商业等部门。在日常生活中人们也常常使用这些温度计。随着低温技术在国防工程、空间技术、冶金、电子、食品、医药和石油化工等部门的广泛应用和超导技术的研究,测量120K以下温度的低温温度计得到了发展,如低温气体温度计、蒸汽压温度计、声学温度计、顺磁盐温度计、量子温度计、低温热电阻和低温温差电偶等。低温温度计要求感温元件体积小、准确度高、复现性和稳定性好。利用多孔高硅氧玻璃渗碳烧结而成的渗碳玻璃热电阻就是低温温度计的一种感温元件,可用于测量1.6~300K范围内的温度。

非接触式温度传感器的敏感元件与被测对象互不接触,又称非接触式测温仪表。这种仪表可以用来测量运动物体、小目标还有热容量小或温度变化迅速(瞬变)对象的表面温度,也可以用于测量温度场的温度分布。资料显示,最常用的非接触式测温仪表基于黑体辐射的基本定律,称为辐射测温仪表。辐射测温法包括亮度法、辐射法和比色法。各类辐射测温方法只能测出对应的光度温度、辐射温度或比色温度。只有对黑体所测温度才是真实温度。如果想测定物体的真实温度,就必须进行材料表面发射率的修正。而材料表面发射率不仅取绝于温度和波长,而且还与表面状态、涂膜和微观组织等有关连,因此很难精确测量。在自动化生产中我发现往往需要利用辐射测温法来测量或控制某些物体的表面温度,如冶金中的钢带轧制温度、轧辊温度、锻件温度和各种熔融金属在冶炼炉或坩埚中的温度。在这些具体情况下,物体表面发射率的测量是相当困难的。对于固体表面温度自动测量和控制,可以采用附加的反射镜使与被测表面一起组成黑体空腔。附加辐射的影响能提高被测表面的有效辐射和有效发射系数。利用有效发射系数通过仪表对实测温度进行相应的修正,最终可得到被测表面的真实温度。最为典型的附加反射镜是半球反射镜。球中心附近被测表面的漫射辐射能受半球镜反射回到表面而形成附加辐射,这样才能提高有效发射系数。至于气体和液体介质真实温度的辐射测量,则可以用插入耐热材料管至一定深度以形成黑体空腔的方法。通过计算求出与介质达到热平衡后的圆筒空腔的有效发射系数。在自动测量和控制中就可以用此值对所测腔底温度(即是介质温度)进行修正而得到介质的真实温度。 现在,我通过这些天的努力,了解了很多温度传感器及其相关的一些传感器的知识。他们在我们生活中的应用及其广泛,我们只有加紧的学习加紧的完成自己所学专业的知识,了解相关的最新信息,我们才能跟上科技前进的步伐。

参考文献:

【1】刘君华.智能传感器系统.西安电子科技大学出版社,1993.3 【2】张富学.传感器电子学.国防工业电子出版社,1992.6 【3】王家桢等.传感器与变送器[M].北京清华出版社1996.5 【4】张正伟.传感器原理与应用[M].中央广播电视大学出版社,1991.3 【5】樊尚春.传感器技术及应用.北京航空航天大学出版社,2004.8 【6】赵负图.现代传感器集成电路.人民邮电出版社,2000.8 【7】谢文和.传感器技术及应用.高等教育出版社,2004.7 【8】赵继文.传感器与应用电路设计[M].科技出版社,2002.6 【9】陈杰,黄鸿.传感器与检测技术.高等教育出版社,2002.3 【10】黄继昌,徐巧鱼,张海贵等.传感器工作原理及应用实例.人民邮电出版社,1998.6

第五篇:进气温度压力传感器检查

进气压力温度传感器随车检测程序

1于.探概测在述发采 动用机速进度气密歧度管型内原理进的气发压动力机。管进理气系压统力机传构感配器置表中征,着进发气动压机力运传行感工元况件和用 构此的负进成计数载气速算值状压度得态推力密算参。度为出数型发实值动际一温机进起度提入用传管供发以感理动表元系想机征件统比参发用之例与动于空的机燃探气烧的测流油进发量喷实气动计射状际机量态空进方气气。。式供歧因发的给管此动重量内机,要的控进(元进制气实件气模压际之温块力进一度利温气。用度充,传量该传感)数感器。值器是与依

2.电路图

3.进气压力传感器测试 3.1.

将诊断仪连接到诊断接口上。将点火开关转到

ON

位。

3.2.

利用诊断仪读取进气压力值。

标准值:101 kPa(高原地区需与当地大气压力数值相符) 3.3.

如果读数与标准值偏差过大,则更换进气压力传感器。

3.4.

起动发动机,运转至水温

85

度,利用诊断仪读取压力值。

标准值:40±10 kPa 3.5.

压变力,读则数更应换有传微感小器的。变(化此,判如定果基读于数其与他标零准件值及偏线差束过都大工或作压正力常值的固条定件某下一。定)值不

4.进气温度传感器测试 4.1.

环境的用温故度障。诊如断不仪符在合不要着求车,的进情行况下一,步读。进气温度的数值应符合进气温度传感器所处

4.2.

将进气温度传感器从发动机上拆下。

电喷系统零部件随车检测程序

4.3.

利用数字万用表的欧姆档检查进气温度传感器的阻值。

传感器28086011标准值: º

测量1温00 度( C) 传3566感4287器~~阻3680值5426( Ω) 2300 12462569~~12572368 4.4.

如果阻值与标准值偏差过大,则更换传感器。

本文来自 360文秘网(www.360wenmi.com),转载请保留网址和出处

【ds18b20温度传感器】相关文章:

ds18b20温度检测控制06-21

ds18b20温度控制器06-16

18b20温度传感器09-21

ds18b20程序07-30

我写ds18b20总结06-02

ds18b20简单介绍06-02

ds18b20学习总结06-02

ds18b20资料及程序06-16

ds18b20详细中文资料06-21

ds18b20完整测试程序06-21

上一篇:3dsmax室内设计教程下一篇:幼师自我介绍30秒简短