基于单总线数字温度传感器DS18B20的测温系统设计
扫描二维码
随时随地手机看文章
摘要:设计了一种基于单总线数字温度传感器DS18B20的测温系统,给出了DS18B20传感器特性和控制命令及时序,在Proteus环境下进行了测温系统硬件设计,同时采用。Keil软件完成了系统主程序、DS18B20驱动程序的设计;最后进行了系统Proteus仿真,提高了系统开发效率,并获得了良好的仿真实验结果。
关键词:温度传感器;DS18B20;控制命令;驱动程序;Proteus仿真
0 引言
温度是基本物理量之一,是工农业生产和日常生活中经常需要测试的重要参数,温度测量亦是应用频率最高的技术之一,在粮食仓库存储、环境监测、过程温度监测、中央空调监测、医学体温检测等领域有着广泛应用。传统的温度检测方式一般采用热电偶或热敏电阻,输出模拟信号,经A/D转换后才能送入单片机处理器,检测电路复杂。
因此,本文采用单总线智能型数字温度传感器DS18B20,以AT89C51单片机为核心处理器,进行测温系统设计,在Proteus环境中进行系统硬件设计,并结合软件进行了仿真,降低了开发成本,提高了开发效率。
1 DS18B20传感器特性与控制时序
DS18B20是美国DALLAS半导体公司的单总线智能型数字温度传感器,它通过单总线与处理器进行数据传输,主要由64位ROM、温度敏感元件、非易失性温度告警触发器TH和TL、配置寄存器组成。供电范围为3.0~5.5 V;测温范围为-55~125℃,可根据系统需求通过设置配置寄存器中的R1,R0位调整为9~12位分辨率,对应的可分辨温度和最大转换时间如表1所示;每个DS18B20器件有惟一的序列号,多个DS18B20器件可接至同一个单总线上构成多点分布式温度测量系统;具有极强的抗干扰纠错能力。
DS18B20的TO-92封装如图1所示,针脚1为电源地线,针脚2为数据输入/输出线,针脚3为可选电源线。
DS18B20的单总线访问协议由如下4个步骤构成。
(1)主机对DS18B20进行复位初始化,初始化时序如图2(a)所示,主机在t1时刻在单总线上发出一持续480~960μs的低电平脉冲的复位脉冲,在t2时刻释放单总线至少等待480μs确保应答正确,并接收采样,DS18B20等待15~60 μs,在t3时刻发出60~240μs的低电平存在脉冲,如图中加粗虚线所示;
(2)主机向DS18B20写ROM操作指令,一旦检测到总线上有从属期间存在,主机便可发送ROM操作命令,主要包含读ROM[33h]、匹配ROM[55h]、跳过ROM、搜索ROM、告警搜索命令;
(3)主机向DS18B20写RAM操作指令以启动温度转换(44h)、读暂存器(BEh)、写暂存器(4Eh)、复制暂存器(43h)、重新调出E2(B8h)、获取供电方式(B4h);
(4)主机与DS18B20进行数据传送。
写ROM命令、RAM命令和收发数据都通过单总线传输,单总线通过时间片来读写数据,每个时间片传送1位数据,分写时间片和读时间片。两种时间片都必须持续最短60μs,两个时间片之间必须插入至少1μs的恢复时间,读/写时序如图2(b),(c)所示。读操作通过读时间片控制完成,分读“0”和读“1”时间片;写操作通过写时间片控制完成,分写“0”和写“1”时间片。
温度变换结束后,主机向DS18B20发送读温度命令(BEh),DS18B20以16位、符号扩展的二进制补码形式发送到数据总线,低位在前,高位在后。
2 测温系统硬件设计
系统硬件主要由单片机最小系统、DS18B20传感器温度采集电路、数码管显示驱动电路、LED报警电路组成,DS18B20采用外部电源供电方式,抗干扰性强,系统硬件电路如图3所示。
3 测温系统软件设计
系统软件分两层设计,上层是应用层,负责系统初始化、温度符号、百位、十位、个位、十分位数据提取,温度异常报警等;底层负责DS18B20初始化、读写驱动和数据显示驱动,DS18B20与处理器采用串行数据传输,在对其进行初始化、读写编程时,必须严格保证读写时序,否则将出现错误。
3.1 系统应用层主程序设计
系统主程序主要完成系统初始化,调用读取DS18B20温度转换值函数,温度符号、百位、十位、个位、十分位数据的提取,温度数据显示,温度异常报警等工作,系统主程序流程如图4所示,当检测到的温度高于最大阈值或低于最小阈值时,分别采用红灯、黄灯报警,温度正常时绿灯点亮。
3.2 DS18B20驱动层程序设计
DS18B20温度转换值采用12位分辨率,总线控制器接收到16位数据后保存在2个字节的存储单元,高字节保存的值左移8位与低字节相加,便得DS18B20温度转换结果,读取温度转换值函数如下:
4 系统调试与运行结果
在单片机开发环境Keil软件中,选择AT89C51单片机新建项目,采用C语言编写系统程序,编译生成目标代码HEX文件,并导入到Proteus ISIS硬件电路图中单片机的Edit Component设置的Program File属性中进行仿真运行,系统仿真实验结果如图5所示,数码管左数第一位的“1”表示零上,第七位的“C”表示温度单位摄氏度。
5 结语
以AT89C51单片机为核心处理器,在Proteus环境下完成了基于单总线数字温度传感器DS18B20的测温系统的设计,并进行了仿真。首先给出了DS18B20传感器特性和控制命令及时序,设计了DS18B20的检测电路,同时采用Keil软件完成了系统主程序、DS18B20驱动程序的设计;最后进行了系统Proteus仿真,降低了设计成本,提高了开发效率,并获得了良好仿真实验结果。