武汉理工大学《计算机控制技术》课程设计说明书1摘要数据采集系统,是用计算机控制的多路数据自动检测或巡回检测,并且能够对数据实行存储、处理、分析计算以及从检测的数据中提取可用的信息,供显示、记录、打印或描绘的系统。本课程设计对数据采集系统作了基本的研究。本系统主要解决的是采集10路模拟量(10位精度),20路开关量,采集的数据每隔1毫秒,通过串行通讯方式RS485向一台工控机传送的实现方法。关键字:数据采集、A/D转换、模拟量。数字量、串行通信武汉理工大学《计算机控制技术》课程设计说明书2数据采集系统的设计1设计内容及要求设计一个数据采集系统,系统要采集10路模拟量(10位精度),20路开关量,采集的数据每隔1毫秒,通过串行通讯方式RS485向一台工控机传送。要求:①选择合适的芯片;②设计原理电路(包含译码电路);③编制数据采集的程序段;④编制数据通信程序段;⑤撰写设计说明书。2数据采集系统原理及实现方案本课设是设计一个数据采集系统,系统要采集10路模拟量(10位精度),20路开关量,采集的数据每隔1毫秒,通过串行通讯方式RS485向一台工控机传送。数据采集与传输系统一般由信号调理电路,多路开关,采样保持电路,A/D,单片机,电平转换接口,接收端(单片机、PC或其它设备)组成。硬件设计应用电子设计自动化工具,数据采集原理图如图1所示:图1数据采集原理图由原理图可知,此设计主要分三大部分:模拟量的输入采集,数字量的输入采集,从机向主机的串行通信。信号采集分析:采集多路模拟信号时,A/D转换器前端需加采样/保持(S/H)电路。待测量一般不能直接被转换成数字量,通常要进行放大、特性补偿、滤波10路模拟量A./D转换MCU工控机20路数字量RS485I/O扩展武汉理工大学《计算机控制技术》课程设计说明书3等环节的预处理。被测信号往往因为幅值较小,而且可能还含有多余的高频分量等原因,不能直接送给A/D转换器,需对其进行必要的处理,即信号调理。如对信号进行放大、衰减、滤波等。本题设计要求简单,模拟量和数字量直接给出,故信号采集部分可忽略,而将数据输出直接连接至A/D转换器输入端。模拟量的采集:A/D转换器的选取应考虑:(1)转换时间的选择:转换速度是指完成一次A/D转换所需时间的倒数,是一个很重要的指标。A/D转换器型号不同,转换速度差别很大。由于本系统的控制时间无具体要求,故可不予考虑,但至少要小于题目要求的1ms,这是可以达到的。(2)AD位数的选择:A/D转换器的位数决定着信号采集的精度和分辨率。要求精度为10位。输入为0~5V时,分辨率为0049.01251210NFVV设计要求10位精度的10路模拟量,通过查阅资料,TLC1543芯片满足要求。TLC1543是一种开关电容结构的逐次逼近式A/D转换器,片内提供转换时钟,12位或8位串行数据输出。可采集11路模拟输入电压,由片内多路开关选通,并采样保持。数字量的采集:设计中要求是20路数字量,可利用单片机的I/O口直接采集,但需要20个I/O口与之对应,这样,就浪费了芯片的管脚资源,可采用并行采集、串行输出的办法,进行I/O口扩展。传输方式分析:通过串行通讯方式RS485向工控机传送。武汉理工大学《计算机控制技术》课程设计说明书43系统硬件设计3.1模拟量的输入采集设计模拟电压量的输入需要经过A/D转换才能进行采集,此设计要求10路模拟量的10位精度A/D转换,可采用芯片TLC1543。3.1.1TLC1543功能介绍A/D采样模块采用TLCl543。TLC1543具有以下特点:10位精度、11通道、三种内建的自测模式、提供EOC(转换完成)信号等,串行输出,内部时钟,转换时间21μS,线性度±1.0LSB,该芯片与单片机的接口采用串行接口方式,引线很少,与单片机连接简单TLC1543的控制端CS、I/OCLOCK、ADDRESS和数据输出端DATAOUT遵循串行外设接口SPI协议。TLC1543和微处理器的串行接口之间可通过一个4线接口高速传输数据。图2是TLC1543的引脚示意图:TLC1543为20脚封装的CMOS10位开关电容逐次A/D逼近模数转换器封装和时序图如图2所示A0~A10为11路模拟输入端,图2TLC1543管脚图REF+和REF-为基准电压正负端,ADDRESS为串行数据输入端用于输入4位端口地址,DATAOUT为A/D数据输出端,I/OCLOCK为数据输入输出提供同步时钟,芯片内部有一个14通道多路选择器,可以选择11路模拟输入通道和3路内部自测电压中的任意一路进行测试,片内设有采样-保持电路。在转换结束时EOC置高,表明转换完成。TLC1543具有高速转换时间,高精度10位分辨率,最大1LSB不可调整误差和低噪声的特点。当EOC为高时将CS置低A/D开始工作,由ADDRESS端送入4位地址的最高位B3在B3有效期间输入一个I/OCLOCK信号,将地址最高位移入A/D地址寄存器,武汉理工大学《计算机控制技术》课程设计说明书5同时从DATAOUT端口读出前一次采样转换的10位数据的最高位A9,然后送入B2,同时输入一个I/OCLOCK信号,将B2移入A/D地址寄存器,从DATAOUT读出A8,按此时序进行直到将4位地址送入A/D,同时读出前一次采样转换结果的A9、A8、A7、A6高四位,然后输入6个I/OCLOCK信号,将A5~A0读出,10个I/OCLOCK信号后,EOC将置低此时A/D进入转换过程转换完成后EOC置高。3.1.2单片机与TLC1543芯片的接口方法TLC1543的三个控制输入端CS、CLOCK、ADDRESS和一个数据输出端DATAOUT遵循串行外设接口SPI协议,51系列单片机未内置SPI接口,不过仅需通过软件模拟SPI协议即可硬件方面将TLC1543的CS、CLOCK、ADDRESS、DATAOUT、EOC五个端口与AT89C52的5个I/O口相连接AT89C52的其余27个I/O口足以完成其它功能。采样电路连接如图3所示,仅占用P1.0P1.1P1.2P1.3P1.4端口就实现了具有10路的数据采集系统。该系统具有结构简单、可靠、容易扩展、精度高、高性价比等优点。P1.0、P1.1、P1.2、P1.3和P1.4分别与EOC、时钟、地址、数据、片选端分别相连。图3TLC1543与单片机的连接武汉理工大学《计算机控制技术》课程设计说明书63.2数字量的输入采集设计数字量可直接与单片机的I/O口相连进行采集,但考虑到有20路数字量,管脚利用量较多,可采用74ls165芯片进行并行采集,串行输出,减少管脚用量。3.2.1数字量的得到通过接地和和接5V电源将可得到数字量:图4数字量的得到3.2.274ls165功能介绍74LS165芯片是8位并行输入串行输出移位寄存器,使用此芯片可以扩展一个或多个8位并行I/O口。引脚图如下图:图574ls165的引脚图74ls165有16个引脚,引脚功能如下:D0-D7:并行输入端,可同时输入8路电平信号。SH:数据置入控制端,当其为低电平时,并行数据(D0-D7)被置入寄存器CLKINH:片选使能端,低电平使能,使能时数据随着脉冲的输入而输出CLK:时钟脉冲输入端武汉理工大学《计算机控制技术》课程设计说明书7QH/QH:串行输出端,两输出电平时反向的。SER:串行附加输入端3.2.3单片机与74ls165芯片的接口方法单片机与74ls165芯片的接口如图所示,可以采集24路数字量:图674ls165与单片机的连接3.3串口通信电路设计RS-485标准接口是单片机系统种常用的一种串行总线之一。与RS-232C比较,其性能有许多改进之处。RS-485管脚的功能如下:RO:接收器输出端。若A比B大200mV,RO为高;反之为低电平。RE:接收器输出使能端。RE为低时,RO有效;为高时,RO呈高阻状态。DE:驱动器输出使能端。若DE=1,驱动器输图7RS-485管脚图出A和B有效;若DE=0,则它们呈高阻态。若驱动器输出有效,器件作为线驱动器用,反之作为线接收器用。DI:驱动器输入端。DI=0,有A=0,B=1;武汉理工大学《计算机控制技术》课程设计说明书8当DI=1,则A=1,B=0。GND:接地。A:同相接收器输入和同相驱动器输出。B:反相接收器输入和反相驱动器输出。VCC:电源端,一般接+5V。89C52与MAX485的接口电路如图9.4所示。P1.7用来控制MAX485的接收或发送,其余操作同串口。TXD和RXD分别接到单片机上的TXD1和RXD1,直接实现下位机到上位机的电平转化和反向。电路图如下:图889C52与MAX485的接口电路综上所述,整个电路原理图如图9所示:图9完整电路图武汉理工大学《计算机控制技术》课程设计说明书94系统软件设计4.1模拟量采集子程序该程序通过CPU通道地址的写操作,发出A/D转换启动脉冲,启动以后CPU查询A/D转换是否结束,一旦结束CPU通过对通道地址的读操作读取数值,当EOC为高时CS置低A/D开始工作,先读出前一次采样转换结果的高四位,然后输入6个I/OCLOCK信号,将读出低六位,10个I/OCLOCK信号后,EOC将置低,此时A/D进入转换过程,转换完成后EOC置高。值得注意的是在TLC1543启动后,从A/D转换时序可知EOC约在启动脉冲之后300ns才变为高电平。TLC1543采集子程序流程图如图10所示:图10TLC1543采集子程序流程图开始传入待采样的通道号发送采样通道接收高四位转换结果接收低六位转换结果10次A/D转换结束?返回采样结果结束NY武汉理工大学《计算机控制技术》课程设计说明书104.2数字量采集子程序数字量采集主要是单片机通过74ls165进行采集并转换成串行数据,由单片机进行读取和存储。这样通过8个引脚,就可以采集24路开关量,满足设计要求的20路,要采集20路开关量,使用了三片74ls165。所以其流程为:先将所有的开关状态锁入寄存器,然后使能片1,读取其数据,使能片2,读取数据,使能片3,读取数据。这样就能够将所有24通道的状态都读取。程序流程图如图11所示图11数字量采集子程序流程图4.3采集定时子程序此课设要求1ms的采集时间,可使用单片机内部的Timer定时器。产生1ms的间隔中断。在每次中断产生的时候,将模拟量、数字量全部采集,并发送到上位机。定时中断子程序流程图如图12:开始使能锁存信号,将数字量存入存储器芯片数据逐次读入数据存储保持,串行输出结束武汉理工大学《计算机控制技术》课程设计说明书11图12定时中断子程序流程图上图既是主程序流程图,也是1ms的间隔中断子程序,单片机所完成以上工作需要1ms,故可用单片机的定时器来调节时间:具体程序见附录。4.4串口通信程序RS485只是硬件接口和RS232不同,但软件编程和RS232是一样的,软件程序方面不用做任何改动。MSComm是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。具体的来说,它提供了两种处理通信问题的方法:一是事件驱动(Event-driven)方法,一是查询法。MSComm控件有许多重要的属性,可以通过MSComm控件实现对RS485串口通信的编程。具体程序见附录。开始采集模拟量采集数据量串口发送数据结束武汉理工大学《计算机控制技术》课程设计说明书125设计小结与体会通过这次微机控制课程设计,我加深了对课本专业知识的理解,平常都是理论知识的学习,在此次课程设计中,真正做到了自己查阅资料、完成一个基本设计。对于芯片的选择,我们课程中学到的是ADC0809,但其是8位精度,不符合要求。通过查阅资料,决定采用TLC1543。在串口通讯环节,题目要求的是课程中不熟悉的RS-485,需要查阅资料。在此次的设计过程中,我更进一步地了解了数据采集的基本原理。当然,在这个过程中我也遇到了困难,通过查阅资料,相互讨论,我准确地找出错误所在并及时纠正了,这也是我最大的收获,