hrefspace

 找回密码
 立即注册
搜索
热搜: PHP PS 程序设计
查看: 847|回复: 0

自学AVR单片机十九(温度传感器DS18B20)

[复制链接]

481

主题

481

帖子

1465

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1465
发表于 2024-2-15 06:01:31 | 显示全部楼层 |阅读模式
一、硬件电路

下面我们来看一下DS18B20的特点、结构和原理。
      DS18B20的特点:
    单总线接口:DS18B20与单片机只需要一根I/O口线相连即可实现双向通信,在使用过程中不需要任何外围器件即可正常工作,这使得系统结构非常简单,同时也显著增加了系统的可靠性;DS18B20将测得的温度值以数字信号的方式在单总线上传输。可以通过编程实现9-12位(这里是指二进制数字的9-12位)的数字温度值;DS18B20获得9-12位温度数字的时间在93.75-750ms时间内;支持多点测温,可在但总线上并联多个DS18B20构成测温网络;工作电压范围在3.0-5.5V之间,具有负压特性,当电源极性接反时,DS18B20不会因发热而烧坏,但是这是不再能正常工作;可选择寄生电源供电方式,此时DS18B20可以不接外部电源,采用寄生电源供电方式的时候,DS18B20的电源端要连接到系统的地线上。


      DS18B20的结构
     DS18B20主要有64位ROM、温度传感器、内部存储器和配置寄存器四部分组成,其中内部存储器包括一个易失性数据存储器RAM和一个非易失性的电可擦除EEPROM。下面分别介绍:
    64位ROM。即64位序列号,每个DS18B20在出厂前都被光刻了一个唯一的序列号,这样就可以实现一根总线上连接多个DS18B20。64位光刻ROM的排列顺序是:开始8位是产品类型号,接下来的48位是该DS18B20得序列号,最后8位是前面56位数据的crc校验码;温度传感器。温度传感器完成温度测量,并将测量后的结果存放在内部存储器的两个8位的温度寄存器中。温度寄存器定义如下图。温度寄存器占用两个字节,分别存放温度数据的高位和低位。其中温度寄存器高位的前5位存放温度的符号位,温度为正时,前5位为全0,温度为负时,前5位为全1;温度寄存器高位的后3位和温度寄存器低位的前4位存放温度的整数位;温度寄存器低位的后四位存放温度的小数位。当温度大于0时,温度值以二进制原码存放,温度小于0时,温度值以二进制补码形式存放。当温度转换位数为12位时,温度的精度为0.0625度。温度转换位数为9位时,精度为0.5度。
  • 对于温度的计算,以12位转换位数为例,当温度为正时,只要将测得的数值乘以0.0625即可得到实际温度;如果温度为负(小于0),那么测得的数值需要取反加1,然后再乘以0.0625才能得到实际的温度值。
            DS18B20内部存储器
           DS18B20内部存储器包括一个RAM和一个EEPROM,RAM存放温度值、报警值、配置寄存器、CRC校验码等内容,掉电后这些内容将会丢失。EEPROM用来存放温度上下限的报警值和配置寄存器的内容,掉电后内容不会丢失。
          RAM由9个字节组成,其分配表见下图,第0和第1个字节存放温度传感器测得的温度值,第2个字节存放温度的高温报警值,第3个字节存放温度的低温报警值,第4个字节是配置寄存器,第5、6、7这三个字节保留,用户可以存储对自己有用的数据,第8个字节是前面8个字节的CRC校验码。配置寄存器的内容如下:其中R1和R0用来设置转换精度,设置方式如下EEPROM存储器的格式如下其内容是:前两个字节存放高温报警值和低温报警值,第三个字节存放配置寄存器的内容。
          这一节就先讲到这里,下一节我们来分析利用DS18B20实现温度采集 的控制流程以及程序实现

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|hrefspace

GMT+8, 2024-11-1 13:39 , Processed in 0.071609 second(s), 22 queries .

Powered by hrefspace X3.4 Licensed

Copyright © 2022, hrefspace.

快速回复 返回顶部 返回列表