您现在的位置是:首页 > 传感器

基于DS18B20的远程粮仓温控系统

2020-05-27 01:02:52

基于DS18B20的远程粮仓温控系统

1 引言

粮食温度检测是储备库中防止粮食霉烂、保质存放的重要环节。对于一个农业大国来讲,粮食生产、需求与储备量都很大。大量粮食在储备的过程中常因粮食湿度过大而升温发热,导致粮食大量腐烂变质,给国家带来巨大损失。所以粮仓监控系统中温度测量是整个系统的主要功能之一。

本文介绍一种以单线数字温度传感器DS18B20为温度敏感元件的粮仓温控系统,系统以微型计算机为上位机, 89C51单片机为检测分机,DS18B20数字温度传感器直接与分机连接,分机与测温主机通过RS-485总线网进行通信,系统所有操作通过菜单命令完成。本文主要围绕下位机数据采集部分进行论述,并结合粮仓监控系统,对DSl8B20的这种单总线技术及其在本系统中的具体应用进行了讨论。


2 系统硬件设计


2.1 系统的总体设计

整个系统从结构上可分为三层:由微型计算机构成上位机——用户监控层,51 单片机系统分别构成测温主机——控制层和分机——温度数据采集层。上位机通过串行口与测温主机交换数据。测温主机与多台分机采用主从分布式结构。系统组成结构如图1 所示,测温主机与上位机通过RS-232 总线连接,测温分机与主机通过RS-485 总线连接。一台主机最多可管理64 台分机,一台分机可以测试大约1000 个温度点。本设计适用于中小型粮库。

 

图1 系统结构图


2.2 温度数据采集模块的设计

DS18B20是美国DALLAS公司生产的数字温度传感器芯片,具有结构简单、体积小、功耗小、抗干扰能力强、使用方便等优点。可以在三根线上同时并联多个温度传感器,每台分机上可以连接多根电缆,每根电缆上可以并联几十个点,构成串行总线工作方式。由于18B20芯片送出的温度信号是数字信号,因此简化了A/D转换的设计,提高了测量效率和精度;并且芯片的ROM中存有其唯一标识码,即不存在相同标识码的DS18B20,特别适合与微处理芯片构成多点温度测控系统。

每台测温分机的P0~P3 口分别可接N 个DS18B20 传感器(N<40)。上位机控制每台分机工作,实现多点测温。采集到的温度数据通过RS-485 通信总线连成的总线型网络进行传输,测温分机接收到DS18B20 所传送的温度数据,并将这些数据进行简单的处理发往上位机。主程序实现对DS18B20 的实时数据采集,将结果存贮于单片机的RAM 区。中断服务程序实现测温分机与上位机的通信。

测温分机按照上位机的命令来完成温度数据采集和发送工作。其先将采集的数据存放于外部存储器SRAM中,当收到上位机的上传数据命令时,由发送子程序将数据进行简单处理后通过串口TXD端送出。在测温主机的配合下,数据上传到上位机并在上位机的监控界面显示给用户。


2.3 RS-485总线在温控系统中的设计

在系统中用51单片机构成主从分布式测控系统, 具有价格低、控制功能强等许多特点。然而在应用中,测温主机与各粮仓相距较远,距离从几十米到几千米不等。对此远程粮仓,系统采用RS-485总线实现数据的远程传输。进行串行通信的主机与分机的RS-485接口电路如图2.3所示。该电路以MAX485芯片为核心器件进行半双工通信,具有通信功能强、可靠性高、程序设计简单等特点。

 

图2 典型RS-485(半双工)通信网

在使用RS-485接口时,对于特定的传输线径,从发生器到负载,其数据信号传输所允许的最大电缆长度是数据信号速率的函数,这个长度主要是受信号失真及噪声等影响所限制。当数据信号速率降低到90Kbit/S以下时,假定最大允许的信号损失为6dBV时,则电缆长度被限制在1200M。实际上,在实用时是完全可以取得比它大的电缆长度。当使用不同线径的电缆时,取得的最大电缆长度是不相同的。例如:当数据信号速率为600Kbit/S时,采用24AWG电缆,计算可知最大电缆长度是200m,若采用19AWG,电缆则电缆长度将大于200m;若采用28AWG电缆,则电缆长度只能小于200m。

RS-485总线是半双工方式,即总线上某一时刻不能同时出现发送和接收的情况。此方式用于多站互连时,可节省信号线,方便地实现RS-485的多点通信功能。考虑到中小型仓库地理位置特点,系统采用较低的接收、发送波特率,以换取更远距离的传送,此设计完全可以满足系统需求?/p>


3 软件设计


3.1 系统软件的工作流程

DS18B20 以单总线协议工作,测温分机首先发送复位脉冲命令,使信号线上所有的DS18B20 芯片都被复位,接着发送ROM 操作命令,使序列号编码匹配的DS18B20 被激活进入接收内存访问命令状态;内存访问命令完成温度转换、温度读取等工作(单总线在ROM 命令发送之前存储命令和控制命令不起作用)。DS18B20 工作流程见图3 所示。

 

图3 DS18B20 工作流程图

系统以ROM 命令和存储器命令的形式对DS18B20 操作。ROM 操作命令均为8 位,命令代码分别为:读ROM(0x33H)、匹配ROM(0x55H)、跳过ROM(0xCCH) 、搜索ROM(0xF0H) 和告警搜索(0xECH) 命令;存储器操作命令为:写暂存存储器(0x4EH) 、读暂存存储器(0xBEH)、复制暂存存储器(0x48H)、温度变换(0x44H)、重新调出EERAM(0xB8H)以及读电源供电方式(0xB4H)命令。其对时序及电特性参数要求较高,必须严格按照它的时序要求去操作。DS18B20 的数据读写由测温分机来完成,包括初始化、读数据和写数据。

系统软件采用模块化程序设计,主从式结构通信方式。规定总线上有一个测温主机和64台分机,分机地址唯一。初始化完成后各分机均处于监听状态,采用中断方式工作,测温分机接受上位机命令,向DS18B20发出地址匹配命令帧,进入等待状态,每一帧数据位都对应着不同意义,若地址匹配成功则进行响应分机,否则继续等待,直到等待超时而重发命令。温度采集模块负责数据的采集工作。

当缓冲区有数据时产生中断,程序转向中断服务子程序入口,中断子程序如下:

 

 

C程序