外设驱动库开发笔记14:DS18B20温度变送器驱动

本文介绍了一款基于DS18B20的温度传感器驱动程序设计与实现,包括对象定义、初始化及读写操作等内容,并提供了一个简单的应用示例。

在一时候我们需要相对简单的检测温度信号,而DS18B20就是一款功能和应用都相对简单的温度传感器,通过单线就可以实现检测温度信号的需求。这一篇我们就来实现操作DS18B20获取温度数据的驱动。

1、功能概述

DS18B20是常用的数字温度传感器,其输出的是数字信号,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。单总线数字式温度传感器,由于具有结构简单,不需要外接电路,可用一根I/O数据线既供电又传输数据,可由用户设置温度报警界限等特点,近年来广泛用于粮库等需要测量和控制温度的地方。

1.1、硬件描述

DS18B20数字温度传感器提供9-12位摄氏度温度测量数据,可编程非易失存储器设置温度监测的上限和下限,提供温度报警。器件可以工作在-55°C至+125°C范围,在-10°C至+85°C范围内测量精度为±0.5°C。此外,DS18B20还可以直接利用数据线供电 (寄生供电),无需外部电源。DS18B20数字温度传感器提供有三种封装,其引脚定义分别如下表所示:

 

DS18B20数字温湿度传感器有一个64位ROM存储器,用于存储设备唯一的串行代码。暂存存储器包含2字节的温度寄存器,该寄存器存储温度传感器的数字输出。此外,暂存存储器提供对1字节的上、下报警触发寄存器(TH和TL)和1字节配置寄存器的访问。DS18B20数字温湿度传感器的功能框图如下图所示:

 

配置寄存器允许用户将温度-数字转换的分辨率设置为9、10、11或12位。TH、TL和配置寄存器是非易失性的(EEPROM),因此它们将在设备断电时保留数据。

1.2、数据通讯

DS18B20通过1-Wire总线通信,只需要一条数据线 (和地线) 即可与处理器进行数据传输。每个DS18B20具有唯一的64位序列号,从而允许多个DS18B20挂接在同一条1-Wire总线。可以方便地采用一个微处理器控制多个分布在较大区域的DS18B20。该功能非常适合HVAC环境控制、楼宇、大型设备、机器、过程监测与控制系统内部的温度测量等应用。

DS18B20传感器进行的功能操作是在发送命令的基础上完成的,上电后传感器处于空闲状态,需要控制器发送命令才能完成温度转换。访问DS18B20温度传感器需要按照固定的顺序操作:

步骤1、初始化通讯

步骤2、操作ROM命令(后面跟着任何需要的数据交换)

步骤3、DS18B20功能命令(后面跟着任何需要的数据交换)

每次访问DS18B20时,遵循这个序列是非常重要的,因为如果序列中的任何步骤丢失或顺序混乱,DS18B20将不会响应。这个规则的例外是搜索ROM [F0h]和警报搜索[ECh]命令。发出这两个ROM命令后,主机必须按顺序返回步骤1。

1.2.1、通讯初始化

在单线总线上的所有事务都以初始化序列开始。初始化序列包括由总线主发送的复位脉冲和从服务器发送的存在脉冲。存在脉冲让总线主人知道从设备(例如DS18B20)在总线上并且准备好操作。复位和存在脉冲的时间在单线信号部分有详细说明。

1.2.2、ROM操作

对传感器的功能操作的次序是首先完成对芯片内部的ROM操作,有5条操作ROM的指令可用于器件识别,它们分别是:ReadROM(33H)、Match ROM(55H)、Skip ROM(CCH)、SearchROM(F0H)、Alarm Search(ECH)。 具体描述如下表所示:

 

1.2.3、功能操作

实现DS18B20温度传感器操作,需在发送ROM指令之后发送功能指令。DS18B20温度传感器共有6条功能指令,分别是:温度转换指令(44H)、读暂存器指令(BEH)、写暂存器指令(4EH)、复制暂存器指令(48H)、重调EEPROM指令(B8H)、读电源供电方式指令(B4H)。具体描述见下表所示:

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值