ds18b20实现温度采集
一、传感器简识
1、基本认识
- DS18B20是常用的数字温度传感器,其输出的是数字信号,具有体积小,硬件开销低,抗干扰能力强,精度高的特点;
- DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,型号多种多样,有LTM8877,LTM8874等等;
- 主要根据应用场合的不同而改变其外观。封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合;
- 耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。
引脚分配
引脚说明
引脚 | 名称 | 描述 |
---|---|---|
GND | Ground | 接地 |
DQ | Data In/Out | 输入输出 |
VDD | Power Supply Voltage | 供电电源 |
NC | No Connect | 无连接【悬空】 |
2、主要特征
ds18b20的主要特性:
- 适应电压范围更宽,电压范围:3.0~5.5V,在寄生电源方式下可由数据线供电;
- 独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯;
- DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温;
- DS18B20在使用中不需要任何外围元件,全部 传感元件及转换电路集成在形如一只三极管的集成电路内;
- 测温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃;
- 可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温;
- 在9位分辨率时最多在 93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快;
- 测量结果直接输出数字温度信号,以"一 线总线"串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力;
- 负压特性:电源极性接反时,芯片不会因发热而烧毁, 但不能正常工作。
DS18B20的另一个特性是能够在没有外部电源的情况下工作。当总线高时,通过DQ线针供电。高总线信号还为内部电容器(CPP)充电,当总线低时,CPP向设备供电。这种从1线总线中获得功率的方法被称为“寄生虫功率”。作为一种替代方案,DS18B20也可以由VDD上的外部电源供电。
3、结构功能
ds18b20内部结构主要由四部分组成64位光刻ROM、温度传感器、非挥发的温度报警传感器TH和TL、配置寄存器。
每只ds18b20都有一个唯一的长达64位的只读存储器,存放在ROM中,低8位是ds18b20的单总线温度传感器,高8位是CRC循环冗余校验码,用以校正前56位是否正常,中间48位是一个唯一序列号,此64位只读寄存器常用于元器件的识别和匹配。
64位ROM和ROM操作控制区允许DS18B20作为单总线协议工作,只有建立了ROM操作协议,才能对DS18B20进行控制操作,单总线的所有ROM操作,都从一个初始化序列开始,单总线控制器提供了5个ROM操作命令和6个RAM操作命令。
4、操作指令
ROM操作指令
- Read ROM【33h】:允许总线控制器读取传感器ROM序列,总线上存在单个器件时才能使用,否则会发生数据冲突;
- Match ROM【55h】:匹配ROM指令,后跟64位ROM序列,此后所有操作都对该器件进行;
- Skip ROM【CCh】:此后的指令将对在线所有器件起作用;
- Search ROM【F0h】:允许总线控制器识别总线上所有从机编码;
- Alarm ROM【ECh】:响应最近一次测温遇到符合报警条件的情况。
RAM操作指令
- Write Scratchpad【4E】:向DS18B20的暂存器中写入数据;
- Read Scratchpad【BEh】:读取暂存器的内容;
- Copy Scratchpad【48h】:将温度报警触发字节存入非易失性存储器里;
- Convert T【44h】:启动一次温度转换而无需其他数据;
- 【B8h】:把报警触发器里的值拷回暂存器,上电时自动执行;
- Read Power Supply【B4h】:获取器件的电源模式“0”=寄生电源,“1”=外部电源
5、温度测量
温度寄存格式
- DS18B20的核心功能是其直接到数字的温度传感器。该温度传感器的分辨率可被用户配置为9、10、11或12位,分别对应于0.5°C、0.25°C、0.125°C和0.0625°C的增量。
- 通电时的默认分辨率为12位。
- DS18B20在低功率空闲状态下通电,要启动温度测量和A到D的转换,主机必须发出转换T【44h】命令。转换后得到的数据存于2字节温度寄存器中,并返回空闲状态。
- 如果由外部电源供电,则主电源可以在转换命令后发出“读取时隙。”
- 进行温度转换时响应0;转换完成响应1;如果是寄生电源;则不能使用这种通知技术【总线被拉高】
温度数据关系
温度寄存器的通电复位值为+85°C.
报警触发器寄存器格式
符号位(S)表示该值是正数还是负数:对于正数S=0和负数S=1。
由于TH和TL是8位寄存器,因此在TH和TL比较中只使用温度寄存器的第11至第4位。如果测量的温度低于或等于TL或高于TH,则存在报警条件,并在DS18B20内设置报警标志。每次温度测量后更新,如果报警条件消失,则在下一次温度转换后关闭。
配置寄存器
温度计分辨率配置
二、流程及时序
1、执行顺序
- 初始化
- ROM命令
- DS18B20功能命令
- 初始化序列:1线总线上的所有事务都以一个初始化序列开始。初始化序列由由总线主机发送的复位脉冲和由从端发送的存在脉冲组成。
- 主机检测到存在脉冲后,发出ROM命令。这些命令对每个从设备的唯一的64位ROM代码进行操作,如果在1wire总线上存在许多命令,则允许主命令挑出一个特定的设备。
- 使用ROM命令处理它希望与其通信的DS18B20之后,主线可以发出DS18B20功能命令之一。这些命令允许主服务器对DS18B20的结果暂存存储器进行写入和读取,启动温度转换并确定电源模式。
2、相关时序
1、初始化
初始化由主机的复位脉冲和DS18B20的存在脉冲组成;总线拉低【大于480us】发送复位脉冲,然后主机释放总线进入接收模式,上拉电阻拉高总线;ds18b20检测到上升沿时等待【15~60us】; 拉低总线【 60-240us】发送存在脉冲
2、写时序
在写入时间槽期间将数据写入DS18B20,并在读取时间槽期间从DS18B20读取数据。
总线使用写入时隙“1”或“0”将逻辑1或0写入ds18b20,写入时间段持续时间至少为60us,恢复时间至少为1us。写入“1”由主线拉低而启动;拉低后需要在15us内释放总线,再由上拉电阻拉高总线;写入“0”拉低总线后需要保持总线拉低。
3、读时序
主机须在发送读取暂存寄存器命令【BEh】或读取电源【B4h】命令后生成读取时序,便于ds18b20可以提供所请求的数据。主机也可在发出转换【44h】或【B8h】命令后产生时序,用于查找ds18b20功能命令操作状态。
三、实现流程
四、功能验证
五、参考资料
DS18B20温度采集报警系统,原理及汇编、C语言实现
DS18B20内部结构及功能
DS18B20百度百科
1-Wire总线数字温度传感器DS18B20原理及应用.pdf