一种基于DS18B20的温度采集新方案

发布者:Xiaochen520最新更新时间:2011-06-23 关键字:DS18B20  AVR单片机  单总线 手机看文章 扫描二维码
随时随地手机看文章

0 引言

    温度监控系统在工业、农业和医疗领域拥有很大的应用价值和前景。随着计算机技术、测量技术和无线通信技术的发展,传统的人工监控由于存在很多缺点,正在逐渐被电子监控所代替。现有的一根I/O线上连接多个DS18B20的数据采集方法,在DS18B20接入系统之前,需要采用人工方式将DS18B20的64位ROM序列号逐一读出,并在单片机程序中或外部存储器中进行存储。这种方法给DS18B20物理位置的确定带来了困难,特别是当更换出现故障的DS18B20时,这个问题变得尤为突出。

    因此,本课题通过采用软件编程与硬件设计相结合的方式,解决了在AVR单片机与DS18B20结合的测温系统中数字传感器的更换问题。在本课题提出的解决方案中,数据采集模块采用低功耗AVR单片机-Atmega16、单总线数字温度传感器DS18B20以及外部存储器-低能耗串行EEP-ROM。系统根据DS18B20数量的多少,可以选择基于MAX485的有线组网,也可以选择基于nRF905或ZigBee的分布式无线组网。

1 DS18B20简介

1.1 概述

    DS18B20是由美国DALLAS(达拉斯)公司生产的高性能单线数字式温度传感器。该传感器提供9到12位温度读数;可实现-55℃到+125℃范围内的温度测量,增量值为0.5℃。现场测量的温度值通过单总线接口传给微处理器,多个DS18B20可以存在于同一条单线总线上。因此,在实际应用中可以在多个不同的地方放置DS18B20,并将这些传感器接在同一条单线总线上,由一个单片机进行控制。对DS18B20数字传感器供电有两种方式:一是寄生电源供电;二是外部电源供电。每个DS18B20在出厂时都有一个唯一的64位编号,存放在内部ROM中。

1.2 引脚说明

    DS18B20只有三个引脚:一个是GDN(电源地);一个是VDD(当采用寄生电源供电时,VDD接地;若采用外部电源供电时,VDD接工作电源  );还有一个引脚是DQ(数据输入/输出引脚)。

1.3 硬件电路

1.3.1 寄生电源供电电路


a.JPG

1.3.2 外部电源供电电路

b.JPG


    采用寄生电源供电时,VDD引脚必须接地,由I/O引脚为DS18B20提供电源电流。采用外部电源供电时,VDD接外部电源,为DS18B20提供电源电流。寄生电源有双重优点:a.利用此引脚,远程温度检测无需本地电源;b.缺少正常电源条件下也可以读ROM。但是这种供电方式无法保证在数据转换期间的供电,从而DS18B20无法进行精确地温度转换。当多个DS18B20挂在同一根I/O线上并同时进行温度转换时,这个问题变得更加明显。所以本课题采用外部电源供电方式,以达到提高温度转换精确度的目的。

1.4 内部结构

    DS18B20内部主要包括:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。如图3所示:

c.JPG

1.4.1 64位光刻ROM

    用于存储64位序列号。该序列号是DS18B20的唯一编号,在出厂前被光刻在64位ROM中。DS18B20在与单片机通信时,用此序列号以区别其它传感器。64位序列号可以看作是DS18B20的地址序列码。    64位光刻ROM的位排列是:低8位是产品类型标号;接着的48位是该DS18B20的自身序列号;最后高8位是低56位的循环冗余校验码,该8位又被单独提出,称为CRC发生器,主要是实现串行通信中的数据校验,判断接收的数据是否正确。64为序列号的作用,是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20。

1.4.2 非易失性温度报警触发器

    DS18B20的温度报警触发器TH和TL各由一个非易失性EEPROM字节构成,如果没有对DS18B20使用报警搜索指令,可以作为一般的EEPROM存储器使用。利用每个DS18B20唯一的序列号可读取同一根I/O线上的多个DS18B20的温度数据,利用I/O端口号和已经写入层数信息的DS18B20的温度报警触发器(TH和TL),可将每个DS18B20的温度数据和其物理位置对应起来。因此在DS18B20安装之前,就需将DS18B20所在层的信息写入到温度报警触发器(TH和TL)中。[page]

2 DS18B20与AVR单片机的连接

    在本课题中DS18B20采用寄生电源供电,单片机选用AVR单片机-Atmega16。之所以选择AVR单片机,是因为其具有51单片机无法提供的优点:a.读写速度快,AVR单片机采用了大型快速存取寄存器文件和快速单周期指令。其快速存取RISC寄存器文件由32个通用工作寄存器组成。AVR用32个通用寄存器代替累加器,避免了传统的累加器与存储器之间的数据传送,可在一个时钟周期内执行一条指令来访问两个独立的寄存器,代码效率比常规CISC微控制器快十倍。高效的读写速度,更适合于对及时性要求高的场合。b.性价比高。c.工作电压范围宽(2.7~6V)、抗干扰能力强,这样更适合在各种条件下处理测量温度值。总之,AVR单片机在一个芯片内将增强性能的RISC 8位CPU与可下载的FLA-SH相结合使其成为适合于许多要求、具有高度灵活性和低成本的嵌入式高效微控制器。
 

    图4给出了DS18B20采用外部电源供电方式时,与Atmega16单片机的硬件连接图。



 

d.JPG

3 DS18B20更新问题的解决方案
 

    本课题在深入研究了数字传感器工作机理的基础上,通过硬件设计和软件编程,提出了解决数字传感器更换的方案,并应用在了通过无线传感器网络远程控制传感器的设计中,而且在硬件平台上实现了仿真。图5是通过Proteus 7单片机软件仿真系统设计的,单片机控制DS18-B20并显示测试结果的电路图。
 

e.JPG

3.1 硬件设计

    单片机通过I/O口控制DS18B20,每个I/O口外接60个DS18B20,同时单片机通过SPI串行接口外接外部存储器EEPROM,如图6所示。


 

f.JPG

    本课题中,外部存储器EEPROM选用意法半导体(ST)生产的M95128;选用Atmega16单片机。DS18B20采用外部电源供电方式,所以VCC接外部电源,GDN接地。

    M95128芯片采用MLP8微型封装技术,因此,可以大大节省产品的空间和成本;待机功耗低于3μA,也是该芯片的一大特点;四线的SPI接口支持最高 2 Mbit/s的通信速率,除提供标准的硬件写保护功能外,还支持软件写保护。外部存储器EEPROM用来存放单片机控制的所有DS1-8B20的序列号,和对应的逻辑地址。一个DS18B20的序列号占八个字节,所以一路数据线上所接DS18B20温度传感器的个数与外部存储器EEPR-OM的存储空间有关。M95128芯片的容量达128kbit,可以存储13107个DS18B20的序列号和对应的逻辑地址,足以满足本课题的需要。

   单片机Atmega16的PB5(MOSI)口接EEPROM的DI(数据输入)口,PB6(MISO)口接DO(数据输出)口,PB7(SCK) 口接SK(读写时钟信号输入引脚)。单片机读到每个DS18B20的序列号后,通过PB5口将序列号和对应的逻辑地址写入EEPROM中。需要某个逻辑地址对应的序列号时,EEPROM通过DO口将序列号传入单片机中。[page]

3.2 软件设计

    本课题设计使单片机每次上电时,都重新读取每根数据线上的每个DS18B20的序列号和温度报警器中的内容,I/O端口号+温度报警触发器中的层信息即为该DS18B20的逻辑地址。单片机将读取到的各DS18B20的序列号与其对应的逻辑地址,通过MOSI引脚保存在外部存储器EEP-ROM中。在控制模块的固化程序中,只涉及传感器的逻辑地址。当需要访问某个传感器时,单片机会根据固化程序中的逻辑地址在EEPROM中查找该逻辑地址对应的 DS18B20序列号,从而找到需要访问的传感器。在更换了某个DS18B20时,只需给单片机重新上电,微控制会更新EEPRO-M,而不需修改控制模块中的固化程序。

    本课题中,使用ICCAVR编译器作为软件开发环境,编译C语言程序代码。向EEPROM中保存序列号的程序流程图如图7所示。


 

g.JPG

    根据控制模块中涉及的逻辑地址,单片机在EEPROM中查找对应的DS18B20的序列号的程序流程如图8所示。

4 结语

    无线测温系统的应用前景非常广阔。本课题提出的通过外接EEPROM存储器,保存DS18B20的序列号和对应的逻辑地址的方案,解决了 DS-18B20的更新问题。可以极大地提高技术人员及工作人员的工作效率;同时,由于在通信链路中传输的是逻辑地址,所以减少了链路中的冗余信息,增加有效信息的传输,提高无线传输效率。因此,本课题设计的温度采集系统具有运行速率快、性能稳定、数字化程度高、便于维护等特点。此系统在各类数字通信、环境监测、安防系统等多个领域具有广泛的应用价值。并且已经在CX-AT16硬件平台上实现了仿真。

关键字:DS18B20  AVR单片机  单总线 引用地址:一种基于DS18B20的温度采集新方案

上一篇:GPS相对定位在重力卫星KBR测距中的应用
下一篇:基于MAX9060比较器的插孔自动检测电路设计

推荐阅读最新更新时间:2024-03-30 22:15

DS18B20数字温度计使用
1.DS18B20基本知识 DS18B20 数字温度计是 DALLAS 公司生产的 1 - Wire ,即单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。 1 、 DS18B20 产品的特点 ( 1 )、只要求一个端口即可实现通信。 ( 2 )、在 DS18B20 中的每个器件上都有独一无二的序列号。 ( 3 )、实际应用中不需要外部任何元器件即可实现测温。 ( 4 )、测量温度范围在- 55 。 C 到+ 125 。 C 之间。 ( 5 )、数字温度计的分辨率用户可以从 9 位到 12 位选择。
[单片机]
<font color='red'>DS18B20</font>数字温度计使用
单片机DS18B20温度检测LCD1602显示程序+电路PCB设计
制作出来的实物图如下: Altium Designer画的原理图和PCB图如下: 单片机源程序如下: /*********************************************** 该程序为温度测量 用到DS18B20、LCD1602 备注:程序的许多地方也是理解了他人的程序才写出来的如果有理解错误、书写错误的地方望大家留言指导 ********************************
[单片机]
单片机<font color='red'>DS18B20</font>温度检测LCD1602显示程序+电路PCB设计
AVR单片机闪烁灯程序-第一个程序
自从无线通信完成后我没做什么,而是把AVR的学习列上日程,AVR的学习我是纯手工打造,所有的实验板全部自己焊接,因为用51习惯了,他是那么的方便,到AVR这却是一件很简单的事情显得如此复杂,那下载来说吧,51的ISP是通过串口直接写到FLASH,而AVR的还要设置熔丝位,如果搞不好芯片锁死就完蛋了,至少我的水平是够呛解决的。遇到的第一个问题是价格,AVR的价格比51的贵将近2-5倍,我选的是16L,因为他的FLASH足够我这种菜鸟用的,16KB,另一个是他的宽电压,以前51就没有这个优势,最重要的其实学哪种都无所谓,编程吗,其实就是一个中心思想的问题,只要你有好的算法,用什么语言描述就无关紧要了,关键AVR有个架构是不同于51的,
[单片机]
如何让你的AVR单片机功耗超低
四年多前整过一次低功耗的,当时调试也是OK的,程序基本上是移植过来了。 这次重新改动一下,做了,本以为捣腾一天差不多了,结果又捣腾了两天。 硬件平台是使用9V的电池,系统稳压到5V,普通的稳压IC肯定不行的,必须是LDO型的IC。LDO选的是国产的BL8061,INPUT VOLTAGE是2-16V,OUTPUT CURRENT:250mA,典型的消耗是2uA,BL8060输入电压是1.5-14V,最大电流时200mA,功耗是1uA。稳压前后的电解电容1uF。因为板子做的是贴片的,贴片的手头现成的只有10V/22uF,偶加在稳压后,因为9V电池空载电压就接近10V了,稳压前偶弄了个普通的杂牌铝电解,结果第一晚就被这颗害死了。
[单片机]
如何让你的<font color='red'>AVR单片机</font>功耗超低
为什么选用AVR单片机来学习单片机
  电子技术的迅猛发展,尤其单片机更广泛地应用于军事、工业、家用电器、智能玩具、便携式智能仪表等领域,使产品功能、精度和质量大幅度提高,电路简单、故障率低、可靠性高且成本低廉。ATMEL公司把51内核与其擅长的FLASH制造技术相结合,推出可重复擦写1000次以上低功耗的89C51/52/1051/2051等产品,取代其它8751系列,称霸单片机市场数年。于1997年,由ATMEL挪威设计中心的A先生与V先生,利用ATMEL的FLASH新技术, 共同研发RISC(Reduced Instruction Set CPU) 精简指令集高速嵌入式8位单片机,简称AVR。   学习单片机为什么选用AVR单片机?   一、进入AVR单片
[单片机]
AVR单片机控制LCD1602液晶显示
一、字符型LCD1602介绍 详情请进: http://q.163.com/longfei-mcu/ 以上是LCD1602的图片,这是市面上大多数使用的。LCD1602已很普遍了,市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样 字符型LCD的引脚定义如下: 图1 HD44780内置了DDRAM、CGROM和CGRAM。 DDRAM就是显示数据RAM,用
[单片机]
<font color='red'>AVR单片机</font>控制LCD1602液晶显示
第十节:(一)使用 DS18B20 温度传感器设计温控系统
项目实现功能: 使用51开发板上的DS18B20温度传感器设计温控系统,要求如下: 用串口将采集到的温度数据实时发送至上位机,在上位机软件上显示当前温度值(关于上位机软件的编写请参考下篇VB 内容)。 关于温度变化的实现,大家可参考以下方法: 室温通常在 28°C左右,用手捏住温度传感器可使其温度上升,用温度低的物体接触温度传感器可使其温度降低,或在温度传感器上淋点水,然后对着温度传感器吹气可以使温度迅速下降,大家也可想其他办法使温度传感器周围温度在 25°C~32°C 变化。 一、温度传感器概述: 温度传感器是各种传感器中最常用的一种,早期使用的是模拟温度传感器,如热敏电阻,随着环境温度的变化,它的
[单片机]
第十节:(一)使用 <font color='red'>DS18B20</font> 温度传感器设计温控系统
AVR单片机(学习ing)—(KZ)、电源管理及睡眠模式—01
电源管理及睡眠模式 睡眠模式可以使应用程序关闭MCU 中没有使用的模块,从而降低功耗。AVR 具有不同 的睡眠模式,允许用户根据自己的应用要求实施剪裁。 进入睡眠模式的条件是置位寄存器MCUCR 的SE,然后执行SLEEP 指令。具体哪一种 模式( 空闲模式、ADC 噪声抑制模式、掉电模式、省电模式、Standby 模式和扩展Standby 模式) 由MCUCR 的SM2、SM1 和SM0 决定,如Table 13 所示。使能的中断可以将进 入睡眠模式的MCU 唤醒。经过启动时间,外加4 个时钟周期后, MCU 就可以运行中断 例程了。然后返回到SLEEP 的下一条指令。唤醒时不会改变寄存器文件和SRAM 的内 容。如果在睡眠过程
[单片机]
<font color='red'>AVR单片机</font>(学习ing)—(KZ)、电源管理及睡眠模式—01
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
最新测试测量文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved