课程设计(论文)高速数据采集系统原理分析和设计.doc

上传人:laozhun 文档编号:3993654 上传时间:2023-03-30 格式:DOC 页数:33 大小:479KB
返回 下载 相关 举报
课程设计(论文)高速数据采集系统原理分析和设计.doc_第1页
第1页 / 共33页
课程设计(论文)高速数据采集系统原理分析和设计.doc_第2页
第2页 / 共33页
课程设计(论文)高速数据采集系统原理分析和设计.doc_第3页
第3页 / 共33页
课程设计(论文)高速数据采集系统原理分析和设计.doc_第4页
第4页 / 共33页
课程设计(论文)高速数据采集系统原理分析和设计.doc_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《课程设计(论文)高速数据采集系统原理分析和设计.doc》由会员分享,可在线阅读,更多相关《课程设计(论文)高速数据采集系统原理分析和设计.doc(33页珍藏版)》请在三一办公上搜索。

1、课程设计任务书学生姓名: 专业班级: 电信0804 指导教师: 工作单位: 信息工程学院 题 目: 高速数据采集系统原理分析和设计 初始条件:要求学生在广泛查阅资料的基础上,对各种不同高速数据采集系统进行分类和比较,并自行设计。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1) 搜索出若干种高速数据采集系统方案并对它们进行分析和比较。2) 设计出一款高速数据采集系统。3) 对所设计的高速数据采集系统的性能指标进行分析。4) 给出系统(或部分)的仿真。5) 至少查阅5篇参考文献。按武汉理工大学课程设计工作规范要求撰写设计报告书。全文用A4纸打印,图纸应符合绘图

2、规范。6) 要求学生主动思考,自主发挥,实现系统的特色功能。提交报告的主要内容:(使用Proteus 7.5 sp3)1) 题目2) 各种高速数据采集系统的介绍和比较3) 自行设计的高速数据采集系统4) 设计方案原理以及仿真5) 实验记录与结果分析时间安排:1) 2011 年 7 月 910 日, 查阅相关资料,学习设计原理。2) 2011 年 7 月 1112 日, 方案选择和电路设计仿真。3) 2011 年 7 月 13 日, 设计说明书撰写。4) 2011 年 7 月 7 日, 上交报告,同时进行答辩。指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日目录1 高速数据采集系

3、统简介22 几种常见的高速数据采集系统的简介和比较3 2.1 基于USB总线和CY7C68013单片机的高速数据采集系统3 2.2 基于FPGA的高速数据采集系统8 2.3 基于VC+6.0的高速数据采集系统11 2.4 几种高速数据采集系统的比较153 自行设计的基于单片机的高速数据采集系统17 3.1 设计总流程17 3.2 数字量采集模块18 3.3 模拟量采集模块19 3.4 串口通信电路设计20 3.5 整体图224 程序设计234.1 模拟量采集子程序234.2 数字量采集子程序234.3 串口通信程序234.4 总程序24 5 设计分析276 心得体会287 参考文献298 本科

4、生课程设计成绩评定表301 高速数据采集系统简介所谓高速数据采集系统,是用计算机控制的多路数据自动检测或巡回检测(其对象包括数字和模拟信号),并且能够对数据实行某些处理(包括存储、处理、分析计算以及从检测的数据中提取可用的信息),以供显示、记录、打印或描绘的系统。 在数字技术日新月异的今天,数据采集技术的重要性是十分显著的。它是数字世界和外部物理世界连接的桥梁。而随着现代工业和科学技术的发展,对数据采集技术的要求日益提高,在雷达、声纳、图像处理、语音识别、通信、信号测试等科研实践领域中,都需要高精度,高数据率的数据采集系统。它的关键技术为高速高精度的ADC技术,高数据率的存储和缓存技术以及系统

5、高可靠性保证等。通过数据采集技术,科研人员在实验现场可以根据需要实时记录原始数据,用于实验室后期的分析和处理,对工程实践和理论分析探索具有重大意义。正是由于目前数据采集技术广泛应用在科研实践和工业生产中的各个领域,当前国外对采集技术的研究和发展比较成熟。按通道数分有单通道的、双通道的、多通道的(多达上百通道);按采样率分可从几kHz到高达几个GHz;按分辨率分有8位、10位、12位、14位还有16位。在一些高端的示波器,频谱仪等测试仪器中,其采样率可达几个GHz,甚至几十个GHz241。而国内由于发展时间短,芯片技术等一些方面的限制,目前没有高水平的采集器出现。现在从高校到研究所到公司对采集器

6、的需求越来越多,性能要求也越来越高。这种情况给我们研发和设计高速数据采集系统提供了很多机遇。2 几种常见的高速数据采集系统的简介和比较2.1 基于USB总线和CY7C68013单片机的高速数据采集系统 通用串行总线USB是1995年康柏、微软、IBM、DEC等公司为解决传统总线不足而推广的一种新型的通信标准。该总线接口具有安装方便、高带宽、易于扩展等优点,已逐渐成为现代数据传输的发展趋势。基于USB的高速数据采集卡充分利用USB总线的上述优点,有效解决了传统高速数据采集卡的缺陷。 1支持USB2.0高速传输的CY7C68013 CypressSemiconductor公司的EZUSBFX2是世

7、界上第一款集成USB2.0的微处理器,它集成了USB2.0收发器、SIE(串行接口引擎)、增强的8051微控制器和可编程的外围接口。FX2这种独创性结构可使数据传输率达到56Mbytes/s,即USB2.0允许的最大带宽。在FX2中,智能SIE可以硬件处理许多USB1.1和USB2.0协议,从而减少了开发时间和确保了USB的兼容性。GPIF(GeneralProgrammableInterface)和主/从端点FIFO(8位或16位数据总线)为ATA、UTOPIA、EPP、PCMCIA和DSP等提供了简单和无缝连接接口。 CY7C68013的GPIF引擎具有自动传输数据结构的特性,这种特性使得

8、外围设备和主机通过CY7C68013可以无缝的、高速的传输数据。为了实现高速的数据传输,CY7C68013CPU不会直接参与数据的传输,而是直接利用GPIF的自动传输数据模式。图1和图2说明了主机IN和OUT数据传输过程。 1) 端点缓冲区FX2包含3个64字节端点缓冲区和4K可配置成不同方式的缓冲,其中3个64字节的缓冲区为EP0、EP1IN和EP1OUT。EP0作为控制端点用,它是一个双向端点,既可为IN也可为OUT。当需要控制传输数据时,FX2固件读写EP0缓冲区,但是8个SETUP字节数据不会出现在这64字节EP0端点缓冲区中。EP1IN和EP1OUT使用独立的64字节缓冲区,FX2固

9、件可配置这些端点为BULK、INTERRUPT或ISOCHRONOUS传输方式,这两个端点和EP0一样只能被固件访问。这一点与大端点缓冲区EP2、EP4、EP6和EP8不同,这四个端点缓冲区主要用来和片上或片外进行高带宽数据传输而无需固件的参与。EP2、EP4、EP6和EP8是高带宽、大缓冲区。它们可被配置成不同的方式来适应带宽的需求。2) 接口信号在利用GPIF进行高速数据传输系统设计时,GPIF waveforms的编辑是非常重要的,它控制着整个数据传输过程的读写时序。此时CPU的作用已经非常小了,它只起着下载代码到内部RAM以及在固件中如何触发GPIF waveforms的作用。FX2专

10、门为GPIF提供了外围接口信号,如8位或16位的数据线、控制信号、Ready信号以及地址线。IFCLK(双向时钟信号):IFCLK是一个参考时钟,可以配置成输入或输出。当配置为输出时,IFCLK被FX2驱动为30MHz或48MHz;当配置为输入时,时钟范围为548MHz。GPIFADR8:0(输出):GPIF使用GPIFADR信号为外部设备提供地址线,在总线上地址值是自增的。FD15:0(双向):这是USB主机通过FX2和外部设备进行数据传输的数据线,它可配置成8位或16位。当16位时,FD7:0代表端点FIFO中的第一个字节,FD15:8代表第二个字节。 CTL5:0(输出):FX2为外部设

11、备提供了几个控制信号,如读写选通、使能等。RDY5:0(输入):FX2提供了几个状态检测信号,它可以检测外部设备的状态,如FIFO的空、满、半满等。GSTATE2:0(输出):这是调试信号,表示GPIF波形执行的状态,通常连接到逻辑分析仪上。2 AD9238AD9238是一个双通道的12位A/D转换器,采用单3V供电,速度可以是20MSPS、40MSPS和65MSPS;低功耗,工作在20MSPS时,功耗为180mW,40MSPS时,功耗为330mW,65MSPS时,功耗为600mW;具有500MHz 3dB带宽的差分输入;片上参考源及SHA;灵活的模拟输入范围:1Vp-p2Vp-p;适用于:超

12、声波设备,射频通讯,电池电源仪器,低价示波器等。本系统采用20MSPS的AD9238,可充分发挥USB在高速传输模式下的数据传输优势。3 数据采集系统 该数据采集系统整个框图如图3所示,该系统由以下几部份组成:USB控制器、FIFO、CPLD、AD9238以及数据采集前端电路。图3数据采集系统框图CPLD主要是控制时序,时钟分频等。FIFO主要是起着高速数据缓冲作用,当FIFO半满时,数据开始向USB主机发送。我们采用的是同步FIFO,时钟信号接IFCLK,当FIFO的/RD信号和/OE信号有效时,每个IFCLK上升沿就输出一个数据;当FIFO的/WR信号有效时,IFCLK上升沿就读进一个数据

13、。AD9238的20MHz时钟信号是通过CPLD分频所得。当程序使能AD9238的/OEB_A和/OEB_B信号时,AD9238双通道开始进行数据采集并向FIFO写数据。系统前端的调理电路采用的是AD公司的AD8138,该放大器具有较宽的模拟带宽(320MHz,-3dB,增益1),而且可以实现将单端输入变成差分输出的功能。此项功能在现代高速模数变换电路中非常有用,因为几乎所有的高速A/D芯片都要求模拟信号为差分输入,虽然部分芯片的手册中提到对于单端输入信号也可使用,但这样一来会使A/D转换结果的二次谐波增大,降低信噪比(SNR)。AD8138很好的解决了这个问题,用户可以很容易的将单端信号转换

14、成差分输出而不必使用变压器,并且它的输入阻抗高达6M,可以直接与输入信号相连而省略隔离放大器,大大精简了电路结构。图4为AD8138的典型应用电路。 图4AD8138典型应用电路4软件设计 1)Windows驱动程序设计 USB设备驱动程序基于WDM。WDM型驱动程序是内核程序,与标准的Win32用户态程序不同。采用了分层处理的方法。通过它,用户不需要直接与硬件打它道(在USB驱动程序中尤为明显),只需通过下层驱动程序提供的接口号访问硬件。因此,USB设备驱动程序不必具体对硬件编程,所有的USB命令、读写操作通过总线驱动程序转给USB设备。但是,USB设备驱动程序必须定义与外部设备的通讯接口和

15、通讯的数据格式,也必须定义与应用程序的接口。 Cypress公司提供了完整的CY7C68013驱动程序源码、控制面板程序及固件的框架,这大大提高了用户开发的进度。用户只需稍加修改或不需任何修改即可使用所带驱动程序,软件开发者大量的时间主要集中在应用程序和固件的开发。本文所述的数据采集系统驱动程序就在原来的基础上进行了简单的修改来满足我们的需要。根据我们自己的需求,一般只需修改DeviceIoControl例程,如我们主要增加了控制数据传输函数、启动和停止AD、复位FIFO等,即IOCTL_START_AD、IOCTL_STOP_AD、IOCTL_RESET_FIFO。 2)底层固件设计 要实现

16、USB2.0的高带宽数据传输,必须使用它特有的GPIF特性,在开发固件前,首先必须根据实际需要对GPIFwaveform进行编辑。CY7C68013开发工具中带有一个GPIFDesigner,如图5所示,编辑完waveform后,选Tools-ExporttoGPIF.cFile来输出GPIF.c文件,然后将该文件加入keilc工程进行编译。 由于CY7C68013的EP2、EP4、EP6、EP8四个端点共享4KFIFO缓冲区,所以在该系统中,我们将EP2配置成4K的缓冲区,并设置为IN。用EP1OUT作为AD的控制参数传递,如启动和停止AD数据输出、复位FIFO等。在固件程序中,最重要的就是

17、TD_Init()和TD_Poll()两个函数。 图5GPIFDesigner2.2 基于FPGA的高速数据采集系统 高速数据采集系统的硬件核心为FPGA控制器,其主要功能为响应计算机通过PCI总线或者USB总线发出的控制命令,接收ADC的实时数据存储在DDRII芯片阵列中,在存储完成后自动将数据通过PCI总线或者USB总线传输到计算机存储到硬盘中。这些功能的实现都是使用Verilog HDL语言编程实现的。Verilog HDL语言是一种用形式化方法来描述数字电路和系统的硬件语言。利用其进行电路设计,大大提高了逻辑电路的设计效率,缩短了逻辑电路的设计周期。 采用FPGA+MCU的结构,主控逻

18、辑模块用FPGA来实现,在系统中对A/D器件进行采样控制,起到连接采样电路和MCU的桥梁作用,数据处理、远程通信及液晶显示控制等由MCU来完成。FPGA把传统的纯粹以单片机软件操作形式的数据采集变成硬件采集。首先用VHDL语言来设计状态机,用MCU来启动状态机,使其控制A/D器件,实现数据采集。并将采集到的数据存储到FPGA内部的数据缓存区FIFO中。当FIFO存储已满时,状态机控制FIFO停止数据写入,并通知单片机取走采集数据进行下一步处理。这种设计思想大大减轻了单片机的软件运行时间,提高了采集速率。这里,把6路模拟信号采集任务作为快任务,把用于系统自检的6路检测量信号作为慢任务。为了使快任

19、务的优先级高于慢任务,本系统设计两个状态机分别实现快任务和慢任务的数据采集,并由单片机生成PWM波,分别控制两个状态机。系统的总体框图如下图所示:图 6 FPGA高速数据系统总框图1)系统主要器件选择FPGA芯片选取及依据:FPGA实现主控逻辑控制,要求响应速度快,效率高。可采用ALTERA公司的ACEX1K 系列EP1K5O芯片,最高工作频率可达250 MHz。该系列芯片的特点是将LUT(查找表)EAB(嵌入式阵列)相结合,提供了效率最高而又廉价的结构。基于LUT的逻辑对数据路径管理、寄存器强度、数学计算或数字信号处理的设计提供优化的性能和效率,而EBA可实现RAM (随机读写存储器)、RO

20、M(只读存储器)、双口RAM 或FIFO (先入先出存储器)功能,使得ACEX1K适合复杂逻辑以及有存储、缓冲功能的数据采集系统。 ADC芯片选型及依据数据采集系统的输入信号多数都来源于现场传感器的输出信号,传感器种类不一,致使信号特性也不同,各通道信号的幅度与频率范围有很大的不同,高精度的、大动态范围的AD转换芯片使设计更能满足测量的需要。2)FPGA 方案设计设计思想用VHDL语言来设计两个状态机,状态机1来控制A/D实现快任务的采集,状态机2来完成慢任务采集。两个状态机的时钟信号CLK(高电平有效)均来自单片机生成的PWM波,状态机1直接由单片机控制,状态机2则是由单片机经反向器来控制。

21、首先置P1.0口为高电平,并用定时器来产生中断,使P1.0口产生PWM波。当P1.0口为高电平时启动状态机1,此时状态机2不动作;当快任务采样完成后,由定时器产生中断,将P1.0口置为低电平,此时状态机2动作,来完成慢任务采集。下一个周期完成同样的操作。对应快任务的采集数据缓存在快任务FIFO,慢任务的采集数据缓存在慢任务FIFO里,单片机读对应的FIFO数据来进行相应处理。各模块的设计根据以上的设计思想,FPGA系统的硬件设计模块主要有状态机模块,FIFO设计模块4-5。下面具体给出硬件原理设计。A)状态机的设计该设计过程主要是建立采集所需要的硬件电路,等待时钟信号的到来便立刻启动A/D进行

22、工作。了解了AD574A的工作时序,就可以写出状态机的采样控制状态。控制状态编码下表所示:表 1 控制状态编码表用VHDL语言来实现状态机,其原程序:SIGNAL current_state,next_state:STD_LOGIL_VECTOR(4 DOWNTO 0);CONSTANT st0:STD_LOGIL_VECTOR(4 DOWNTO 0):=”01000”;CONSTANT st1:STD_LOGIL_VECTOR(4 DOWNTO 0):=”10000”;CONSTANT st2:STD_LOGIL_VECTOR(4 DOWNTO 0):=”01001”;CONSTANT st

23、3:STD_LOGIL_VECTOR(4 DOWNTO 0):=”01100”;CONSTANT st4:STD_LOGIL_VECTOR(4 DOWNTO 0):=”01110”;SIGNAL LOCK :STD_LOGIL;COM:PROCESS(current_state,STS)BEGINCASE current_state ISWHEN st0= next_state next_state IF(STS=0) THEN next_state=st3;ELSE next_state next_state next_statenext_state=st0;END CASE;END PRO

24、CESS COM;REG:PROCESS(CLK)BEGINIF(CLK=1)THEN current_state TOOLMegawizard Plug-In Manager,选择Create a new custommegafunction variation,选择FIFO。(2)选择FIFO数据位宽度为12,深度为512。(3)选择FIFO的端口:12位数据输入输出端口data12.0和q12.0;对clock同步的数据写入和读出请求wrreq和rdreq;异步清零aclr;存储数据溢出信号full。 2.3 基于VC+6.0的高速数据采集系统 在VC+6.0中利用MSComm控件实现串

25、口通信。 串行通讯是计算机与其他设备进行数据交换时经常使用的方法之一,他具有实现简单,使用灵活方便,数据传输可靠等优点,因而在工业监控、数据采集和实时监控系统中得到广泛应用.高速串口数据采集软件的设计不同于普通串口通信,其要求在接收数据采集设备发送大量数据的同时完成对已接受到数据的实时存储,如果处理不好二者之间的关系,会造成数据的缺失甚至程序的崩溃.这就要求应用程序能够同时处理两件以上不同的任务.Win32是基于线程的抢先式多任务操作系统,使得应用程序能够同时执行多个任务,即在一个进程中可以同时运行多个线程.一个线程是指程序的一条执行路径,系统不停的在多个线程之间切换.由于时间很短,看上去多个

26、线程在同时运行.对于通讯这种需要花费大量时间来测试。 1)系统结构系统的组成结构如图1所示.中央控制PC机是系统的核心,要求数据采集软件具有良好的稳定性和兼容性.所以独立设计了一套基于Visual C+ 6.0的多线程通讯软件,它与前端的扫描仪。扫描仪是一种计算机外部输入设备的一种,能够通过捕获图像与图形并将其转换成计算机可以显示、编辑、存储和输出的数字化设备。 串口通信是典型的主从式,在硬件上通过MOXA公司的串口卡实现500K波特的采集速率. 图7 数据采集系统结构2)用MSComm控件实现高速串口数据采集的问题MSComm控件在串口编程时非常方便,程序员不必花时间去了解较为复杂的API函

27、数,只需要在串口通信资源的属性(Properties)一项中配置串口,串口通信的波特率、数据位数、停止位数、奇偶校验、发送缓冲区大小、接收缓冲区大小以及超时设置等均在此时进行配置.完成串口配置之后即可打开串口,进行数据读写.对于一般数据交换及串口通信来说,MSComm控件完全能够满足要求.但由于控件本身对于接收缓冲区大小设置的限定,为高速数据采集软件的设计带来了麻烦.如果接收缓冲区不能满足设计的要求,当缓冲区内数据达到消息响应值并响应存储命令时,而新采集的数据传输速度大于已接收到数据的存储速度,就会造成接收缓冲区的溢出,直接导致系统的崩溃.这一点在程序设计初期深有体会.在程序设计时也尝试当缓冲

28、区达到阈值响应消息时,在消息响应中启动一个新的线程,先将缓冲区中接收到的数据取出到新开辟的内存。3) 程序设计创新多线程程序设计思想在32位Windows系统中,术语多任务是指系统可以同时运行多个进程,而每个进程也可以同时执行多个线程.进程就是应用程序的运行实例.每个进程都有自己私有的虚拟地址空间,每个进程都有一个主线程,但可以建立另外的线程.进程中的线程是并行执行的,每个线程占用CPU。CPU也称为中央处理器,是电子计算机的主要设备之一。其功能主要是解释计算机指令以及处理计算机软件中的数据。所谓的计算机的可编程性主要是指对CPU的编程。CPU是计算机中的核心配件,只有火柴盒那么大,几十张纸那

29、么厚,但它却是一台计算机的运算核心和控制核心。计算机中所有操作都由CPU负责读取指令,对指令译码并执行指令的核心部件。CPU、内部存储器和输入/输出设备是电子计算机的三大核心部件。 时间的基本实体,系统不停的在各个线程之间切换,它对线程的中断是汇编语言级的.系统为每一个线程分配一个CPU时间段,某个线程只有在分配的时间段内才有对CPU的控制权。可以把线程看作是操作系统分配CPU。进程中所有的线程共享进程的虚拟地址空间,这意味着所有线程都可以访问进程的全局变量和资源.这一方面为编程带来了方便,但另一方面也容易造成冲突.虽然在进程中进行费时的工作不会导致系统的挂起,但会导致进程本身的挂起.所以,如

30、果进程即要进行长期工作,又要响应用户的输入,那么它可以启动一个线程来专门负责费时的工作,而主线程仍然可以与用户进行交互.由此可见,利用Win32的重叠I/O操作和多线程特性,可以编出高效的通信程序.高速串口数据采集软件的特点是接收数据的速度要求很高,接收数据量很大,而控制扫描仪。多线程程序设计A)数据采集程序流程 根据多线程程序的开发思想,该数据采集软件由负责人机交互的多线程和对串口进行处理的后台辅助线程组成.主线程是数据采集程序的管理者,用来初始化串口(通过调用Win32 API函数),自定义通信事件消息,创建、删除辅助线程,进行人机交互的操作及协调好各线程的运行.程序流程如图2所示. 图8

31、 数据采集程序框图 B)后台辅助线程分析 后台辅助线程是数据采集软件的核心,包括串口监视线程,读线程。串口监视线程在后台对串口进行实时监视,当监视到预定义的事件时,立即调用相应的线程进行处理并向主线程发相应的消息,如接收到数据就调用读线程自动接收数据并进行处理,同时向主线程发送接收到数据的消息,串口监视线程发送完此消息后就执行后面的程序代码,继续对串口进行监视,做到了处理消息与监视串口两不误,即保证了数据采集的实时性,又避免了资源的浪费,其处理过程如图3所示。 图9 串口监视线程的实现2.4 几种高速数据采集系统的比较1) 基于单片机的高速数字采集系统: 单片机可以与的USB总线的结合,随着现

32、代通信技术的高速发展,通用串行总线(USB)以其高速、支持多种类型传输类型、即插即用、易扩充等优点已经成为计算机上的标准配置接口,是实现外部设备与计算机通信的常用方式。这种连接较以往普通的并口和串口而言主要的优点是速度高、功耗低支持即插即用,Plug & Play和使用维护方便,成本低,易于使用。 但是对于工业化标准来说,传统的数据采集系统,通常采用MCU作为控制模块,来控制A/D,存储器和其他一些外围电路。这种方法编程简单,控制灵活,但缺点是控制周期长,速度比较慢。特别是当A/D 本身的采样速度比较快时,MCU 的慢速极大地限制了A/D 高速性能的使用。MCU 的时钟频率较低并且用软件实现数

33、据的采集,软件运行时间在整个采样时间中占的比例很大,使得采样速率较低。2)基于FPGA的高速数据采集系统: 随着数据采集对速度性能的要求越来越来高,传统的采集系统的弊端越来越明显,现在多采用FPGA或者FPGA+MCU(主控逻辑模块是FPGA)的结构,各模块设计使用VHDL 语言,其各进程间是并行的关系。它有MCU 无法比拟的优点。FPGA 的时钟频率高,全部控制逻辑由硬件完成,实现了硬件采样,速度快。 利用VHDL语言对FPGA进行设计,可在Quartus中进行系统仿真和验证。由FPGA在线编程的特点,可以依据现场的具体情况,对FPGA的内部配置进行修改,进一步增加了系统应用的灵活性,因此该

34、系统是一种比较理想的实时高速数据采集方案。3)基于VC+6.0的高速数据系统: 在VC+6.0中利用MSComm控件实现串口通信时实时性较差,系统资源利用不足,无法满足高速串口数据采集软件的编程要求。 目前比较好的解决方法是利用多线程程序编写技术,多线程技术能很好地解决各种逻辑并发和物理并发问题,使软件的各项性能指标均有所改善,如吞吐量、计算速度、响应时间等,提高了软件的执行效率和系统资源的利用率,同时也大大提高了程序的可读性和稳定性。同时多线程技术,解决了高速串口数据采集软件编程中遇到的问题,运行结果良好,可供广大同行参考。 3 自行设计的基于单片机的高速数据采集系统 3.1 设计总流程本设

35、计是设计一个数据采集系统,系统要采集10路模拟量(10位精度),8路开关量(数字量),采集的数据每隔1毫秒,通过串行通讯方式RS485向一台工控机传送。10路模拟量A./D转换MCU工控机8路数字量RS232I/O扩展数据采集与传输系统一般由信号调理电路,多路开关,采样保持电路,A/D,单片机,电平转换接口,接收端(单片机、PC或其它设备)组成。硬件设计应用电子设计自动化工具,数据采集原理图如下图所示:图10 数据采集原理图由原理图可知,此设计主要分三大部分:模拟量的输入采集,数字量的输入采集,从机向主机的串行通信。信号采集分析:采集多路模拟信号时,A/D转换器前端需加采样/保持(S/H)电路

36、。待测量一般不能直接被转换成数字量,通常要进行放大、特性补偿、滤波等环节的预处理。被测信号往往因为幅值较小,而且可能还含有多余的高频分量等原因,不能直接送给A/D转换器,需对其进行必要的处理,即信号调理。如对信号进行放大、衰减、滤波等。本题设计要求简单,模拟量和数字量直接给出,故信号采集部分可忽略,而将数据输出直接连接至A/D转换器输入端。数字量的采集:设计中要求是8路数字量,可利用单片机的I/O口直接采集,但需要8个I/O口与之对应,这样,就浪费了芯片的管脚资源,可采用并行采集、串行输出的办法,进行I/O口扩展。本设计选择74LS165芯片。模拟量的采集:A/D转换器的选取应考虑:(1)转换

37、时间的选择:转换速度是指完成一次A/D转换所需时间的倒数,是一个很重要的指标。A/D转换器型号不同,转换速度差别很大。由于本系统的控制时间无具体要求,故可不予考虑,但至少要小于题目要求的1ms,这是可以达到的。(2)AD位数的选择:A/D转换器的位数决定着信号采集的精度和分辨率。要求精度为10位。输入为05V时,分辨率为设计要求8位精度的8路模拟量,通过查阅资料,ADC0809芯片满足要求。ADC0809 是一种开关电容结构的逐次逼近式A/D 转换器, 片内提供转换时钟,8 位串行数据输出。可采集8路模拟输入电压,由片内多路开关选通,并采样保持。传输方式分析:通过串行通讯方式RS232向工控机

38、传送。3.2 数字量采集模块数字量可直接与单片机的I/O口相连进行采集,但考虑到有8路数字量,管脚利用量较多,可采用74ls165芯片进行并行采集,串行输出,减少管脚用量。3.2.1 数字量的获得通过接地和和接5V电源将可得到数字量: 图11 数字量的得到3.2.2 74LS165简介74LS165芯片是8位并行输入串行输出移位寄存器,使用此芯片可以扩展一个或多个8位并行I/O口。引脚图如下图: 图12 74ls165的引脚图74ls165有16个引脚 ,主要引脚功能如下:D0-D7:并行输入端,可同时输入8路电平信号。SH:数据置入控制端,当其为低电平时,并行数据(D0-D7)被置入寄存器C

39、LK INH:片选使能端,低电平使能,使能时 数据随着脉冲的输入而输出 3.2.3 数字量采集模块电路设计如下图(数字量在仿图13 模拟采集模块3.3 模拟量采集模块3.3.1 模拟量的输入采集设计模拟电压量的输入需要经过A/D转换才能进行采集,此设计要求8路模拟量的8位精度A/D转换,可采用芯片ADC08093.3.2 ADC0809芯片简介A/D转换器芯片ADC0809简介 8路模拟信号的分时采集,片内有8路 模拟选通开关,以及相应的通道抵制锁存用译码电路,其转换时间为100s左右。芯片引脚图如下:图14 ADC0809芯片引脚图模拟量采集电路设计如下:图15 模拟量采集模块3.4 串口通

40、信电路设计 89C52与MAX232的接口电路如图9.4所示。P1.7用来控制MAX232的接收或发送,其余操作同串口 。TXD和RXD分别接到单片机上的TXD1和RXD1,直接实现下位机到上位机的电平转化和反向。电路图如下:图16 串口通信部分模块3.5 总图 图17 总图4 程序设计4.1 模拟量采集子程序该程序通过CPU通道地址的写操作,发出A/D转换启动脉冲,启动以后CPU查询A/D转换是否结束,一旦结束CPU通过对通道地址的读操作读取数值。4.2 数字量采集子程序数字量采集主要是单片机通过74ls165进行采集并转换成串行数据,由单片机进行读取和存储。这样通过8个引脚,就可以采集8路

41、开关量,满足设计要求的8路,要采集8路开关量,只需要1片74ls165。所以其流程为:先将所有的开关状态锁入寄存器,然后使能片1,读取其数据。这样就能够将所有8通道的状态都读取。程序流程图如下图所示开始使能锁存信号,将数字量存入存储器芯片数据读入数据存储保持,串行输出结束 图18 数字量采集子程序流程图4.3 采集定时子程序此课设要求1ms的采集时间,可使用单片机内部的Timer定时器。产生1ms的间隔中断。在每次中断产生的时候,将模拟量、数字量全部采集,并发送到上位机。定时中断子程序流程图如下图:开始采集模拟量采集数据量串口发送数据结束 图19 定时中断子程序流程图上图既是主程序流程图,也是1ms的间隔中断子程序,单片机所完成以上工作需要1ms,故可用单片机的定时器来调节时间:4.4 总程序ORG 0000HAJMP MAINORG 000BHAJMP CHUANSHUORG 0013HAJMP INTV1ORG 0030HMAIN: MOV SCON,#40H ;串口工作于方式1 MOV TMOD,#01H ;设定T0定时初值,定时为1ms MOV TH0,#0FCH MOV TL0,#18H SETB TR0 SETB EA SETB ET1 CLR P2.1 JNB P2.2,Q2Q1: MOV R0,#60H ;模拟信号采集 MOV

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号