编辑: sunny爹 2019-09-26
第22 卷第

2 期黑龙江工程学院学报(自然科学版) Vol.

22 №.

2 2008 年6月Journal of Heilongjiang Institute of Technology J un. ,2008 基于 DS18B20 的数字温度计设计及其应用 胡天明 ,齐建家 (黑龙江工程学院 机电工程系 ,黑龙江 哈尔滨 150050) 摘要:介绍数字温度传感器 DS18B20 的结构与性能 ,对比数字温度传感器 DS18B20 与传统温度传感器的差异 ,并 详细介绍数字温度传感器 DS18B20 的操作方法和操作指令.同时设计数字温度计的硬件电路和软件 ,对数字温度 传感器 DS18B20 的写操作源代码进行解析 ,介绍温度计在无线温度采集系统中的应用 ,并阐述数字温度传感器 DS18B20 的应用前景. 关键词 :DS18B20 ;

温度计 ;

单片机 ;

无线传感器网络 中图分类号 : TP273 文献标识码 :A 文章编号 :167124679 (2008)

0220059204 The design and application of digital thermometer based on DS18B20 HU Tian2ming ,QI Jiang2jia (Dept. of Electromechanic Engineering , Heilongjiang Institute of Technology , Harbin

150050 , China) Abstract :The configuration and performance of digital temperature DS18B20 are introduced. The operating method and the instructions of digital temperature sensor DS18B20 are introduced comparing DS18B20 dig2 ital temperature sensor and traditional temperature sensor. The hardware and software of the digital ther2 mometer are designed. The write operating source code of the digital temperature DS18B20 is analyzed. And the wireless temperature test system using DS18B20 is introduced. Also the application prospect of digital temperature sensor is expounded. Key words :DS18B20 ;

thermometer ;

Micro - controller ;

wireless temperature test system 收稿日期 :2008203201 作者简介 :胡天明(1964~) ,男 ,副教授 ,工程硕士 ,研究方向 :流体传 动与控制. 传统的温度传感器系统大都采用放大、 调理、 A/ D 转换 ,转换后的数字信号送入计算机处理 ,处 理电路复杂、 可靠性相对较差 ,占用计算机的资源较 多.DS18B20 是一线制数字温度传感器 ,它可将温 度信号直接转换成串行数字信号送给微处理器 ,电 路简单 ,成本低 ,每一只 DS18B20 内部的 ROM 存 储器都有唯一的

64 位系列号 ,在1根地址/ 信号线 上可以挂接多个 DS18B20 ,易于扩展 ,便于组网和 多点测量.

1 DS18B20 的结构与性能 DS18B20 采用 Dallas 公司 的单总线数据通信 方式专有技术 ,单根信号线既传输时钟 ,又可双向传 输数据 ,占用 I/ O 口资源少 ,结构简单 ,成本低廉 , 便于总线扩展和维护.DS18B20 采用

3 引脚 TO292 小体积封装形式 ,内部使用在板 (ON2BOARD) 专 利技术 ,全部传感元件及转换电路集成在形如一只 三极管的集成电路内.3 个管脚中 , GND 是地信 号;

DQ 是数据输入/ 输出引脚 ,开漏单总线接口引 脚 ,当被用在寄生电源下 ,也可以向器件提供电源 ;

VDD 是可选择的 VDD 引脚 ,当工作于寄生电源 时 ,此引脚必须接地.DS18B20 的测量温度范围为 - 55~ +

125 ℃,在-10~ +

85 ℃范围内 ,精度为 ± 0.

5 ℃,可将程序设定 9~12 位的分辨率. DS18B20 的内部存储器包括

1 个高速暂存 RAM 和1个非易失性的、 可电擦除的 E2 RAM ,后 者存放高温度和低温度触发器 TH 、 TL 以及结构寄 存器.暂存存储器包含

8 个连续字节 ,前2个字节 是测得的温度信息 ,第1个字节的内容是温度的低 八位 ,第2个字节是温度的高八位.第3个和第

4 个字节是 TH 、 TL 的易失性拷贝 ,第5个字节是结 构寄存器的易失性拷贝 ,这3个字节的内容在每一 ? 1994-2008 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net 次上电复位时被刷新.第

6、

7、

8 个字节用于内部计 算.第9个字节是冗余检验字节. 操作 DS18B20 应遵循以下顺序 :初始化、 ROM 操作命令、 暂存器操作命令. 初始化 :总线上的所有操作要初始化 ,MCU 先 发复位信号 ,之后 ,DS18B20 发出在线信号 ,并等待 接受命令. ROM 操作命令 : MCU 收到 DS18B20 在线信 号后 ,发送

4 个ROM 操作命令中的一个 ,这些命令 字均为

8 位 (最低位在前) : ①读命令 (33 H) .通过 该命令 MCU 可以读出 DS18B20 的ROM 中8位系 列产品代码、

48 位产品序列号和

8 位CRC 码.读 命令仅用在单个 DS18B20 在线情况 ,当多于一个时 由于 DS18B20 为开漏输出将产生线与 ,从而引起数 据冲突. ②选择定位命令 (55 H) .多片 DS18B20 在线 时,MCU 发出该命令和1个64 位数列,DS18B20 内部 ROM 与主机数列一致 ,响应主机发 送的寄存器操作命令 ,其他 DS18B20 等待复位.该 命令也可以用在单片 DS18B20 情况.③ 跳过 ROM 序列号检测命令 (CCH) .对于单片 DS18B20 在线 系统 ,该命令允许 MCU 跳过 ROM 序列号检测而 直接对寄 存器操作,从而节省时间.对于多片DS18B20 系统 ,该命令将引起数据冲突. ④ 查询命 令(F0 H) .当系统初建时 ,MCU 可能不知道总线 上有多少设备及各自的

64 位序列号 ,用该命令可以 做到这点.⑤ 报警查询命令 ( ECH) .该命令操作 过程同 ROM 查询命令 ,但是 ,仅当上次温度测量值 已置位报警标志 (由于高于 TH 或低于 TL 时) , DS18B20 才响应该命令 ,如果 DS18B20 处于上电状 态 ,该标志将保持有效 ,直至遇到下列两种情况 :本 次测量温度发生变化 ,测量值处于 TH 、 TL 之间 : TH 、 TL 改变 ,温度值处于新的范围之间 ,设置报警 时要考虑到 EERAM 中的值. 存储器操作命令 : ① 写入 (4EH) .用此命令把 数据写入寄存第二至第四字节 ,从第二字节 ( TH) 开始.复位信号发出之前必须把这

3 个字节写完. ② 读出(BEH) .用此命令读出寄存器中的内容 ,从 第一字节开始 ,直到读完第九字节 ,如果仅需要寄存 器中部分内容 ,MCU 可以在合适时刻发送复位命 令结束该过程.③ 复制(48 H) .用该命令把暂存器 第二至第四字节转存到 DS18B20 的EERAM 中 ,如 果DS18B20 是由信号线供电 ,主机发出此命令后 , 总线必须保证至少

10 ms 的上拉 ,当发出命令后 ,主 机发出读时序来读总线 ,如果转存正在进行 ,读结果 为0,转存结束为 1. ④ 开始转换 (44 H) .DS18B20 收到该命令后立刻开始温度转换 ,不需要其它数据. 此时 DS18B20 处于空闲状态 ,当温度转换正在进行 时,MCU 读总线将收到

0 , 转换结束为 1.如果 DS18B20 是由信号线供电 ,M 发出此命令后必须立 即提供至少相应于分辨率的温度转换时间的上拉. ⑤ 回调 (B8 H) .执行该命令把 EERAM 中的内容 回调 到寄存器TH 、TL 和设置寄存器单元,DS18B20 上电时能自动回调 , 因此 , 设备上电后 TH 、 TL 存在有效数据.该命令发出后 ,如果 MCU 跟着读总线 ,读到

0 意味着忙 ,1 为回调结束.⑥ 读 电源 标志(B4 H ) .MCU 发出命令后读总线,DS18B20 将发送电源标志 ,0 为信号线供电 ,1 为外 接电源. 根据DS18B20 的通讯协议,MCU 控制DS18B20 完成温度转换要经过

3 个步骤 :每一次读 写之前都要对 DS18B20 进行复位 ,复位成功后发送 一条 ROM 指令 ,最后发送 RAM 指令 ,对DS18B20 进行预定的操作.复位要求 MCU 将数据线下拉 500μs ,然后释放 ,DS18B20 收到信号后等待 16~ 60μs ,发出 60~240μs 的存在低脉冲 ,主CPU 收到 此信号表示复位成功.由于 DS18B20 与微处理器 间采用串行数据传送 ,因此 ,在对 DS18B20 进行读 写编程时 ,必须严格地保证读写时序 ,否则将无法读 取测温结果.DS18B20 的通讯协议定义了初始化 时序、 读时序、 写时序的时序.所有时序都是将 MCU 作为主设备 ,DS18B20 作为从设备.而每一 次命令和数据的传输都是从 MCU 主动启动写时序 开始 ,如果要求 DS18B20 回送数据 ,在进行写命令 后,MCU 需启动读时序完成数据接收.数据和命 令的传输都是低位在先.对DS18B20 的读时序分 为读

0 时序和读

1 时序

2 个过程.对于 DS18B20 的读时序是从主机把单总线拉低之后 ,在15 s 之内 释放单总线 ,以让 DS18B20 把数据传输到单总线 上.DS18B20 完成

1 个读时序过程至少需要60μs. DS18B20 的写时 序分为 写0时序 和写

1 时序. DS18B20 对于写

0 时序和写

1 时序的要求不同 ,当写0时序时 , 单总线要被拉低至少

60 μs , 保证 DS18B20 能够在 15~45μs 之间正确地采样I/ O总 线上的

0 电平 ,当要写

1 时序时 ,单总线被拉低之 后 ,在 15μs 之内释放单总线. ・

0 6 ・ 黑龙江工程学院学报(自然科学版) 第22 卷?1994-2008 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net

2 数字温度计设计 数字温度计电路如图

1 所示 ,MCU 采用 Mi2 croChip 公司的 PIC18F65J10 - I/ PT ,软件采用 C 编程语言 ,DS18B20 的时序要靠精确的延时来保 证 ,短时间延时可使用空指令 ,较长时间延时可使用 循环语句.DS18B20 所有的指令、 数据发送均由数 据写完成.DS18B20 的写操作都是逐位进行的 ,源 代码如下 : void write (uchar i) /

3 向DS18B20 写一字节函数

3 / { uchar j =

8 ;

/

3 设置读取的位数 ,一字节

8 位3/for ( ;

j >

0 ;

j - - ) { sensor =

0 ;

/

3 总线拉低 ,启动 写时间片

3 / if (i &

1) sensor =

1 ;

i >

>

=

1 ;

delay(4) ;

/

3 延时 60μs ,使写入有效

3 / sensor =

1 ;

/

3 准备启动下一个 写时间片

3 / } } MCU 对DSl8B20 温度值和其它状态信息的读取均 由数据读完成 ,源代码如下 : unsigned char read () /

3 从DS18B20 读一字节函 数3/{unsigned char i ,j =

8 ;

for ( ;

j >

0 ;

j - - ) { sensor =

0 ;

/

3 总线拉低 ,启动读 时间片

3 / ;

sensor =

1 ;

/

3 总线拉高 ,准备读取

3 / i >

>

=

1 ;

;

;

if (sensor) i + = 0x80 ;

/

3 从总线拉低时算起 , 约15μs 后读取总线数 i + = 0x80 ;

3 / delay(4) ;

/

3 延时 60μs

3 / } return(i) ;

} 系统初始化过程源代码如下 : write (0xcc) ;

/

3 发跳过序列号检测命令

3 / write (0x44) ;

/

3 发启动温度转换命令

3 / for (j =

350 ;

j >

0 ;

j - - ) {display(te) ;

}/

3 延时

800 ms 等待 A/ D 转换完 成3/start () ;

/

3 初始化

3 / write (0xcc) ;

/

3 发跳过序列号检测命令

3 / write (0xbe) ;

/

3 发读取温度数据命令

3 / tl = read() ;

/

3 先读低

8 位温度数据

3 / th = read() ;

/

3 再读高

8 位温度数据

3 / start () ;

/

3 不需其他数据 ,初始化 DS18B20 结 束读取

3 /

3 无线温度采集系统设计 为了实........

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题