温度传感器技术

数字温度传感器DS18B20测温功能设计

数字温度传感器DS18B20的温度测量功能

DS18B20是DALLAS公司生产的1线数字温度传感器, 采用 3 引脚 TO-92 小封装. 温度测量范围-55℃~+125℃, 并可编程为9位~12位A/D转换精度. 测温分辨率可达0.0625℃, 测量的温度以带有符号扩展的16位数字量的形式串行输出. 其工作电源可从远端引入或由寄生电源产生. 多个 DS18B20 可以并联 3 或者 2 线. CPU只需要一根端口线即可与多台DS18B20通信, 占用微处理器的端口更少, 可以节省大量引线和逻辑电路. 以上特点使得DS18B20非常适合远距离多点温度检测系统.

数字温度传感器DS18B20的温度测量功能

数字温度传感器DS18B20的温度测量功能

2. DS18B20内部结构 DS18B20电路图
DS18B20内部结构如图 1, 主要包括 4 部分: 64-位只读存储器, 温度传感器, 非易失性温度报警触发器 TH 和 TL, 和配置寄存器. DS18B20的引脚排列如图 2. DQ为数字信号输入/输出端; GND是电源地; VDD为外部电源输入端 (寄生电源接线方式接地, 见图 4).

ROM中的64位序列号在出厂前经过光刻. 可以看作是DS18B20的地址序列码. 每个DS18B20的64位序列号是不同的. 循环冗余校验码 (CRC=X8+X5+X4+1) 64位ROM的排列. ROM的作用是让每个DS18B20都不同, 这样多个 DS18B20 就可以连接到一条总线上.

DS18B20芯片内部结构

DS18B20芯片内部结构

数字 1, DS18B20内部结构

DS18B20中的温度传感器完成温度测量, 以 16 位符号扩展二进制补码读数的形式提供, 以0.0625℃/LSB的形式表示, 其中 S 是符号位. 例如, +125℃数字输出为07D0H, +25.0625℃数字输出为0191H, -25.0625℃数字输出为FF6FH, -55℃数字输出为FC90H.

23
22
21
20
2-1
2-2
2-3
2-4

温度值低字节
MSBLSB
S
S
S
S
S
22
25
24

温度值高字节
高低温报警触发TH和TL, 和配置寄存器由一个字节的EEPROM组成. 可以使用存储功能命令写入TH, TL, 或配置寄存器. 配置寄存器的格式如下:

0
R1
罗0
1
1
1
1
1
MSBLSB

R1和R0决定温度转换的精度位数: R1R0 = “00”, 9-位精度, 最大转换时间为 93.75ms; R1R0 = “01”, 10-位精度, 最大转换时间为 187.5ms. R1R0 = “10”, 11-位精度, 最大转换时间为 375ms. R1R0 = “11”, 12-位精度, 最大转换时间为 750ms. 未编程时默认为12位精度.

高速寄存器是9字节存储器. 前两个字节包含测量温度的数字信息; 第三个, 4th, 第 5 个字节是 TH 的临时副本, TL, 和配置寄存器, 分别, 每次上电复位时都会刷新; 第六号, 7th, 第8个字节未使用,表示为全逻辑1; 第9个字节读取前面所有的CRC码 8 字节, 可用于确保正确的通信.

3. DS18B20工作时序
DS18B20的一线工作协议流程为: 初始化→ROM操作指令→存储器操作指令→数据传输. 其工作顺序包括初始化顺序, 写入顺序和读取顺序, 如图 3 (一个) (乙) (c).

(一个) 初始化顺序
(c) 读取序列

DS18B20与微处理器的典型连接电路图

DS18B20与微处理器的典型连接电路图

数字 3, DS18B20工作时序图

4. DS18B20与单片机的典型接口设计
数字 4 以MCS-51系列单片机为例,画出DS18B20与微处理器的典型连接. 图中 4 (一个), DS18B20采用寄生供电方式, 其 VDD 和 GND 端子均接地. 图中 4 (乙), DS18B20采用外部供电方式, 其VDD端采用3V~5.5V电源供电.

一个) 寄生电源工作模式
(乙) 外接电源工作模式

DS18B20工作时序图

DS18B20工作时序图

数字 4 DS18B20与微处理器的典型连接图

假设单片机系统使用的晶振频率为12MHz, 根据初始化时序编写三个子程序, DS18B20的写时序和读时序: INIT是初始化子程序; WRITE 是写入 (命令或数据) 子程序; READ 是读取数据子程序. 所有数据读写都是从最低位开始.

数据采集​​1.0
……
初始化:CLREA
INI10:设定BDAT
MOVR2#200
INI11:CLRDAT
DJNZR2、INI11; 主机发送复位脉冲3μs×200=600μs
设定BDAT; 主机释放总线, 并将端口线更改为输入
MOVR2#30
IN12:DJNZR2、INI12; DS18B20等待2μs×30=60μs
CLRC
有机液相色谱法,那; DS18B20数据线是否为低电平 (脉冲存在)?
杰西尼10; DS18B20尚未准备好, 重新初始化
MOVR6, #80
INI13: 有机液相色谱法, 那
JCINI14; DS18B20数据线变高, 初始化成功
DJNZR6, INI13; 数据线低电平可持续3μs × 80 = 240μs
辛皮尼10; 初始化失败, 重新启动
INI14: 移动VR2, #240
IN15: DJNZR2, INI15; DS18B20 响应时间至少 2μs × 240 = 48 0微秒
视网膜色素变性

;-------------------------
写:CLREA
MOVR3,#8;环形 8 次, 写一个字节
WR11:设定BDAT
MOVR4,#8
RRCA;写位从 A 移至 CY
CLRDAT
WR12:DJNZR4、WR12
;等待16μs
移动数据传输技术,C;命令字逐位发送到DS18B20
MOVR4#20
WR13:DJNZR4,WR1 3
; 确保写入过程持续60μs
DJNZR3、WR11
; 发送字节之前继续
设定BDAT
视网膜色素变性

;------------------------
读:CLREA
MOVR6,#8; 环形 8 次, 读取一个字节
RD11:CLRDAT
MOVR4,#4
诺普; 低电平持续2μs
设定BDAT; 设置端口线输入
RD12:DJNZR4,RD12
; 等待8μs
MOVC,从 T
The host reads the data of DS18B20 bit by bit
RRCA;The read data is moved to A
MOVR5,#30
RD13:DJNZR5,RD13
Ensure that the reading process lasts 60μs
DJNZR6,RD11
After reading a byte of data, store it in A
设定BDAT
视网膜色素变性
;-------------------------
The host must go through three steps to control DS18B20 to complete temperature conversion: initialization, ROM operation instructions, and memory operation instructions. DS18B20 must be started to start conversion before reading the temperature conversion value. Assuming that only one chip is connected to one line, the default 12-bit conversion accuracy is used, and an external power supply is used, a subroutine GETWD can be written to complete a conversion and read the temperature value.

GETWD:LCALLINIT
MOVA,#0CCH
LCALLWRITE; send skip ROM command
MOVA,#44H
LCALLWRITE; send start conversion command
LCALLINIT
MOVA,#0CCH; send skip ROM command
LCALLWRITE
MOVA,#0BEH; send read memory command
LCALLWRITE
LCALLREAD
MOVWDLSB,A
; send low byte of temperature value to WDLSB
LCALLREAD
MOVWDMSB,A
; send high byte of temperature value to WDMSB
视网膜色素变性
……

The high byte of temperature value read by subroutine GETWD is sent to WDMSB unit, and the low byte is sent to WDLSB unit. Then according to the representation format of temperature value byte and its sign bit, the actual temperature value can be obtained through simple transformation.

If multiple DS18B20 are connected on one line, parasitic power supply connection mode is adopted, conversion accuracy configuration, high and low limit alarm, ETC. are required. Then the writing of subroutine GETWD will be more complicated. Due to space limitations, this section will not be described in detail. Please refer to the relevant content.

We have successfully applied DS18B20 to thehousehold heating bathcontrol system we developed. Its fast conversion speed, high conversion accuracy, and simple interface with the microprocessor have brought great convenience to hardware design work, effectively reducing costs and shortening development cycles.