0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

采用DS18B20芯片实现分布式温度采集系统的设计

电子设计 来源:郭婷 作者:电子设计 2018-12-30 08:25 次阅读

引言

温度测量在现代工业生产过程中发挥着重要的作用, 无论对于大型企业还是众多的小 型工厂, 往往需要监测多个设备的几十个温度值[1]。在分布式温度采集系统中,通常采用单 片机作为系统的控制器,系统工作时依次采集每一个探测器的温度值并存储。如果监测到某 个探测点的温度有异常,系统就会根据用户的需要做出相应的反映。然而,当监测点数量很 多时,单片机轮流地采集完每一个监测点的温度值会花费相对较长的时间,如果这个过程中 有某个测量点温度异常将不能实时地反映到系统中,使得温度采集系统的实时性降低。

现场可编程门阵列(FPGA)是美国Xilinx 公司在20 世纪80 年代中期率先推出的一种 高密度可编程逻辑器件,它既具有PLD 可编程的灵活性,又有掩膜门阵列(GA)高集成度 和通用性,单片FPGA 的集成规模已达到几百万门,其工作频率已超过300MHz[2]。本文以 FPGA 作为分布式温度采集系统的控制器,与以往利用单片机作为控制器的系统相比,提高 了系统整体的实时性和稳定性。

1 温度传感器及其通信协议

本系统中温度传感器采用的MAXIM 公司的1-Wire 器件DS18B20,DS18B20 温度传感 器由于其结构简单、安装方便、功耗低、测温范围宽而被广泛的应用于化工、粮食、环境监 测等需要实现多点测温的地方[3];1-Wire 技术采用一根信号线进行双向数据传输,一个控制 器可以控制一个或多个从机设备,与其他标准串行数据通信方式如SPI、I2C 相比,单总线 具有节省系统I/O 口线资源、结构简单、成本低廉、便于总线扩展和维护等诸多优点[4]。

由于 1-Wire 总线只有一根信号线,所以要完成通信就要在一根信号线上实现数据的双 向传输。1-Wire 通信协议对时序的要求非常严格,协议中一共规定了五种类型的通信时序, 分别为初始化(复位)时序、写“1”时序、写“0”时序、读“1”时序和读“0”时序,如 图1 所示。所有通信都由这五种典型时序组合完成,就是说要控制好这五种时序,才能实现 对1-Wire 器件的控制。

采用DS18B20芯片实现分布式温度采集系统的设计

2 实时分布式温度采集系统设计

大多数基于DS18B20 的温度采集系统采用单片机作为控制器,可以监测多个温度点的 温度。虽然监测点的数目可以很多,但是却无法做到同时对每一个监测点进行监测。原因在 于单片机在一个时间周期只能执行一条指令,无法实现并行的动作了。然而采用FPGA 作 为控制器将大大提升温度监测系统的实时性,FPGA 的动作是由时钟来驱动的,因此可以在 同一时钟可完成多个动作。FPGA 可以并行地处理数据,这是单片机无法做到的。本文设计 的温度监测系统就是利用了FPGA 的这个优势,实现了对多个监测点实时进行监测。

2.1 系统硬件设计

FPGA 选用Altera 公司主流Cyclone 系列高性价比的EP1C6Q240C8N。测温系统的原理 图如图2 所示,由FPGA、显示部分、按键部分和采集部分组成。虽然单总线允许在总线上 挂载多个1-Wire 器件并实现多点控制,但这样却无法同时对每一个1-Wire 器件实现控制。 所以本系统的采集部分使每个DS18B20 都单独享有一条总线,每条总线都与FPGA 的一个 I/O 口相连。系统选用的FPGA 一共有240 个管脚,不算电源和配置管脚,可用的I/O 管脚 达到了179 个,除去显示和按键部分所用去的I/O 管脚,理论上还可以挂载上百个DS18B20。

采用DS18B20芯片实现分布式温度采集系统的设计

按键部分的设计提供人机交互,可以设定最低温度警告数值和最高温度警告数值,通过 按键可以浏览每一个温度点的测量值。显示部分负责显示每一个测量点的标号和对应的温度 值。FPGA 负责控制温度的采集,并将每一个测量点的温度与设定好的最低温度和最高温度 进行实时比较,一旦某监测点的温度超标将立刻发出警报提示。

2.2 软件编程设计

本系统是连续实时采集温度的,所以需要有一个核心控制部分来实现对DS18B20 发送 复位、温度转换和温度读取指令的功能。控制部分采用有限状态机来实现,状态与状态之间 的转换需要一定的转移条件,这个转移条件可以是一个定义的信号量,当信号量的数值改变 时,状态机就通过信号量的数值来决定转换到哪一个状态。

根据有限状态机与温度采集控制器的对应关系,可以参照控制器的操作控制步来确定有 限状态机的状态。设发送复位指令的状态值为“000”,发送跳过ROM 指令的状态值为“001”, 发送转换温度指令的状态值为“011”,发送读取暂存指令的状态值为“101”,读取温度数据 的状态值为“100”。状态机的状态都确定以后,便做出有限状态机状态转移图,如图3 所示。

采用DS18B20芯片实现分布式温度采集系统的设计

根据以上的分析,接下来用 VHDL 语言编写描述有限状态机功能的程序。程序使用两 个进程来描述有限状态机的功能:state_transfer 进程用来描述有限状态机中的次态逻辑和状 态寄存器,通过CASE 语句,根据次态逻辑值实现状态值的改变;output_logic 进程用来描 述有限状态机中的输出逻辑,通过IF 语句判断状态值,然后转入相应的指令程序。

3 基于FPGA 与基于单片机控制DS18B20 的比较与讨论

3.1 保证时序精确

单片机作为基于DS18B20 的温度监测系统的控制器,用汇编语言编写程序,很容易控 制时间,因为我们知道每条语句的执行时间,每段宏的执行时间,每段子程序加调用语句所 消耗的时间[5]。但是当系统进入中断,时序的控制就无法保证精确。

如果用 FPGA 作为基于DS18B20 的温度监测系统的控制器,在保证1-Wire 通信协议时 序上就有足够的把握。因为控制时序程序、显示部分程序和人机交互程序等都在相互独立的 进程上同时运行,保证了系统的实时性和可靠性。

3.2 查找序列号

单片机的管脚有限,所以要用单片机监测多个温度点时,就需要将多个DS18B20 挂在 一条总线上。很显然,序列号匹配工作需要额外的时间,而且在读取一个测温点温度值的过 程中,其它的测温点也都完成了测温并等待读取,这无疑降低了测温的效率。

用 FPGA 代替单片机,以上问题就不存在了。首先FPGA 具有丰富的管脚资源,可以 让每个传感器都单独使用一根数据线。这样不但可以实现同时读取每一个传感器的温度值, 而且可以不用进行序列号的匹配。大大提高了整个系统测温的效率,维护更加方便快捷。

3.3 成本考虑

单片机技术如今已经非常成熟,应用领域也非常广泛,价钱也非常便宜,普通的型号价 格在1 美元左右,最高端的型号也只有10 美元。因此用单片机作为控制器,整体系统的成 本相对较低。虽然FPGA 如今也已经得到了广泛的普及,但是价格还是相对较高,因此用 FPGA 作为系统的控制器,成本就相对高一些。

4 结论

使用FPGA 作为DS18B20 的控制器,可以保证时序上精确符合单总线通信协议,系统 运行时控制部分、显示部分、人机交互部分可以并行地运行互不干扰,提高了整体系统的实 时性与稳定性;与用单片机作为控制器的系统做出比较,分析了两者作为控制器的优缺点。

基于 FPGA 和DS18B20 的分布式温度采集系统,可实现同时监测多个温度点,并无需 知道每一个传感器的序列号,大大提高了温度采集系统的实时性和可靠性。虽然基于FPGA 的系统成本相对较高,但为分布式温度采集实时性要求较高的应用场合提出了解决办法。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1603

    文章

    21326

    浏览量

    593245
  • 芯片
    +关注

    关注

    447

    文章

    47804

    浏览量

    409180
  • 控制器
    +关注

    关注

    112

    文章

    15235

    浏览量

    171213
  • 温度采集
    +关注

    关注

    0

    文章

    92

    浏览量

    23353
收藏 人收藏

    评论

    相关推荐

    DS18B20温度传感器工作原理及其应用电路图

    的条件下读取ROM。    (3)电路更加简洁,仅用一根I/O口实现测温。    (4)只适应于单一温度传感器测温情况下使用,不适于采用电池供电系统中。    
    发表于 02-21 14:43

    DS18B20数字温度

    共阳LED数码管,从P1口输出段码,列扫描用P3.0-P3.3来实现,列驱动用8055三极管。 3)软件设计基于DS18B20数字温度传感器的软件设计采用C51编写程序,主要完成
    发表于 07-26 15:39

    ds18b20温度采集系统(串口调试).zip下载

    ds18b20温度采集系统(串口调试).zip下载{:4_101:}
    发表于 04-04 20:35

    基于AT89C51和DS18B20的最简温度测量系统

    与单片机沟通,完成温度采集和数据处理。DS18B20与AT89C51结合实现最简温度检测系统,该
    发表于 10-25 17:11

    DS18B20温度检测系统中的应用

    DS18B20数字温度传感器,可以直接将被测温度转化为串行数字信号供微机处理,通过简单的编程实现9位的温度读数。并且多个
    发表于 11-06 15:09

    基于单总线数字温度传感器DS18B20的测温系统方案

    单总线上构成多点分布式温度测量系统;具有极强的抗干扰纠错能力。  DS18B20的TO-92封装如图1所示,针脚1为电源地线,针脚2为数据输入/输出线,针脚3为可选电源线。  
    发表于 11-06 15:18

    基于DS18B20数字温度传感器的设计方案

    DS18B20温度传感器通信,控制温度采集过程和进行数据通信;  (2)提供DS18B20的使用外围电路、
    发表于 11-12 16:30

    基于DS18B20的MOA温度远程监控系统设计

    远程温度监测能力和远程报警能力。  1DS18B20简介  1. 1DS18B20  系统采用DALLAS半导体公司生产的单线数字
    发表于 12-04 15:57

    DS18B20温度传感器实验

    STM32学习记录:DS18B20温度传感器实验(HAL库)实验摘要DS18B20简述STMCubeMX引脚配置芯片选型引脚和时钟配置生成ARM-MDK工程编写
    发表于 08-18 07:44

    DS18B20的相关资料分享

    一、环境介绍编程软件: keil5操作系统: win10STM32编程方式: 寄存器开发 (方便程序移植到其他单片机)温度传感器: DS1820DS18B20是一个数字温度传感器,
    发表于 11-30 06:22

    DS18B20的基本概述

    DS18B20的读时序(低位先读)8、DS18B20温度转换与读取流程9、DS18B20温度采集
    发表于 12-02 06:30

    使用DS18B20实现温度采集并在串口或液晶屏上显示

    现要求完成温度采集并在串口或液晶屏上显示。我们这里使用DS18B20实现,它的一些特性大家可以网上搜搜,资料很多。18B20的两个时序图很重
    发表于 01-05 08:06

    DS18B20的特点是什么

    一、芯片介绍1、DS18B20特点(1)采用单总线的接口方式 与微处理器连接时仅需要一条口线即可实现微处理器与 DS18B20 的双向通讯。
    发表于 01-10 06:25

    温度模块DS18B20的相关资料推荐

    温度模块DS18B20DS18B20简介:DS18B20 单线数字温度传感器,即“一线器件”,DS18B20的总线只有一根,数据的交换和控制
    发表于 01-10 07:09

    RT-Thread实现分布式温度监控系统的教程合集

    分布式温度监控系统基于 STM32 系类芯片开发,支持采集多达六个分节点的温度数据,网关节点收集
    发表于 03-24 11:00