cfan2021 发表于 2024-2-15 06:01:31

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

一、硬件电路

下面我们来看一下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实现温度采集 的控制流程以及程序实现
页: [1]
查看完整版本: 自学AVR单片机十九(温度传感器DS18B20)