1、摘 要本文设计了一个计算机控制的温度、湿度实时监测与报警系统,可应用于多种需要采集温湿度数据的场合。数据采集器的核心部件为单片机,主要完成对其所连接传感器件的测量与控制以及与主机的通信等功能。各采集器以网络结点的方式挂接到 RS485 传输网络上,传输距离远,还可有效的抑制共模干扰。设计中的 RS232/RS458 转换器用来实现 RS485 总线网络与主机 RS232 串口通信的相互转换。本设计实现了温度、湿度的实时监测系统,该系统不仅能实时采集各抽样点的温度值与湿度值,而且能够迅速处理,并存储结果以方便以后的对比研究。关键词: 单总线 DS18B20 HIH3610 RS232/RS485
2、AbstractA kind of real-time monitoring system for temperature and humidity controlled by computer is introduced in this paper, which is can be used for many applications. The kernel of data collector is MCU, which takes charge of measurement, control and communication with the host controller. The R
3、S485 transmission net is made up of the data collection station, which can transmit for remote distance and restrain common mode interference. The RS232/RS485 converter is used for conversion between RS485 and RS232, which is used by the host controller. Design of the temperature and humidity of rea
4、l-time monitoring system, The system can not only real-time acquisition of the sampling point temperature and humidity values, but also dealt with expeditiously, and store the results to facilitate future comparison. Key words:1-Wire DS18B20 HIH3610 RS232/RS485I目 录第一章 绪论11.1 引言11.2 温湿度检测发展方向11.3 本文主
5、要研究内容2第二章 系统的总体设计32.1 系统的总体结构32.2 系统的工作过程32.3 温度、湿度监测的组成42.4 温湿度测量芯片42.5 测量数据的传输5第三章 温度、湿度传感电路设计63.1 温度传感器电路设计63.2 湿度传感器电路设计93.3 单总线系统13第四章 温湿度数据采集电路设计154.1 AT89C52单片机154.2 数据采集器的结构与电路设计154.3 数据采集系统的软件设计184.4 RS232/RS485 转换器21结 论24参考文献25致 谢26附 录2731第一章 绪论1.1 引言温度、湿度监测在人们现实生活生产中应用已日渐广泛,在发电厂、纺织、食品、医药、
6、仓库、农业大棚等众多的应用场所,对温度、湿度参量的要求都非常严格,因此能否有效对这些领域的温、湿度数据进行实时监测和控制是一个必须解决的重要前提。在现代工业现场,随着科技的进步和自动化水平的提高,电缆的用量越来越大,电缆的安全保护已成为不可忽视的问题。从国内外有关电缆火灾的统计资料看,许多电缆火灾是由电缆头击穿绝缘引起的。因此为电缆配置线温度监测系统, 对于电缆接头多,电缆密集的场所,就显得尤为重要。粮食是人类生存的必需品,温度与湿度是保存好粮食的先决条件,我国的公粮现均集中存放在国家或地方的仓库中,最大粮库方圆几公里,仓库库房数为数十个,测点可达数千个。按照国家粮食保护法则,必须定期抽样检查
7、各点的粮食温度与湿度,以确保粮食的存储质量。档案馆中的档案资料同样会受到外界空气温湿度变化的影响,纸张纤维热胀冷缩,使强度降低,湿度过大会使霉菌和害虫滋长,以致造成资料质变。本设计以上述问题为出发点,设计实现了温度、湿度的实时监测系统,该系统不仅能实时采集各抽样点的温度值与湿度值,而且能够迅速处理,将数据结果方便的显示给用户,并存储结果以方便以后的对比研究。1.2 温湿度检测发展方向温度传感器的种类很多,测温范围也很宽,高可以测量高达几千度,低也可以测量接近绝对零度,但在测量精度、稳定性、抗干扰等方面仍存在很多问题。如铂电阻温度计,虽然其测量范围宽,精度高但抗震动能力差;热敏电阻温度计灵敏度高
8、、体积小、响应速度快但稳定性较差;热电偶温度传感器缺点是灵敏度低;因此进一步改进敏感元件的制作工艺及结构,充分利用微处理技术发展数字化、集成化和自动化的温度传感器,同时探索新的敏感机理,寻求新型温度敏感元件也是温度传感器的发展方向之一。湿敏传感器在工业、农业、气象、医疗以及日常生活等方面都得到了广泛的应用,特别是随着科学技术的发展,对于湿度的检测和控制越来越受到人们的重视并进行了大量的研制工作。通常,理想的湿敏传感器的特性要求是:适合于在宽温、湿范围内使用,测量精度要高;使用寿命长,稳定性好;响应速度快,湿滞回差小,重现性好;灵敏度高,线性好,温度系数小;制造工艺简单,易于批量生产;转换电路简
9、单,成本低;抗腐蚀,耐低温和高温6特性等回。湿敏传感器正从简单的湿敏元件向集成化、智能化、多参数检测的方向迅速发展,为开发新一代湿度测控系统创造了有利条件,也将湿度测量技术提高到新的水平。1.3 本文主要研究内容 本论文的研究对象是计算机控制的温度、湿度实时监测与报警系统的软硬件设计,它可应用于多种需要采集温湿度数据的场合。系统的技术指标:1)一台主机可最多管理 32 台数据采集器,若增设中继器,可使系统扩展大于 32台采集器;2)各温湿度测试点与其所属采集器的最远距离不超过 150 米;3)温度测量:(1)测量范围:-55 +125 ;(2)测量精度:0.5(-10 +85 ); 2.0(-
10、55 +125 );(3)分辨率: 0.1;4)湿度测量:(1)测量范围:199RH;(2)测量精度:5RH(25);第二章 系统的总体设计2.1 系统的总体结构 如图 2.1 所示,整个监测系统从结构上分为三层:第一层是由工控机等组成的用户监测层作为上位机;第二层是由单片机 AT89C52 构成温湿度采集器作为下位机;最底层是由 DS18B20 构成的温度传感器结点和 DS2438 与 HIH3610 构成的湿度传感器结点。其中温度结点和湿度结点均为满足 1-Wire 通信规则。上位机与下位机之间的通信为总线结构的 RS485 通信网,下位机与数字化结点之间的通信由 1-Wire 网络完成。
11、 图2.1系统组成结构图2.2 系统的工作过程系统中每台采集器都有一个唯一且固定的地址编码。由于系统的主机与下位机之间采用半双工的 RS485 通信标准,所以主机采用问答式的通信方式,通过不同的地址编码逐一同下层的采集器通信。采集器统一管理的命令包括:采集器搜索底层传感器的 64 位 ROM 序列码,采集器启动温度传感器和湿度传感器的数据转换,采集器上传采集到的温湿度数据,主机与各采集器之间的通信通道校验等。当采集回来的温湿度值超过其对应测试点的报警上下限时,系统给出报警信号。2.3 温度、湿度监测的组成该系统的构成大体上可以分为三部分:一是温湿度参数的测量转换,二是测量数据的传输,三是数据的
12、处理。其系统框图如图 2.2 所示。图2.2 系统组成原理图2.4 温湿度测量芯片该部分是系统的主要环节,由原理图中温湿度采集模块来完成数据的获取与处理,在系统中将各温湿度采集模块称为数据采集器。温度传感器的种类很多,根据其输出方式及接口方式的不同,大体可以分为模拟温度传感器和数字温度传感器。模拟温度传感器输出的模拟信号,必须经过专门的接口电路转换成数字信号后才能由微处理器进行处理。数字温度传感器输出的数字信号,一般只需少量外部元器件就可直接送至微处理器进行处理。美国Dallas半导体公司的数字化温度传感器DS1820是世界上第一片支持单总线接口的温度传感器。单总线独特而且经济的特点,使用户可
13、轻松地组建传感器网络,为测量系统的构建引入全新概念。新一代的 DS18B20 体积更小、更经济、更灵活,而且由于芯片送出的温度信号是数字信号,因此省去了外部 A/D 转换,简化了硬件电路。湿度测量方法也是多种多样,但是与温度相比,它是比较难于测量的。其主要原因是,由于空气中所含的水蒸气相对空气来说是微量的,而且水蒸气对各种物质的影响也是错综复杂的。一直以来被广泛使用的湿度传感器从原理上主要分为吸附型和非吸附型,水分子吸附在物体表面和渗入物体内部后,直接影响物体的电气物理性能,利用这一特性可以制成多种吸附型湿度传感器。近年来,国内外在湿度传感器研发领域取得了长足进步。湿度传感器正从简单的湿敏元件
14、向集成化、智能化、多参数检测的方向迅速发展,为开发新一代湿度、温度监测系统创造了有利条件,也将湿度测量技术提高到新的水平。其中由 Honeywell 公司开发生产的线性电压输出式集成湿度传感器,其典型产品有 HIH3605/3610、HM1500/1520,主要特点是采用恒压供电,内置放大电路,能输出与相对湿度呈比例关系的伏特级电压信号,响应速度快,重复性好,抗污染能力强。2.5 测量数据的传输各数据采集器在得到温湿度数据后,加以简单处理,然后将其传送给主机,这之间的数据可靠传送是该系统中另一个要解决的关键问题。由于各个数据采集器距离主机比较远,一般要上百米,因此数据传输实际是一个远程通信系统
15、。数据在上传过程中往往易受干扰,干扰源主要有三个方面:一是现场用电设备产生的电磁干扰;二是电源线具有的 50Hz 工频干扰;三是各采集器之间的公共接地阻抗产生的干扰。将 RS232 转换成进行多点通信的 RS485 方式被应用到该系统中。RS485 具有带负载能力强,传输距离远(可达 1200 米),功耗小,传输速率高(最高可达 1Mbps)等特点。第三章 温度、湿度传感电路设计该系统的特点之一是测量温湿度数据的传感器均采用 Dallas 公司的单总线器件,单总线器件的数据传输严格遵守单总线协议。本章首先介绍由单总线温度传感器DS18B20 组成的温度采集结点,然后设计与实现了由单总线 A/D
16、 转换器 DS2438 与湿度传感器HIH3610 构成的湿度采集结点,该湿度采集结点同样遵守单总线协议。最后介绍了单总线系统。3.1 温度传感器电路设计系统中温度测试点的数据采集DS18B20型单线智能温度传感器,属于新一代适配微处理器的智能温度传感器,可广泛用于工业、民用、军事等领域的温度测量及控制仪器、测控系统和大型设备中。它具有体积小,接口方便,传输距离远等特点。 3.1.1 DS18B20功能特点(1)独特的单线接口方式,只需一个接口引脚即可通信;(2)每一个 DS18B20 都有一个唯一的 64 位 ROM 序列码;(3)在使用中不需要任何外围元件;(4)可用数据线供电,电压范围:
17、+3.0V+5.5 V;(5)测温范围:-55 +125 ,在-10+85范围内精度为0.5,分辨率 0.0625。等效的华氏温度范围是-67F+257F;(6)通过编程可实现 912 位的数字读数方式。温度转换成 12 位数字信号所需时间最长为 750ms,而在 9 位分辩模式工作时仅需 93.75ms;(7)用户可自设定非易失性的报警上下限值;(8)告警搜索命令可识别和定位那些超过报警限值的 DS18B20;(9)支持多点组网功能,多个 DS18B20 可以并联在惟一的三线上,实现多点测温。(10)电源极性接反时,DS18B20 不会因发热而烧毁,但不能正常工作。3.1.2 DS18B20
18、内部结构DS18B20 采用 3 引脚 TO92 小体积封装,其内部结构和管脚排列如图3-1 所示,主要由 4 部分组成:64 位 ROM 序列码、温度传感器、非易失性的温度报警触发器 TH 和 TL、配置寄存器。图3.1(a)DS18B20的内部结构图3.1(b)DS18B20的管脚排列 3.1.3 DS18B20工作原理 根据DS18B20的通讯协议,主机(单片机)控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位操作,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然
19、后释放,当DS18B20收到信号后等待1660微秒左右,后发出60240微秒的存在低脉冲,主CPU收到此信号表示复位成功。 当 DS18B20 接收到温度转换命令后,开始启动转换。转换完成后的温度值以 16 位带符号扩展的二进制补码形式存储在高速暂存存储器的第 0,1 字节。主机可通过单线接口读到该数据。DS18B20测温原理如图3.2所示。图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在55所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进
20、行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图2.2中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。图3.2 DS18B20测温原理图3.1.4 DS18B20供电方式外部电源供电方式是DS18B20最佳的工作方式,工作稳定可靠,抗干扰能力强,而且电路也比较简单,可以开发出稳定可靠的多点温度监控系统。这种方法的优点是在 DQ 线上不要求强的上拉,总线上主机不需要连接其它的
21、外围器件便在温度变换期间使总线保持高电平,这样也允许在变换期间其它数据在单总线上传送。图3.3 外部电源工作方式此外,在单总线上可以并联多个 DS18B20,而且如果它们全部采用外部电源工作方式,那么通过发出相应的命令便可以同时完成温度变换。如图3.4所示。图3.4 外部供电方式的多点测温电路图3.2 湿度传感器电路设计3.2.1湿度传感器HIH3610功能简介该系统的湿度检测采用了美国 Honeywell 公司生产的相对湿度传感器 HIH3610。HIH3610 的管脚排列如图3.5所示,三管脚的外部结构使得其应用起来非常方便。其线性的电压输出可使器件直接与控制器或其它器件相连,驱动电流小使
22、它适合于电池供电,用DS2438检测电池的电量和湿度的AD转换。图3.5 HIH3610 的管脚排列3.2.2智能电池监视器 DS2438DS2438是为了解决便携式电子产品电池工作状态的实时监测而推出的,并且可以测量环境温度,实现电源电压的校正及环境温度补偿。采用 SOIC 表面贴装封装形式,其外形及引脚排列如图3.6所示。图3.6 DS2438 的外形及管脚排列图DS2438主要由单总线接口、电压 A/D 转换器、电流 A/D转换器、温度传感器、时钟电路、40 字节的 EEPROM 及与上述硬件相关的寄存器组成。其中的电压 A/D 转换器的输入,可编程为由 VDD 电源端输入或 VAD 输
23、入端输入,以满足VDD 电源端及外部输入模拟量 VAD 的测量要求。DS2438 的存储空间分为8页,页地址为 0007H,每页 8 个字节,共 64 个字节,每一页都有对应的高速暂存页,因此存储器包括 RAM 高速暂存器和 SRAM/EEPROM两部分,这两部分是镜像关系。高速暂存器可确保在用单总线通讯时数据能够保持一致性,主机对 DS2438 进行数据读/写时只能对高速暂存器进行操作。存储空间内包括一些特殊功能寄存器和用户可使用的存储单元。(1)DS2438与传感器接口本设计中利用DS2438来同时完成对环境温度的测量、单总线电源电压的测量及湿度传感器输出电压值的测量。由图3.9可知,电源
24、电路由VD1、VD2及电容C1构成。在总线空闲时为DS2438和HIH3610供电。DS2438的5脚VDD端的电位即是HIH3610的电源电压。通过编程DS2438内部的状态/结构寄存器的“AD”位,使二通道电压A/D转换器的输入选择为VDD端,可完成HIH3610电源电压测量功能。通过编程状态/结构寄存器的“AD”位,使二通道电压A/D转换器的输入选择为VAD端,即HIH3610的湿度电压值输出端可完成湿度值测量功能,环境温度的测量可由DS2438内部的温度传感器完成,因此,使用1片DS2438即可完成湿度值的A/D转换,环境温度的测量和电池电压的测量工作。(2)电池电压、温度的测量及剩余
25、电量的监测由于DS2438内部有A/D转换器和数字温度传感器,要获得电池的电压、温度只需要由单片机对DS2438发出采集电压、温度的控制命令,然后等待其采集完毕并自动将电压、温度测量值存入相对应的寄存器后,再由单片机读取寄存器的内容即可。在读取寄存器值时,若单片机与DS2438之间的数据线为低电平,则表明DS2438正在进行电压、温度转换,此时不能读取数据,只有当数据线为高电平时,才能正确的读取数据。电池的剩余电量可用电流积分累加(ICA)寄存器的值求得。ICA寄存器的值是由DS2438定时自动测量电池电流后更改的,无需对其进行控制,只需单片机读出ICA寄存器的值,然后将读出的值代入公式(3-
26、1),便可得到电池的剩余电量。 剩余电量=ICA/(2048RSENS) 其中RSENS的单位为 。 (3-1)(3)DS2438功能的软件实现为了满足监测的实时性,本系统单片机采用定时中断的方式访问DS2438,进行电池参数采集。中断服务程序流程如图3.7所示。图3.7 中断服务程序流程图首先设置单片机的计数器为定时方式,开启计数器,定时长短可随需要灵活设定。然后单片机运行其它程序,等待定时中断的到来。定时中断发生之后进入中断服务程序,调用DS2438的控制操作程序,进行数据采集,并将采集来的数据进行处理,最后重新初始化定时中断,返回。DS2438与单片机进行数据通讯时仅用一根数据线,因此必
27、须严格按照芯片的读写时序要求来编写程序,这样才能保证数据的正确读写。(4)湿度数据的温度补偿如图 3.9所示,由 HIH3610 输出的线性模拟电压信号作为 DS2438 电压 A/D 转换的输入信号,通过对 DS2438 发送电压转换命令,该模拟电压信号对应的数字信息便存储在 DS2438 的电压寄存器中,主机再发送读暂存存储器命令即可以从单总线上将数字电压信息读回。器件 HIH3610 的电压输出对应湿度的通用关系为:Vout=Vsupply0.0062(sensorRH)+0.16 (3-2)其中:Vout是从 DS2438 DQ 端测得的电压值,Vsupply是实测供电电压值,sens
28、orRH 是环境温度在 25时的相对湿度。相对湿度图3.8 HIH3610 输出电压与相对湿度的关系曲线如图3.8,HIH3610 输出电压与相对湿度的关系曲线所示,HIH3610 测量的湿度值还与环境温度有关,故应进行温度补偿,温度补偿关系为:RH=(sensorRH)/(1.0546-0.00216T) (3-3)其中:RH 为经过温度补偿的湿度值,T 为实际环境温度值(摄氏度)。因此为获得准确的湿度测量值,还应在湿度测量的同时测量环境温度和供电电压值。3.2.3单总线数字湿度传感器外围电路设计由于系统中采用的 HIH3610 湿度传感器,其输出量仍然是模拟电压量,因此在本系统的设计过程中
29、为了实现全数字化的单总线网络,使用 DALLAS 公司单总线器件 DS2438配合 HIH3610 设计一种单总线湿度传感器,使之可以直接挂接到单总线上。挂在单总线上的器件必须满足以下几方面的要求:低功耗:单总线网络中的器件一般是从总线上窃取电源,不用本地电源供电,因此要求单总线器件必须满足低功耗的特性。具有唯一的身份码:单总线是通过身份码来识别挂在同一总线上的不同器件的,因此要求每个单总线器件均具有全球唯一的 64 位 ROM 识别码。必须满足单总线器件的时序要求。Dallas 公司生产的 DS2438 满足上述要求。利用 DS2438 的 A/D 转换功能,设计出的单总线数字湿度传感器的原
30、理图如图3.9所示。图3.9 单总线湿度传感器原理图由 HIH3610 输出的线性模拟电压信号作为 DS2438 电压 A/D 转换的输入信号,通过对 DS2438 发送电压转换命令,该模拟电压信号对应的数字信息便存储在 DS2438 的电压寄存器中,主机再发送读暂存存储器命令即可以从单总线上将数字电压信息读回。实际应用过程中在 HIH3610 的VOUT 和 DS2438 的 VAD 之间加一个运算放大器 LM358,该芯片在这里起电压跟随的作用。3.3 单总线系统单总线(1-wire)技术是近年来由美国 Dallas 半导体公司研发的一种总线技术。与 SPI、I2C 等多种标准串行数据通信
31、方式不同,它采用单根信号线传输时钟和数据,以其具有的节约 I/O 资源、结构简单、成本低廉、便于总线扩展和维护等优点越来越多的被广泛应用于民用电器、工业控制领域。单总线适用于单个主机(master)控制一个或多个从机(slave)设备的系统。当只有一个从机设备时,系统可按单节点系统操作,当有多个从机设备时,系统可按多节点系统操作。其中主机可以是微控制器,从机为单总线器件。在 Dallas 的产品中,这类单总线器件有温度传感器 、一线存储器、A/D 转换器、可寻址开关等。与其它如并行、串行及专用总线相比,单总线突出的特点是主机控制器件的地址线、数据线和控制线合成为一条信号线与从机设备进行双向的数
32、据交换。所以在有多路多个测控对象时,系统的布线简单、方便。但是较小的硬件开销需要相对复杂的软件设计进行补偿。本数据采集系统即为单总线系统,系统中的主机为单片机,从机为单总线器件。3.3.1单总线协议经过单线接口访问单总线器件有严格的单总线命令序列如下:1)初始化2)ROM 操作命令3)存储器操作命令(功能命令)4)数据传输每次访问单总线器件,都必须严格遵守这个命令序列。如果出现序列混乱,则单总线器件不会响应主机。初始化:基于单总线的所有传输过程都是以初始化开始的,初始化过程由主机发出的复位脉冲和从机响应的应答脉冲组成。应答脉冲使主机知道总线上有从机设备且准备就绪。ROM 命令:当主机检测到应答
33、脉冲后,就可以发出 ROM 命令。这些命令与各个从机设备的唯一 64 位 ROM 序列码相关,当单总线上连接多个从机设备时,允许主机指定操作某个从机设备。这些命令还使得主机可以检测到总线上有多少个从机设备及其设备类型,或者有没有设备处于报警状态。从机设备可能支持五种 ROM 命令(实际情况与单总线器件型号有关),每种命令长度为 8 位,主机在发出功能命令之前,必须送出合适的ROM 命令。存储器操作命令(功能命令):通过 ROM 操作命令使得总线主机与总线上某些或某一从机设备确定了通信关系之后,主机发出的命令可以驱动从机设备进行相应的动作,当需要进行数据的传输时,从机设备会把主机要求的信息以串行
34、传输的方式送到单总线上。所有的单总线器件要求采用严格的通信协议来确保数据的完整性。其协议中规定的信号类别有:复位脉冲,应答脉冲、写 0、写 1、读 0 和读 1。所有这些信号,除了应答脉冲之外,均由总线主机产生。并且发送所有的命令和数据都是字节的低位在前。该系统中,使用晶振为 11.0592MHz。第四章 温湿度数据采集电路设计本章首先介绍了温湿度数据采集器的硬件结构与程序设计流程,然后描述了RS232/RS485 转换电路的硬件设计与软件设计。4.1 AT89C52单片机系统控制电路部分采用AT89C52完成,AT89C52是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,内含8k
35、 bytes的可反复擦写的只读程序存储器和256 bytes 的随机存储数据存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,与标准MCS-51指令系统及8052产品兼容,片内置通用8位中央处理器和Flash存储单元,功能强大AT89C52单片机适合于许多较为复杂控制应用场合。AT89C52提供以下标准功能:8k字节Flash闪速存储器,256字节内部RAM,32个I/O口线,3个16位定时/计数器,一个6向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C52可进行静态逻辑操作,并支持两种软件。可选的节电工作模式。4.2 数据采集器的结构与电路设计本系统
36、中,温湿度数据采集器主要完成以下的工作:接收上位机通过 RS485总线下传的命令,这些命令包括:通信通道校验命令,搜索底层单总线传感器件序列码命令,启动传感器进行温、湿度数据转换命令,上传数据命令。所有的命令都需要采集器返回应答信号,以表明采集器的工作状态。采集器把上位机下传的命令通过单总线下传给温、湿度传感器,然后通过单总线接收传感器的温、湿度数据。采集器结构框图如图 4.1 所示。图 4.1 数据采集系统框图由图4.1 可以看出,数据采集器以单片机为核心,外围主要包括以下几个单元电路:单总线接口电路;采集器地址选择开关电路;光隔离的 RS485 总线接口电路;单总线器件地址存储电路。下面分
37、别介绍上述每个单元电路的功能及特点。4.2.1单总线接口电路根据单总线标准,单总线的作用距离一般可达 200 米,并允许挂接上百个单总线器件。本系统设计为每条单总线最多可接入 4 个单总线器件。图4.2二极管钳位电路数据采集器中单片机 AT89C52 P0 口的 8 条口线均作为单总线接口,这样每个采集器可接入 4832 个单总线器件,为了防止传感器在现场受到干扰脉冲,连接到 P0 口的每条单总线均有二极管钳位。4.2.2采集器地址选择开关电路图4.3 采集器地址选择开关电路本系统中可接入多个数据采集器,为了保证主机能够分别与各个采集器进行通信,必须为每个采集器设置一个地址,而且每个采集器的地
38、址编码在系统中都是唯一的。这个地址是通过采集器中 AT89C52 的 P2 口接入地址码开关设置的,采集器初始化时会读入该地址并保存在 RAM 中。地址选择开关电路如图 4.2 所示,其中给 P2 口外接的上拉电阻 R11 为 810 K。4.2.3 RS485 总线接口电路各个采集器能够连接到 RS485 总线网络上的前提是采集器上 RS485 总线接口电路的实现。该数据采集系统中使用的 RS485 总线驱动芯片为 SN75176。图4.4 RS485 总线接口电路SN75176 与主单片机 AT89C52 的连接如图 4.4 所示。其中,AT89C52 的串口输出与SN75176 的发送输
39、入端相连,它的串口输入与 SN75176 的接收输出端相连。AT89C52 的写控制信号与 SN75176 的发送使能端相连,低电平有效时完成发送数据,此时需要软件实现将 AT89C52 的写控制信号线拉至低电平。将 SN75176 的接收使能端直接接地,表示主单片机 AT89C52 始终处在可接收数据的状态。系统中考虑到来自 RS485 平衡传输线上的有效信号中有可能引入雷击、感应电等干扰信号,在 AT89C52 和 SN75176 之间采用了高速光偶 6N136。4.2.4单总线器件地址存储电路在单总线系统中,若想要对单总线器件实现存储器类操作并获得单总线器件的有效数据,前提是先要将该器件
40、的 64 位 ROM 放到总线上,然后在单总线网络的主机和从属器件之间形成一对一的关系,该从属器件在之后的时段里便可独自占用该总线,直到主机发送下一个脉冲到总线上。在该数据采集系统中,由于每个采集器上挂接了多个单总线器件,在对它们进行存储器类操作时,若每一次都先进行 ROM 搜索再将其依次放到单总线上,则会大大增加系统运行的时间开销。因此在该系统的开发过程中,考虑在每个采集器上扩展了一片 I2C总线的串行EEPROM AT24C04(容量为 512Byte),用于储存 DS18B20 和 DS2438 的 64 位 ROM地址码。这就是单总线器件地址存储电路。主单片机 AT89C52 在每一次
41、上电复位或者得到整个系统的主机发送的搜索地址的命令时,AT89C52 对 P0 的每个口按照搜索地址CRC 校验、地址存储的顺序依次可将连接到该采集器上所有单总线器件的 64 位 ROM 地址码存储到 AT24C04 中,这样即使掉电也不会造成地址数据的丢失。系统中规定 P0 口的每根口线上最多连接 4 个单总线器件时,每台采集器外围的 AT24C04 内部存储器被占用 328256 个字节的空间。当 AT89C52 需要访问 P0 口上的单总线器件时,便不必每次都进行器件地址的搜索,而是直接从 AT24C04 的内部存储器调回地址信息,从而节省了大量时间。4.3 数据采集系统的软件设计4.3
42、.1数据采集系统中对单总线器件的访问数据采集系统的主程序流程图4.5所示,数据采集器的主单片机 AT89C52 对连接到该采集器上的单总线器件涉及到的访问方式有 64 位 ROM 序列码的搜索和采集温湿度数据。其中主单片机对单总线器件 DS18B20 和 DS2438 进行 64位 ROM 序列码的搜索。系统中实现序列码搜索的子程序名为 GET_ADDR,每一次数据采集器上电复位或者主机发送进行序列码搜索的命令包时,主单片机调用该子程序。该流程图实现的是对某一口线上连接单总线器件的序列码搜索操作,主要可以分为三部分:搜索得到该口线所连接所有器件的序列码,并依次存储到单片机 60H7FH存储单元
43、,每个器件的序列码占 8 个字节;然后依次对该存储区域内 60H 单元开始每 8个字节进行 CRC 校验,校验正确的直接进入下一组 8 字节序列码的校验,否则将这 8 个字节的首单元数据置为 00H;4 个器件的序列码全部校验完之后,将这 32 个字节的数据存储到 AT24C04 中为该口线分配的空间。GET_ADDR 子程序中为每一口线都实现了以上三部分操作。主单片机获得某一口线所连接单总线器件的温度、湿度数据,其中在采集温度数据的子程序中发送快速搜索命令字节(CCH)的目的是要求所有连接到该口线的单总线器件均响应接下来的存储器操作类命令温度转换(44H)。当要读回某温度传感器的数据时,在发
44、送完匹配 ROM 命令之后,需要把该器件的 64 位序列码放到该口线上,之后该温度传感器获得与主单片机进行通信的权利,在主单片机发送完读 RAM 命令之后,该传感器即把 9 个字节的数据按照低位字节在前、低位比特在前的次序依次串行传送给主单片机。同样的操作也体现在采集湿度数据的子程序中,此外在湿度采集中主单片机发送的存储器类操作命令都是双字节命令,其中第二个字节是对 DS2438 哪一页存储器进行定位。由两个子程序的流程图可以看出,采集湿度数据的过程更复杂一些,主要原因是作为湿度单总线器件的访问对象 DS2438 自身具有较多的功能,硬件上比单一作用的温度传感器 DS18B20要复杂的多,想要
45、通过单总线来有效的访问 DS2438,必须增加软件上的开销。主单片机为单总线器件传送回来的温湿度数据保留的存储空间为 80HFFH,共 128个存储单元,其中为每一个传感器分配 4 个字节的存储空间。主单片机读回温度数据时对每一个 DS18B20 的 9 字节数据先暂存在 30H38H 单元,校验正确之后,将其中的第0,1 字节的温度数据存储到为其分配 4 字节空间的后两个字节,将其中的第 2,3 字节的编号信息存储到 4 字节空间的前两个字节。单片机读回湿度数据时,对每一个 DS2438的第 0 页数据及其 CRC 校验共 9 个字节的信息先暂存到 40H48H 单元,校验正确后,再读该 D
46、S2438 的第 7 页的第 0 个字节,即该 DS2438 的编号信息并将其存储到 47H 单元,然后将 40H48H 中的第 3,4 字节表示湿度的数字电压值存储到为其分配 4 字节空间的后两个字节,并在 4 字节空间的第 1 个字节直接写 80H,把 47H 单元的编号信息存储到第 2 个字节。图4.5主程序流程图4.4 RS232/RS485 转换器RS232 作为美国电子工业协会(EIA)正式公布的一种串行总线标准,用来实现计算机与计算机、计算机与外设之间的数据通讯,在异步串行通信中得到了广泛的应用。但是该标准规定驱动器允许有 2500pF 的电容负载,通信距离将受此电容的限制,另外
47、RS232 属于单端信号传送,存在共地噪声和不能抑制的共模干扰。因此 RS232 在通讯中所暴露的缺点为传输距离短,其最大的传输距离为 15 米。本系统中实现对各数据采集器进行统一管理与处理的主机,只有两个 RS232 串行接口,即 COM1 和 COM2,要实现主机与各个采集器构成的 RS485 总线网络的正常通信,需要一个性能可靠的 RS232 至 RS485 转换接口。这里面需要两组全双工串口,W77E58可以实现改功能。4.4.1 W77E58简介W77E58是与 MCS51 系列单片机兼容的可多次编程的快速微处理器,在它内部集成有 32K 的可重复编程的 FLASH ROM、256 字节的片内存储器、1K 的用 MOVX 指令访问的 SRAM、可编程的看门狗定时器、3 个 16 位定时器、2 个增强型的全双工串行口、片内 RC 振荡器、双 16 位数据指针等诸多功能。和 80C52 相比,W77E58 除了具有与 80C52 相同的全双工串口外,又增加了一个全双工串口,其外部引脚 RXD1、TXD1 和 P1.2、P1.3 复用。这两个串口除了具有同原有80C52 的串口相同的功能外,还增加了两个增强型的特点,即多机通信自动地址识别和自动帧错误检测功能。W77E58 新增加的功能都是用普通 80C52 所保留的特殊功能寄存器实现的,不与普通 80C5