数据采集系统的设计.doc_第1页
数据采集系统的设计.doc_第2页
数据采集系统的设计.doc_第3页
数据采集系统的设计.doc_第4页
数据采集系统的设计.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中国地质大学电气工程及其自动化摘要数据采集系统,是用计算机控制的多路数据自动检测或巡回检测,并且能够对数据实行存储、处理、分析计算以及从检测的数据中提取可用的信息,供显示、记录、打印或描绘的系统。本课程设计对数据采集系统作了基本的研究。本系统主要解决的是采集10路模拟量(10位精度),20路开关量,采集的数据每隔1毫秒,通过串行通讯方式RS485向一台工控机传送的实现方法。关键字:数据采集、A/D转换、模拟量。数字量、串行通信数据采集系统的设计1 设计内容及要求设计一个数据采集系统,系统要采集10路模拟量(10位精度),20路开关量,采集的数据每隔1毫秒,通过串行通讯方式RS485向一台工控机传送。要求: 选择合适的芯片; 设计原理电路(包含译码电路); 编制数据采集的程序段; 编制数据通信程序段; 撰写设计说明书。2 数据采集系统原理及实现方案本课设是设计一个数据采集系统,系统要采集10路模拟量(10位精度),20路开关量,采集的数据每隔1毫秒,通过串行通讯方式RS485向一台工控机传送。10路模拟量A./D转换MCU工控机20路数字量RS485I/O扩展数据采集与传输系统一般由信号调理电路,多路开关,采样保持电路,A/D,单片机,电平转换接口,接收端(单片机、PC或其它设备)组成。硬件设计应用电子设计自动化工具,数据采集原理图如图1所示:图1 数据采集原理图由原理图可知,此设计主要分三大部分:模拟量的输入采集,数字量的输入采集,从机向主机的串行通信。信号采集分析:采集多路模拟信号时,A/D转换器前端需加采样/保持(S/H)电路。待测量一般不能直接被转换成数字量,通常要进行放大、特性补偿、滤波等环节的预处理。被测信号往往因为幅值较小,而且可能还含有多余的高频分量等原因,不能直接送给A/D转换器,需对其进行必要的处理,即信号调理。如对信号进行放大、衰减、滤波等。本题设计要求简单,模拟量和数字量直接给出,故信号采集部分可忽略,而将数据输出直接连接至A/D转换器输入端。模拟量的采集:A/D转换器的选取应考虑:(1)转换时间的选择:转换速度是指完成一次A/D转换所需时间的倒数,是一个很重要的指标。A/D转换器型号不同,转换速度差别很大。由于本系统的控制时间无具体要求,故可不予考虑,但至少要小于题目要求的1ms,这是可以达到的。(2)AD位数的选择:A/D转换器的位数决定着信号采集的精度和分辨率。要求精度为10位。输入为05V时,分辨率为设计要求10位精度的10路模拟量,通过查阅资料,TLC1543芯片满足要求。TLC1543 是一种开关电容结构的逐次逼近式A/D 转换器, 片内提供转换时钟,12 位或 8 位串行数据输出。可采集 11 路模拟输入电压,由片内多路开关选通,并采样保持。数字量的采集:设计中要求是20路数字量,可利用单片机的I/O口直接采集,但需要20个I/O口与之对应,这样,就浪费了芯片的管脚资源,可采用并行采集、串行输出的办法,进行I/O口扩展。传输方式分析:通过串行通讯方式RS485向工控机传送。3 系统硬件设计3.1 模拟量的输入采集设计模拟电压量的输入需要经过A/D转换才能进行采集,此设计要求10路模拟量的10位精度A/D转换,可采用芯片TLC1543。3.1.1 TLC1543功能介绍AD采样模块采用TLCl543。TLC1543具有以下特点:10位精度、11通道、三种内建的自测模式、提供EOC(转换完成)信号等,串行输出,内部时钟,转换时间21S,线性度1.0LSB,该芯片与单片机的接口采用串行接口方式,引线很少,与单片机连接简单TLC1543的控制端CS、IO CLOCK、ADDRESS和数据输出端DATAOUT遵循串行外设接口SPI协议。TLC1543和微处理器的串行接口之间可通过一个4线接口高速传输数据。图2是TLC1543的引脚示意图:TLC1543为20脚封装的CMOS 10位开关电容逐次A/D逼近模数转换器封装和时序图如图2所示A0A10为11路模拟输入端, 图2 TLC1543管脚图REF+ 和REF- 为基准电压正负端,ADDRESS 为串行数据输入端用于输入4 位端口地址,DATA OUT 为A/D数据输出端,I/O CLOCK为数据输入输出提供同步时钟,芯片内部有一个14通道多路选择器,可以选择11 路模拟输入通道和3 路内部自测电压中的任意一路进行测试,片内设有采样-保持电路。在转换结束时EOC置高,表明转换完成。TLC1543具有高速转换时间,高精度10 位分辨率,最大1LSB不可调整误差和低噪声的特点。当EOC为高时将CS置低A/D开始工作,由ADDRESS 端送入4 位地址的最高位B3在B3 有效期间输入一个I/O CLOCK 信号,将地址最高位移入A/D地址寄存器,同时从DATAOUT 端口读出前一次采样转换的10位数据的最高位A9,然后送入B2,同时输入一个I/O CLOCK信号,将B2移入A/D地址寄存器,从DATA OUT 读出A8,按此时序进行直到将4位地址送入A/D,同时读出前一次采样转换结果的A9、A8、A7、A6高四位,然后输入6个I/O CLOCK信号,将A5A0读出,10 个I/O CLOCK 信号后,EOC将置低此时A/D进入转换过程转换完成后EOC置高。3.1.2 单片机与TLC1543芯片的接口方法TLC1543的三个控制输入端CS、CLOCK、ADDRESS 和一个数据输出端DATA OUT遵循串行外设接口SPI协议,51系列单片机未内置SPI接口,不过仅需通过软件模拟SPI协议即可硬件方面将TLC1543的CS、CLOCK、ADDRESS、DATAOUT、EOC 五个端口与AT89C52的5个I/O口相连接AT89C52的其余27个I/O 口足以完成其它功能。采样电路连接如图3所示,仅占用P1.0 P1.1 P1.2 P1.3 P1.4端口就实现了具有10路的数据采集系统。该系统具有结构简单、可靠、容易扩展、精度高、高性价比等优点。P1.0、P1.1、P1.2、P1.3和P1.4分别与EOC、时钟、地址、数据、片选端分别相连。 图3 TLC1543与单片机的连接3.2 数字量的输入采集设计数字量可直接与单片机的I/O口相连进行采集,但考虑到有20路数字量,管脚利用量较多,可采用74ls165芯片进行并行采集,串行输出,减少管脚用量。3.2.1 数字量的得到通过接地和和接5V电源将可得到数字量: 图4 数字量的得到3.2.2 74ls165功能介绍74LS165芯片是8位并行输入串行输出移位寄存器,使用此芯片可以扩展一个或多个8位并行I/O口。引脚图如下图: 图5 74ls165的引脚图74ls165有16个引脚 ,引脚功能如下:D0-D7:并行输入端,可同时输入8路电平信号。SH:数据置入控制端,当其为低电平时,并行数据(D0-D7)被置入寄存器CLK INH:片选使能端,低电平使能,使能时 数据随着脉冲的输入而输出CLK:时钟脉冲输入端 QH/: 串行输出端,两输出电平时反向的。 SER:串行附加输入端3.2.3 单片机与74ls165芯片的接口方法单片机与74ls165芯片的接口如图 所示,可以采集24路数字量: 图6 74ls165与单片机的连接3.3 串口通信电路设计RS485标准接口是单片机系统种常用的一种串行总线之一。与RS232C比较,其性能有许多改进之处。RS485管脚的功能如下: RO:接收器输出端。若A比B大200mV,RO为高;反之为低电平。RE:接收器输出使能端。RE为低时,RO有效;为高时,RO呈高阻状态。DE:驱动器输出使能端。若DE1,驱动器输 图7 RS485管脚图出A和B有效;若DE0,则它们呈高阻态。若驱动器输出有效,器件作为线驱动器用,反之作为线接收器用。DI:驱动器输入端。DI0,有A0,B1; 当DI1,则A1,B0。GND:接地。A:同相接收器输入和同相驱动器输出。 B:反相接收器输入和反相驱动器输出。VCC:电源端,一般接+5V。89C52与MAX485的接口电路如图9.4所示。P1.7用来控制MAX485的接收或发送,其余操作同串口 。TXD和RXD分别接到单片机上的TXD1和RXD1,直接实现下位机到上位机的电平转化和反向。电路图如下: 图8 89C52与MAX485的接口电路综上所述,整个电路原理图如图9所示: 图9 完整电路图4 系统软件设计4.1 模拟量采集子程序该程序通过CPU通道地址的写操作,发出A/D转换启动脉冲,启动以后CPU查询A/D转换是否结束,一旦结束CPU通过对通道地址的读操作读取数值,当EOC为高时CS置低A/D开始工作,先读出前一次采样转换结果的高四位,然后输入6个I/O CLOCK信号,将读出低六位,10 个I/O CLOCK 信号后,EOC将置低,此时A/D进入转换过程,转换完成后EOC置高。值得注意的是在TLC1543启动后,从A/D转换时序可知EOC约在启动脉冲之后300ns才变为高电平。TLC1543采集子程序流程图如图10所示:开始传入待采样的通道号发送采样通道接收高四位转换结果接收低六位转换结果10次A/D转换结束?返回采样结果结束NY图10 TLC1543采集子程序流程图4.2 数字量采集子程序数字量采集主要是单片机通过74ls165进行采集并转换成串行数据,由单片机进行读取和存储。这样通过8个引脚,就可以采集24路开关量,满足设计要求的20路,要采集20路开关量,使用了三片74ls165。所以其流程为:先将所有的开关状态锁入寄存器,然后使能片1,读取其数据,使能片2,读取数据,使能片3,读取数据。这样就能够将所有24通道的状态都读取。 程序流程图如图11所示开始使能锁存信号,将数字量存入存储器芯片数据逐次读入数据存储保持,串行输出结束 图11 数字量采集子程序流程图4.3 采集定时子程序此课设要求1ms的采集时间,可使用单片机内部的Timer定时器。产生1ms的间隔中断。在每次中断产生的时候,将模拟量、数字量全部采集,并发送到上位机。定时中断子程序流程图如图12:开始采集模拟量采集数据量串口发送数据结束 图12 定时中断子程序流程图上图既是主程序流程图,也是1ms的间隔中断子程序,单片机所完成以上工作需要1ms,故可用单片机的定时器来调节时间:具体程序见附录。4.4 串口通信程序RS485只是硬件接口和RS232不同,但软件编程和RS232是一样的,软件程序方面不用做任何改动。MSComm是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。具体的来说,它提供了两种处理通信问题的方法:一是事件驱动(Eventdriven)方法,一是查询法。 MSComm控件有许多重要的属性,可以通过MSComm控件实现对RS485串口通信的编程。具体程序见附录。5 设计小结与体会通过这次微机控制课程设计,我加深了对课本专业知识的理解,平常都是理论知识的学习,在此次课程设计中,真正做到了自己查阅资料、完成一个基本设计。对于芯片的选择,我们课程中学到的是ADC0809,但其是8位精度,不符合要求。通过查阅资料,决定采用TLC1543。在串口通讯环节,题目要求的是课程中不熟悉的RS-485,需要查阅资料。在此次的设计过程中,我更进一步地了解了数据采集的基本原理。当然,在这个过程中我也遇到了困难,通过查阅资料,相互讨论,我准确地找出错误所在并及时纠正了,这也是我最大的收获,使自己的实践能力有了进一步的提高,让我对以后的工作学习有了更大的信心。 从这次课设中,我逐步了解了机控知识,当然也只是粗略皮毛而已,这个阶段也许就是学习的初级阶段,最重要的,是在枯燥中发现新奇,逐渐获得兴趣.学习的动力大部分来自信心,设计的上手是有一定难度的,初期写出完整的程序不易,信心对学习过程的持之以恒,是有着巨大的意义的.此次的课程设计,还让我知道了最重要的是心态,在你拿到题目时会觉得困难,但是只要充满信心,脚踏实地,就肯定会完成的。6 参考文献1于海生编著.微型计算机控制技术.北京:清华大学出版社.19992彭沛夫张桂芳编著.微机控制技术与实验指导.北京:清华大学出版社.20053林敏编著.微机控制技术及应用.北京:高等教育出版社. 20044张大明编著.单片微机控制应用技术. 机械工业出版社.20065张雪兰、谭毓安编著.C语言程序设计(第二版) .北京:北京理工大学出版社.2004附录:1 模拟量输入采样子程序TLC1543 A/D转换程序如下:/*-调用方式:uint read1543(uchar port)函数说明:read1543()返回10位AD芯片TLC1543的port通道采样值。-*/#define CLOCK P1_3#define D_IN P1_4#define D_OUT P1_5#define _CS P1_7uint read1543(uchar port) /从TLC1543读取采样值,形参port是采样的通道号uint data ad;uint data i;uchar data al=0,ah=0;CLOCK=0;_CS=0;port=4;for (i=0;i4;i+) /把通道号打入TLC1543D_IN=(bit)(port&0x80);CLOCK=1;CLOCK=0;port=1;for (i=0;i6;i+) /填充6个CLOCKCLOCK=1;CLOCK=0;_CS=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_CS=0; /等待AD转换_nop_();_nop_();_nop_();for (i=0;i2;i+) /取D9,D8D_OUT=1;CLOCK=1;ah=1;if (D_OUT) ah|=0x01;CLOCK=0; for (i=0;i8;i+) /取D7-D0D_OUT=1;CLOCK=1;al=1;if (D_OUT) al|=0x01;CLOCK=0; _CS=1;ad=(uint)ah;ad=8;ad|=(uint)al; /得到AD值return (ad);2 数字量输入采样子程序并行采集、串行输入的子程序如下:/*-调用方式:uint read_ls165(void)函数说明:20位并行输入返回为串行数据-*/unsigned char read_ls165(void) unsigned char data = 0,i,temp = 0x80; ls165_lp = 0; / 置lp低电平,读入8位并口数据 ls165_lp = 1; / 置lp高电平,保持数据 for (i=0;i 1; ls165_clk = 0; / clk下降沿,保持 return data;3 定时中断程序:init_time0comm()/定时器0初始化TMOD=0X10;/写控制方式字TH0=0X0FE;/置计数初值,使得定时时间1msTL0=0X0C;TR0=1;/开定时器0中断void Timer0() interrupt 1 using 0/定时器0中断程序,每1MS采样所有通道int i,a10; port1=1;port2=0; /模拟量输入采集 for(i=1;i=10;i+)ai-1=read1543(i); char b,c,d;port1=0;port2=1; /数字量输入采集b=read_hc165();c=b%256;b=b/256;d=P2;d=0FH&d;4 串口通信程序主要功能是实现485通讯程序:ID:IDC_COM1(资源ID) CommPort:1 (COM1) Settings:9600,e,7,1(波特率9600,偶校验,7个数据位,1个停止位) RThreshold:(每接收到1个字符就触发一个接收数据事件) SThreshold:0(不触发发送缓冲区空事件) InputLen:1(每次读操作从缓冲区中取一个字符)BOOL CMyCOMDlg:OnInitDialog() CDialog:OnInitDialog(); /以上为MFC框架自动生成的代码,在此不列出 /TODO:Add extra initialization here m_wndCOM1.SetCom

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论