远程数字采集系统的设计.docx
《远程数字采集系统的设计.docx》由会员分享,可在线阅读,更多相关《远程数字采集系统的设计.docx(47页珍藏版)》请在冰豆网上搜索。
远程数字采集系统的设计
1绪论
1.1远程数字采集系统的概述
远程数字采集系统是指,从传感器和其它待测设备等模拟和数字被测单元中自动采集信息的过程。
远程数据采集系统是结合基于计算机的测量软硬件产品来实现灵活的、用户自定义的测量系统,利用各种通信协议以达到远程采集的目的,采集的目标数据通常有温度或湿度等。
本毕业设计课题是远程数字采集系统的设计,利用单片机设计一远程数字采集系统,对远距离参数进行适时的采集,显示及传输。
本设计以采集温度数据为例子,需要收集相关资料,了解并掌握常见的温度数据采集方案,确定采集的方式和方法,显示采集温度数据并实现远距离传输。
制作出相应的硬件系统并完成软件的调试。
1.2课题要求
利用单片机的串行口设计一个通讯距离要求达到1500m以上的、具有显示功能的数字采集系统,来模拟工业上对数据采集系统的要求。
具体就是利用用温度传感器进行采集和转换为数字信号,利用单片机对传感器所输入的信号完成处理与显示,按照RS485通信协议将得到的数据传输给PC机并显示出来。
2系统设计方案
2.1系统设计方案论证
根据该课题的目标,在所学范围范围内可采取以下两种方案:
方案一:
首先用温度传感器DS18B20进行温度数据采集,该传感器传递的是数字信号,其内部集成有AD转换模块,其不加驱动,可传送距离为100米。
采用单片机作为控制核心,对温度数据进行采集处理等操作,选用AT89S51单片机。
设计中可直接将DS18B20的输出数据传递给单片机,省去AD转换等复杂电路。
所得的数字信号经单片机处理后由外接的液晶显示器进行实时显示。
采用RS485串口通信协议实现AT89S51单片机和PC机的通信。
方案二:
首先通过集成温度传感器AD590将温度值转换为电量输出,然后送入多路开关,再分时送入放大电路,经放大以后进入采样-保持器,再由数字转换电路实现模拟信号的数字化,所得的数字量经单片机89C51处理以后由外接的数码显示器对温度数值进行实时显示。
在按照RS485串口通信协议和RS232串口通信协议将所得数据传输给电脑,并实时显示出来。
2.2系统设计方案选择
为了设计简单更有效的实现所需功能,笔者选用第一种方案,在硬件电路更加简洁情况下实现了课题的目标。
对于远程数据采集部分,将在论文中体现。
本设计可以分为三大部分:
第一部分是硬件部分设计,其中包括三大模块:
分别为温度采集模块,温度显示模块和数据传输模块。
本文第二部分是软件部分的设计,主要是通过AT89S51单片机的控制来实现各部分模块的衔接,从而对温度采集系统总体思想的实现。
第三部分是系统的调试及总结。
3系统的硬件设计
3.1温度采集模块
3.1.1DS18B20温度传感器简介
DS18B20是“一线总线”数字化温度传感器,是DALLAS最新单线数字温度传感器,它支持“一线总线”接口,测量温度范围为-55°C~+125°C,在-10~+85°C范围内,精度为±0.5°C。
现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。
且适合于恶劣环境的现场温度测量,支持3V~5.5V的电压范围,使系统设计更灵活、方便。
另外其价格更低廉,体积更小。
DS18B20可以程序设定9~12位的分辨率,精度为±0.5°C。
可选更小的封装方式,更宽的电压适用范围。
分辨率设定,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。
DS18B20的性能是新一代产品中最好的!
性能价格比也非常出色!
继“一线总线”的早期产品后,DS18B20开辟了温度传感器技术的新概念。
DS18B20使电压、特性及封装有更多的选择,让我们可以构建适合自己的经济的测温系统。
DS18B20内部结构主要由四部分组成:
64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
DS18B20的管脚排列如图3.1所示:
图3.1DS18B20管脚图
DQ为数字信号输入/输出端;
GND为电源地;
VDD为外接供电电源输入端(在寄生电源接线方式时接地)。
DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:
用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。
这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。
例如+125℃的数字输出为07D0H,+25.0625℃的数字输出为0191H,-25.0625℃的数字输出为FF6FH,-55℃的数字输出为FC90H。
3.1.2温度采集模块设计
依据对DS18B20的介绍和了解,设计的温度采集模块如图3.2所示:
由于单总线为开漏所以外接一个4.7K的上拉电阻。
将DQ端接到单片机AT89S51的P2.7口。
图3.2温度采集模块
3.2数据显示模块
3.2.1AT89S51单片机介绍
AT89C51是美国ATMEL公司生产的低功耗,高性能CMOS8位单片机,片内含4K的可编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。
它集Flash程序存储器既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片机芯片中,ATMEL公司的功能强大,低价位AT89S51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。
AT89S51具有如下特点:
40个引脚,4kBytesFlash片内程序存储器,128bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
在本设计中,最核心的器件是AT89S51。
AT89S51单片机基本结构示意图如图3.3所示:
图3.3AT89S51单片机基本结构示意
3.2.2液晶显示器介绍
显示部分在本设计中是作为一个信息指使部分是很重要的,本论文中使用LCD作为显示部分,因为它与数码管比较起来更具有整体性和连贯性。
LCD的应用很广泛,简单如手表上的液晶显示屏,仪表仪器上的液晶显示器或者是电脑笔记本上的液晶显示器,都使用了LCD。
在一般的办公设备上也很常见,如传真机,复印机,以及一些娱乐器材玩具等也常常见到LCD的足迹。
本本所涉及的LCD为字符型点阵式LCD模块(liquidCrystalDisplayModule)简称LCM,或者是字符型LCD。
字符型液晶显示模块是一种专门用于显示字母,数字,符号等的点阵式液晶显示模块。
在显示器件上的电极图型设计,它是由若干个5*7或5*11等点阵符位组成。
每一个点阵字符位都可以显示一个字符。
点阵字符位之间有一空点距的间隔起到了字符间距和行距的作用。
目前市面上常用的有16字*1行,16字*2行,20字*2行和40字*2行等的字符模块组。
这些LCM虽然显示字数各不相同,但是都具有相同的输入输出界面。
本设计中使用的是1602LCD,属第二种模块组。
3.2.3温度显示模块设计
将AT89S51和1602按封转相接,其中数据接受的I/O口接单片机的P0口,RS、RW、E分别接单片机的P2.0、P2.1、P2.2口,滑动变阻器R6作为电位器是用来调节液晶显示的对比度的。
温度显示模块设计如图3.4所示:
图3.4数据显示模块
3.4数据传输模块
3.4.1MAX485芯片介绍
MAX485芯片采用单一电源+5V工作,额定电流为300μA,采用半双工通讯方式。
它完成将TTL电平转换为RS-485电平的功能。
MAX485芯片的结构和引脚都非常简单,内部含有一个驱动器和接收器。
RO和DI端分别为接收器的输出和驱动器的输入端,与单片机连接时只需分别与单片机的RXD和TXD相连即可;/RE和DE端分别为接收和发送的使能端,当/RE为逻辑0时,器件处于接收状态;当DE为逻辑1时,器件处于发送状态,因为MAX485工作在半双工状态,所以只需用单片机的一个管脚控制这两个引脚即可;A端和B端分别为接收和发送的差分信号端,当A引脚的电平高于B时,代表发送的数据为1;当A的电平低于B端时,代表发送的数据为0。
在与单片机连接时接线非常简单。
只需要一个信号控制MAX485的接收和发送即可。
同时将A和B端之间加匹配电阻,一般可选100Ω的电阻。
MAX485芯片引脚图如图3.5所示。
图3.5MAX485芯片引脚图
3.4.2串行通信
串口通信的概念
串行通信是指通信的发送方和接收方之间数据信息的传输是在单根数据线上,以每次一个二进制的0、1为最小单位逐位进行传输,如图3.6所示。
图3.6串行通信
串行数据传送的特点是:
数据传送按位顺序进行,最少只需要一根传输线即可完成,节省传输线。
与并行通信相比,串行通信还有较为显著的优点,传输距离长,可以从几米到几千米。
在长距离内串行数据传送速率会比并行数据传送速率快,串行通信的通信时钟频率容易提高,串行通信的抗干扰能力十分强,其信号间的互相干扰完全可以忽略。
但是串行通信传送速率比并行通信慢得多,并行通信时间为T,则串行时间为NT。
串行通信工作模式
通过单线传输信息是串行数据通信的基础。
数据通常是在两个站(点对点)之间进行传送,按照数据流的方向可分成3种传送模式:
单工、半双工、全双工。
单工形式:
早期的电流环
单工形式的数据传送是单向的。
通信双方中,一方固定为发送端,另一方则固定为接收端。
信息只能沿一个方向传送,使用一根传输线,如图3.7所示。
图3.7单工形式
单工形式一般用在只向一个方向传送数据的场合。
如计算机与打印机之间的通信是单工形式,因为只有计算机向打印机传送数据,而没有相反的数据传送。
还有在某些通信信道中,如单工无线发送等。
半双工形式:
RS-485
半双工通信使用同一根传输线,即可发送数据又可接收数据,但不能同时发送和接收。
在任何时刻只能由其中的一方发送数据,另一方接收数据。
因此半双工形式即可以使用一条数据线,也可以使用两条数据线,如图3.8所示。
图3.8半双工形式
半双工通信中每端需有一个收/发切换电子开关,通过切换来决定数据向哪个方向传输。
因为有切换,所以会产生时间延迟,信息传输效率低些。
但是对于像打印机这样单方向传输的外围设备,用半双工方式就能满足要求了,不必采用全双工方式,可省一根传输线。
波仕电子的RS-232/RS-485转换器使用了独特的零延时自动收发转换技术,直接从RS-485信号中用硬件方法提取收发切换控制信号,并且具备零延时的性能。
零延时指收发切换过程转变时间为0,在使用时与RS-232通信一样。
全双工形式:
RS-232、RS-422
全双工数据通信分别由两根可以在两个不同的站点同时发送和接收的传输线进行传送,通信双方都能在同一时刻进行发送和接收操作,如图3.9所示。
图3.9全双工形式
在全双工方式中,每一端都有发送器和接收器,有两条传送线,可在交互式应用和远程监控系统中使用,信息传输效率较高。
握手信号
握手信号实际上是控制信号,用来控制数据的传送。
通过握手信号,发送方可以通知接收方是否有数据要发送。
接收方通过握手信号通知发送方它是否已经准备好了接收信号。
握手信号遵循某种协议。
当发送方和接收方处理数据的不一样时,可能会造成数据丢失。
在传输中,如果发送方的发送速度大于接收方的接收速度,同时接收方处理数据的速度不够快的话,那么接收端的缓冲区必定在一定时间后溢出,从而造成以后发送过来的数据不能进入缓冲区而丢失。
发送方何时可以继续发送数据,何时必须暂停发送,从而让接收方有时间处理数据,称为流量控制,必须靠握手信号来解决这个问题。
例如,打印机和计算机进行通信时,一些打印机打印速度可能跟不上计算机发送数据的速度,就必须要通过握手信号通知计算机暂停发送数据。
硬件握手
在硬件握手中,发送方通过将某一个导线拉到高电平或者低电平。
来表示发送方可以发送数据。
接收方已经准备好接收数据之后,也把某一个导线拉到高电平或者是低电平,来通知发送方,发送方一直在检测这个信号。
接收方可以在任何时候把这个信号变为无效,甚至是在接受一个数据块过程中。
当发送方检测到这个信号变为无效之后,就必须停止本次发送,直到这个信号变为有效。
软件握手
在软件握手中,以数据线上的数据信号来代替实际的硬件电路。
这种方法用在直接连接或者通过调制解调器连接的两台计算机之间进行双向通信的场合。
对于软件握手现在已经建立了一些标准协议,其中最常用的是通信协议。
通信协议是指通信双方的一种约定,包括对数据格式、同步方式、传送速度、传送步骤、检纠错方式以及控制字符定义等问题作出统一规定,通信双方必须共同遵守,也叫做通信控制规程或称传输控制规程,它属于OSI七层参考模型中的数据链路层。
自动握手
波仕电子的RS-232/RS-485转换器使用了独特的零延时自动收发转换技术。
RS-485为半双工通信,收与发不能同时进行,需要进行收与发的切换。
一般这需要使用RS-232的一根握手信号线并在软件上进行控制。
波仕电子的RS-232/RS-485转换器则省去了这根握手信号线,直接从RS-485信号中用硬件方法提取这个控制信号,并且具备零延时的性能。
零延时指收发切换过程转变时间为0,在使用时与RS-232通信一样。
通信参数
串行端口的通信方式是将字节拆分成一个接着一个的位再传送出去。
接到此电位信号的一方再将此一个一个的位组合成原来的字节,如此形成一个字节的完整传送。
在传输进行的过程中,双方明确传送信息的具体方式,否则双方就没有一套共同的译码方式,从而无法了解对方所传过来的信息的意义。
因此双方为了进行通信,必须遵守一定的通信规则,这个共同的规则就是通信端口的初始化。
通信端口的初始化必须对以下几项参数进行设置。
数据的传输速度
串行通信的传输受到通信双方配备性能及通信线路的特性所左右,收、发双方必须按照同样的速率进行串行通信,即收、发双方采用同样的数据传输率。
数据传输率批量的是串行通信中每一秒所传送的数据位数,单位是bit/s。
经常可以看到食品或MODEM的规格书上都写着19200bit/s、38400bit/s,所指的就是数据传输率。
就仪器或工业场合来说,4800bit/s、9600bit/s是最常见的数据传输率,现在的个人计算机所提供的串行端口的数据传输率都可达到115200bit/s(甚至有921600bit/s),若传输距离较近而设备也提供时,使用最高的数据传输率也可以。
例如,在某异步串行通信中,每传送一个字符需要8位,如果采用数据传输率4800bit/s进行传送,则每秒可以传送600个字符。
数据的传送单位
一般串行通信端口所传送的数据是字符型,若用来传输文件,则会使用二进制的数据类型。
当使用字符型时,工业界使用到的有ASCII字符码及JIS字符码;ASCII使用了8位形成一个字符,而JIS码则以7位形成一个字符。
欧美的设备多使用8位的字节,而日本的设备多使用7位为一个字节。
以实际的RS-232传输上看来,由于工业界常使用的PLC大多只是传送文字码,因此只要7位就可以将ASCII的0~127码表达出来(2=128,共有128种组合方式),所有的可见字符也落在此范围内,所以只要7个数据位就够了。
不同的情形下(依据使用的协议),会使用到不同的传送单位。
使用多少位合成一个字节必须先行确定。
起始位与停止位
由于异步串行传输中并没有使用同步脉冲作基准,故接收端完全不知道传送端何时将进行数据的传送。
发送端准备要开始传送数据时,发送端会在所送出的字符前后分别加上高电位的起始位(逻辑0)及低电位的停止位(逻辑1),它们分别是所谓的起始位和停止位。
也就是说,当传送端要开始传送数据时,便将传输线上的电位由低电位提升至高电位;而当传送结束后,再将电位降至低电位。
接收端会因起始位的触发(因电压由低电位升至高电位)而开始接收数据,并因停止位的通知(因电压维持在低电位)而明确数据的字符信号已经结束,当加入了起始位及停止位才比较容易达到多字符的接收能力。
起始位固定为1位,而停止位则有1、1.5、2位等多种选择,如何选择呢?
只要通信双方协议通过即可,没有强制规定。
4、校验位
为了预防错误的发生,使用校验位作为检查的机制。
校验位即是用来检查所传送数据的正确性的一种核对码,这之中又分成奇校验与偶校验两种,分别是检查字符码中1数目是奇数或偶数。
以偶校验为例,“A”的ASCII码是41H(16进制),将它以二进制表示时,是01000001其中1的数目是2,因此校验位便是0,使1的数目保持偶数;同样,校验位是奇校验时,“A”的校验位便是1,使1的数目保持在奇数。
接收者重新计算奇偶校验位,如果新的计算值正确,那么表示正常。
如果新的计算值错误,那么接收端就会收到一些指示,表示此次接收的数据有误。
常见的通信协议
RS232通信协议
RS-232主要用来定义计算机系统的一些数据终端设备(DTE)和数据电路终接设备(DCE)之间的电气性能。
例如CRT、打印机与CPU的通信大都采用RS-232接口,MCS-51单片机与PC机的通信也是采用该种类型的接口。
由于AT89S51单片机本身有一个全双工的串行接口,因此该单片机用RS-232C串行接口总线非常方便。
RS-232C串行接口总线适用于:
设备之间的通信距离不大于15米,传输速率最大为20kB/s。
由于RS-232C规定了自己的电气标准,由于它是在TTL电路之前研制的,所以它的电平不是+5V和地,而是采用负逻辑,即:
逻辑“0”:
+5V~+15V
逻辑“1”:
-5V~-15V
因此,RS-232C不能和TTL电平直接相连,使用时必须进行电平转换,否则将使TTL电路烧坏。
RS232端口是标准的DB9孔座,引脚定义符合RS232规范。
采用的是三线连接。
RS485通信协议
针对RS-232芯片的接口的信号电平值较高、易损坏接口电路、传输速率较低、传输距离有限等不足,于是出现RS-485接口标准。
RS-485标准是由两个行业协会共同制订和开发的,即EIA—电子工业协会和TIA—通讯工业协会。
EIA曾经在它所有标准前面加上RS前缀英文Rcommendedstandard的缩写,因此许多工程师一直延用这种名称。
RS485具有以下特点:
.RS-485的电气特性:
逻辑“1”以两线间的电压差为+(2—6)V表示;逻辑
“0”以两线间的电压差为-(2—6)V表示。
接口信号电平比RS-232降低了,就不易损坏接口电路的芯片,且该电平与TTL电平兼容,可方便与TTL电路连接。
.RS-485的数据最高传输速率为10Mbps。
.RS-485接口是采用平衡驱动器和差分接收器的组合,抗共模干能力增强,即抗噪声干扰性好。
.RS-485接口的最大传输距离标准值为4000英尺,即1219米,RS-485总线一般最大支持32个节点,如果使用特制的485芯片,可以达到128个或者256个节点,最大的可以支持到400个节点。
即具有多站能力,这样用户可以利用单一的RS-485接口方便地建立起设备网络。
虽然RS485相对RS232有很多优点,但其自身还有一些不足:
.RS485总线的通讯容量较少,理论上最多仅容许接入32个设备,不适于楼宇为结点的多用户容量要求。
.RS485总线的通讯速率低,常用波特率为9600bps。
而且其速率与通讯距离有直接关系,当达到数百米以上通讯距离时,其可靠通讯速率<1200bps。
.RS485芯片功耗较大,静态功耗达到2-3mA,工作电流(发送)达到20mA,若加上电阻及终端电阻,工作电流会更大。
增加了线路电压降,不利于远程布线。
.RS485总线构成的网络只能以串行布线,不能构成星形等任意分支。
串行布线对于小区实际布线设计及施工造成很大难度,不遵循串行布线规则又将大大降低通讯的稳定性。
.RS485总线自身的电气性能决定了其在实际工程应用中稳定性较差,在多节点、长距离场合需对网络进行阻抗匹配等调试,增添工程复杂性。
.RS485总线通常不带隔离,当网络上某一节点出现故障会导致系统整体或局部的瘫痪,而且又难以判断其故障位置。
.RS485总线长距离传输(1200米以上)时一般暴露于户外,极易因为雷击等原因引入过电压。
RS485收发器工作电压较低(5V左右),其本身耐压也非常低(-7V~+12V),一旦过压引入,就会击穿损坏。
通信节点受损后无恢复,因此必须采取多种措施加以保护。
3.4.3数据传输模块设计
数据传输模块硬件接口电路如图3.10所示。
图3.10数据传输模块
先选用其中一路发送/接收。
R1OUT接AT89S51单片机的RXD,T1IN接AT89S51的TXD。
T1OUT接PC机的RD,R1IN接PC机的TD。
因为MAX485具有驱动能力,所以不需要外加驱动电路。
4系统的软件设计
软件部分主要是用所编写的语言程序来配合相应的硬件电路,控制所设计电路实现所预期功能的部分。
AT89S51单片机的程序可以使用C语言,也可以使用汇编语言,或者是两者的结合,本设计使用汇编语言编写程序实现出租车计价器的各部分功能。
4.1总程序流程图
在本设计中,硬件所应用的都是集成的较简单的器件,节约了成本和简化了电路,因此这就给程序设计增加了要求。
在以AT89S51单片机为核心的总体设计中,除了各个模块之间的电气连接外,就是要靠程序来实现对它们的协调工作了。
程序在其中起到了灵魂的作用。
本设计的主流程图如图4.1所示。
开始
设置内存空间
初始化
采集温度
将数据传送给单片机
处理数据
送显示
将数据送入串口发送
结束
图4.1主流程图
主程序如下所示:
ORG0000H
\\单片机内存分配申明!
\\
TEMPER_LEQU29H;用于保存读出温度的低8位
TEMPER_HEQU28H;用于保存读出温度的高8位
FLAG1EQU38H;是否检测到DS18B20标志位
RSEQUP2.0
RWEQUP2.1
EEQUP2.2
COUNTEQU32H
A_BITEQU20H;个位数存放内存位置
B_BITEQU21H;十位数存放内存位置
TEMPEQU50H
MAIN:
LCALLDISPLAY1
START:
LCALLGET_TEMPER;调用读温度子程序
\\进行温度显示,显示范围00到99度,显示精度为1度。
因为12位转化时每一位的精度为0.0625度,我们不要求显示小数所以可以抛弃29H的低4位,将28H中的低4位移入29H中的高4位,这样获得一个新字节,这个字节就是实际测量获得的温度\\
MOVA,29H
MOVC,40H;将28H中的最低位移入C
RRCA
MOVC,41H
RRCA
MOVC,42H
RRCA
MOVC,43H
RRCA
MOV29H,A
LCALLDISPLAY2;调用显示子程序
AJMPSTART
4.2各模块程序设计
4.2.1温度采集模块
因为DS18B