资源描述
基于MATLAB的数据采集系统设计摘要: MATLAB具备高性能的数值计算和可视化的科学工程计算功能,支持解释性语言输入,编程实现简单,具有丰富的数学函数功能支持,并拥有功能强大的数据采集工具箱,支持声卡。声卡作为MATLAB的数据采集卡相对于常规的数据采集卡,具有价钱低廉、开发简单和系统便捷等优势。本文研究了一种将两者结合进行数据采集的设计办法。在文章里具体介绍了该课题的背景,当今数据采集系统的结构和特点,介绍了MATLAB及其数据采集工具箱, 利用声卡的A/D、D/A转换技术和MATLAB的功能,提出了一种高性价比的基于声卡的数据采集与分析方案。并详细分析和阐述了利用MATLAB语言编程实现该数据采集与分析系统的过程和办法。在文章的最后则提供了一些应用该系统采集数据的实例。关键词:基于MATLAB;基于声卡;数据采集The System Design Of Data Acquisition Based On The MATLABAbstract:MATLAB has the function of high-performance numerical computation and visual scientific engineering computing. It supports explanatory language input and the sound card, contains rich mathematical functions and has powerful data acquisition toolbox with simple programming. As the MATLAB data collection card, the sound card, compared to the conventional data collection card, endows with a low price, simple development and convenient system. This paper has discussed a design that combines the two kinds to conduct data collection.This paper has specifically introduced the background of this topic, the structure and the characteristics of nowadays data collection system. It has also introduced MATLAB and its data collection toolbox. By using the A/D, D/A conversion technique of the sound card and the function of MATLAB, I have presented a cost-effective data collection and analysis design based on the sound card, and analyzed and described thoroughly the course and methods of data collection and analysis system by using MATLAB language programming. Finally, this paper has provided some examples which have applied this data collection system.Key words: Based on MATLAB; Based on sound card; DAQ 目 录1绪论11.1课题背景11.2数据采集系统的历史与发展11.3采集和采样方式22数据采集系统结构32.1系统结构32.2系统的特点和性能指标42.2.1系统分辨率52.2.2系统精度52.2.3采集速率52.2.4动态范围52.3系统常见的几种结构形式52.3.1多通道共享采样/保持器和 A/D 转换器数据采集系统62.3.2多通道同步数据采集系统62.3.3多通道并行数据采集系统72.3.4分布式数据采集系统73 MATLAB及声卡83.1 MATLAB 简介83.2数据采集工具箱及声卡简介83.3 MATLAB在数据采集中的应用94系统设计方案104.1系统结构设计104.2系统功能设计114.3系统设计实现114.3.1声音信号采集的硬件配置114.3.2数据采集124.3.3数据分析134.4应用实例135结语16参考文献17附录18致谢201绪论1.1课题背景数据就是科学实验、检验、统计等所获得的和用于科学研究、技术设计、查证、决策等的数值,是实验、测量、等的结果,常以数量的形式给出,用于作为结论的论据。数据采集(Data Acquisition)是将被测对象(外部世界、现场)的各种参量(可以是物理量,也可以是化学量、生物量等)通过各种传感元件作适当转换后,再经信号调理、采样、量化、编码、传输等步骤,最后送到控制器进行数据处理或存储记录的过程。数据采集系统就是将温度、压力、流量、位移等模拟量采集、转换成数字量,并进行存储、处理、显或打印的系统。在当今社会各个领域,包括科研和实验研究,数据采集系统有着不可代替的作用,数据采集和处理进行得越及时,工作效率就越高,取得的经济效益就越大。MATLAB产品系列被广泛应用于包括信号与图像处理、控制系统设计、通信、系统仿真等诸多领域。它的一大特性是有众多的面向具体应用的工具箱和仿真块,包含了完整的函数集用来对信号图像进行处理。而MATLEB提供的数据采集工具箱汇集了MATLEB集成的M 文件和MEX文件动态连接库,可以实时显示通过计算机数据采集硬件采集的数据。利用该数据采集工具箱可以方便地建立数据采集系统。1.2数据采集系统的历史与发展数据采集系统起始于20世纪50年代,1956年美国首先研究了用在军事上的测试系统,目标是测试中不依靠相关的测试文件,由非熟练人员进行操作,并且测试任务是由测试设备高速自动控制完成的。20世纪70年代中后期,随着微型机的发展,诞生了采集器、仪表同计算机溶为一体的数据采集系统。由于这种数据采集系统的性能优良,超过了传统的自动检测仪表和专用数据采集系统,因此获得了惊人的发展。20世纪90年代至今,在国际上技术先进的国家,数据采集技术已经在军事、航空电子设备及宇航技术、工业等领域被广泛应用。由于集成电路制造技术的不断提高,出现了高性能、高可靠性的单片数据采集系统(DAS)。目前有的DAS产品精度已达16位,采集速度每秒达到几十万次以上。数据采集技术已经成为一种专门的技术,在工业领域得到了广泛的应用。该阶段数据采集系统采用更先进的模块式结构,根据不同的应用要求,通过简单的增加和更改模块,并结合系统编程,就可扩展或修改系统,迅速地组成一个新的系统。现在,数据采集领域正在发生着重要的变化。首先,分布式控制应用场合中的智能数据采集系统正在发展。其次,总线兼容型数据采集插件的数量正在增大,与个人计算机兼容的数据采集系统的数量也在增加。本文评述了近期市场上的数据采集产品,并进一步指出了这些产品的发展趋势。 数据采集与控制 数据采集已长时间地被认为与数据记录及其它数据收集系统相等同。在工作时,一些要打印出硬拷贝,而另一些则把采集的数据馈送给主计算机处理。但是,随着分布式控制在各个领域里越来越普遍地应刷,数据采集设备开始同控制设备相结合。1.3采集和采样方式在数据采集领域,有许多采样方式,以下介绍几种常见的采样方式。(1)过采样(Over Sampling)。采样方式中最早是过采样,根据采样定理,采样频率fs必须高于被采信号最高频率fch的两倍,才不致产生频率混叠现象。(2)欠采样(Under Sampling)。在通信和动态数据的采集中,发展了一种欠采样技术,即采样频率fs可以低于信号频率fch,但信号的频带宽度不得大于0.5fs,利用采样信号产生的高次谐波,将采样后的信号移至第二或者更高的奈奎斯特区。(3)等效时间采样(Equivalent Time Sampling )。主要是对于重复的周期波形进行等效时间采样。(4)变速率变分辨率采样。而常见的采集方式则有以下几种。(1)扫描式采集(Scanning Acquisition):时分制、多通道巡回采集。 (2)并行式采集(Parallel Acquisition):多个通道同步并行采集,每个通道采用一个独立的A/D转换器,通道采集速率只取决于A/D的转换速率,与通道数无关。 (3)交替采集(Internative Acquisition):一个通道由多个A/D转换器交替采集,使每个通道采样速率等于多个A/D的转换速率之和,可以高于单个A/D的转换速率。2数据采集系统结构2.1系统结构数据采集系统主要由两部分组成:采集子系统和计算机子系统,即下位机智能数据采集系统和上位机 HMI(Human Machine Interface)系统。采集子系统实现将客观世界被测对象信号采集和转换为能被计算机处理的数字信号的功能等;计算机子系统实现对采集数据的控制、存储和处理等功能,计算机起着对采集数据的存储和处理、统计分析、提供人机接口与其他计算机的数据通信和交换的功能。一般的外置式数据采集系统结构如图1所示。模拟信号由传感器采得经过信号调理模块送入数据采集硬件设备。在数据采集设备中完成AD转换,包括采样、量化、编码,转化成数字信号后送入与之相连的PC机中。根据不同的要求,在PC机上利用MATLAB以及二次编程实现数据的实时分析与处理。用户可以通过人机交互界面修改、设定各项参数来控制数据采集硬件设备的工作状态,同时可以得到数据的采集与分析结果, 从而实现数据采集与分析的自动化。信号源传感器信号处理数据采集设备PCMATLAB软件环境信号处理分析图1一般的外置式数据采集系统结构整个系统可分为数据采集和数据分析两大部分,以友好的图形界面与用户进行交互沟通。数据采集部分实现数据采集功能,根据用户选择的采样频率和预设的采样时间,从声卡获得用户需要的数据;数据分析部分对采集到的数据进行频谱分析。全部数据的时域和频域波形以图形方式直观地呈现于用户面前。此外,还提供保存数据以及回放数据的功能。 图2给出了基于MATLAB的数据采集系统的简图,主要部件数据采集工具箱提供了硬件驱动程序和MATLAB环境之间“对话”所需的硬件驱动程序适配器、数据采集引擎和M-文件函数。数据采集工具箱MATLAB硬件驱动程序硬件磁盘文件传感器执行器数据采集引擎硬件驱动程序适配器M文件函数图2基于MATLAB的数据采集系统简图硬件驱动程序适配器在硬件驱动程序和数据采集引擎之间交换属性数值、数据和事件;数据采集引擎用来存储各个设备对象,以及每个设备对象的属性值;对采集到的数据进行存储并且使不同事件同步;M-文件用来创建设备对象、采集或输出数据、配置属性值和检测数据采集状态和数据采集设备。2.2系统的特点和性能指标数据采集系统一般具有以下几个特点。(1)现代采集系统一般都由计算机控制,使得数据采集的质量和效率等大为提高,也节省了硬件投资。(2)软件在数据采集系统中的作用越来越大,增加了系统设计的灵活性。(3)数据采集与数据处理相互结合的日益紧密,形成数据采集与处理系统,可实现从数据采集、处理到控制的全部工作。(4)数据采集过程一般都具有“实时”特性,实时的标准是能满足实际需要;对于通用采集系统一般希望有尽可能高的速度,以满足更多的应用环境。(5)随着电子技术的发展,电路集成度的提高,数据采集系统的体积越来越小,可靠性越来越高,甚至出现了单片数据采集系统。(6)总线在数据采集系统中有着广泛的应用,总线技术它对数据采集系统结构的发展起着重要作用。评价一个数据采集系统的性能有很多指标,但是一般采用以下几个比较常用的指标进行评价。2.2.1系统分辨率系统分辨率是指数据采集系统可以分辨的输入信号的最小变化量。通常可以用如下几种方法表示系统分辨率。使用系统所采用的 A/D 转换器的位数表示系统分辨率;使用最低有效位值(LSB)占系统满度值的百分比表示系统分辨率;使用系统可分辨的实际电压数值表示系统分辨率;使用满度值可以分的级数表示系统分辨率。2.2.2系统精度系统精度是指当系统工作在额定采集速率下,整个数据采集系统所能达到的转换精度。A/D转换器的精度是系统精度的极限值。实际上,系统精度往往达不到A/D转换器的精度。因为系统精度取决于系统的各个环节(子系统)的精度,如前置放大器、滤波器、模拟多路开关等。只有当这些子系统的精度都明显优于A/D转换器的精度时,系统精度才有可能达到A/D转换器的精度。系统精度是系统的实际输出值与理论输出值之差,它是系统各种误差的总和,通常表示为满度值的百分数。2.2.3采集速率采集速率又称为系统通过速率或吞吐率,是指在满足系统精度指标的前提下,系统对输入的模拟信号在单位时间内所能完成的采集次数,或者说是系统每个通道、每秒钟可采集的有效数据的数量。这里说的“采集”包括对被测物理量进行采样、量化、编码、传输和存储的全部过程。2.2.4动态范围动态范围最早是信号系统的概念,一个信号系统的动态范围被定义成最大不失真电平和噪声电平的差。而在实际用途中,多用对数和比值来表示一个信号系统的动态范围,指某个确定的物理量的变化范围。信号的动态范围是指信号的最大幅度和最小幅度之比的分贝数。2.3系统常见的几种结构形式数据采集系统的分类数据采集系统的结构形式多种多样,用途和功能也各不相同,常见的分类方法有以下几种。2.3.1多通道共享采样/保持器和 A/D 转换器数据采集系统多路开关控制器采样/保持A/D转换I/O接口CPU这种系统构成如图3所示,这种结构形式采用分时转换工作的方式,多路被测信号共用一个采样/保持器和一个 A/D 转换器。当采样保持器的输出已充分逼近输入信号(按给定精度)时,在控制命令的作用下,采样保持器由采样状态进入保持状态,A/D 转换器开始进行转换,转换完毕后输出数字信号。在转换期间,多路开关将下一路信号切换到采样/保持器的输入端,系统不断重复以上的操作,可以实现对多通道模拟信号的数据采集。采样方式可以按顺序或随机进行。图3多通道共享采样保持器和AD转换器数据采集系统图这种采集系统结构形式最简单,所用芯片数量少,适用于信号变化率不高、对采样信号不要求同步的场合。如果被测信号变化速率较慢,可以不用采样保持器,直接进行 A/D 转换。如果信号很弱而干扰噪声强,需要在系统电路中增加信号放大电路和滤波环节。2.3.2多通道同步数据采集系统多通道同步数据采集系统其结构如图4所示,也属于分时转换系统。多路开关控制器缓冲器A/DI/OCPU采样保持采样保持采样保持图4多通道同步数据采集系统多路模拟输入信号共用一个 A/D 转换器,但是每个通道各有一个采样/保持器,在同一采样指令控制下对各路信号同步进行信号采样,得到各路信号在同一时刻的瞬时值。模拟开关分时将各路采样/保持器切换到 A/D 转换器上,进行模数转换。这些同步数据可以描述各路信号的相位关系,所以这种结构被称为同步型数据采集系统。2.3.3多通道并行数据采集系统多通道并行数据采集系统框图如图5所示。这种结构形式中,每个通道都有自己的采样保持器和A/D转换器,经过A/D转换的数据经过接口电路送到计算机中。相对于前两种数据采集系统,这种结构形式的数据采集速度最快,但所用的硬件电路复杂,成本较高。采样保持采样保持CPU采样保持控制器A/D转换器I/OI/OI/OI/OA/D转换器A/D转换器图5多通道并行数据采集系统2.3.4分布式数据采集系统分布式数据采集系统是数据采集技术、计算机技术和通信技术综合和发展的产物,基于“分散采集、集中管理”的思想设计的系统结构形式,由若干个“数据采集点”和上位机以及通信接口组成。分布式数据采集系统结构如图6所示。上位机I/O接口数据采集点数据采集点数据采集点图6分布式数据采集系统3 MATLAB及声卡3.1 MATLAB 简介MATLAB是由美国Mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。MATLAB也是一种解释语言,所有的程序和指令都必须在MATLAB解释器中读入后才能运行,因而极大地限制了代码执行速度。MATLAB强大的计算功能只能在其平台上才能使用,也就是说,必需在安装了其解释器的机器上才能使用MATLAB的M文件,这样就给工程应用带来了很大不便。对于一般用户来讲,MATLAB只能作为离线的计算和分析工具,而不能作为实时的工程工具。幸运的是,开发MATLAB的MathWorks公司为广大的应用者提供了应用程序接口(API,Application Program Interface)和编译器(Compiler)。利用MATLAB和C语言交互,也可以开发基于MATLAB的数据采集系统。如果配上数据采集线路,该系统就可以作为一个虚拟仪器来使用。时至今日,经过MathWorks公司不断完善,MATLAB已经发展成为适合多学科,多种工作平台的功能强大的大型软件。在国外,MATLAB已经经受了多年考验,在欧美高校,MATLAB已经成为线性代数,自动控制理论,数据统计,数字信号处理等高级课程的基本教学工具;成为大学生,硕士生,博士生必须掌握的基本技能。在设计研究单位和工业部门,MATLAB被广泛用于科学研究和解决具体问题。可以预见不久的将来,在国内工程界MATLAB一定会盛行起来。3.2数据采集工具箱及声卡简介MATLAB的数据采集工具箱是一种建立在MATLAB环境下的M函数文件和MEX动态链接库文件的集合,包含3大区域的组件:M文件函数、数据采集引擎及硬件驱动适配器。它具有如下特点:是一种通过使用与PC机兼容的、即插即用的数据采集设备在MATLAB环境中的架构;支持模拟信号的输入输出以及数字信号的输入、输出,子系统还包括同步模拟输入输出的转换;支持声卡;事件驱动采集。声卡 (Sound Card)也叫音频卡,是多媒体技术中最基本的组成部分,是实现声波数字信号相互转换的一种硬件。声卡的基本功能是把来自话筒、磁带、光盘的原始声音信号加以转换,输出到耳机、扬声器、扩音机、录音机等声响设备,其数字信号处理器包括模数转换器(ADC) 和数模转换器(DAC) ,ADC 用于采集音频信号,DAC用于重现这些数字声音,转换率达到44.1KHz。声卡已成为多媒体计算机的一个标准配置,利用声卡进行采样与输出,就不需要购买专门的采集卡可以降低虚拟仪器的开发成本,且在音频范围内可以完全满足实验要求。3.3 MATLAB在数据采集中的应用数据采集工具箱集成于MATLAB中,所以在进行数据采集的同时,可以对采集的数据进行实时分析,或者存储后再进行处理,或者针对数据分析的需要对测试条件的设立进行不断的更新。应用数据采集工具箱提供的命令和函数可以控制任何类型的数据采集。例如,在硬件设备运行时,可以获取事件信息,评估采集状态,定义触发器和回访状态,预览数据以及进行实时分析,可以设置和显示所有的硬件特性以满足用户的技术指标。4系统设计方案声卡是多媒体计算机系统中最基本、最常用的硬件之一,其技术发展已经成熟,它具有AD/DA转换功能,现已被广泛应用于声音信号采集和虚拟仪器系统的设计。MATLAB则是一种功能强大、计算效率高、交互性好的数学计算和可视化计算机高级语言,它将数值分析、信号采集与处理和图形显示有机地融为一体,形成了一个极其方便、用户界面友好的操作环境。本文所设计的声音信号采集与分析系统就是充分利用了声卡的AD/DA转换功能和MATLAB强大的数据处理功能,同时,该系统还是建立在MATLAB软件的图形界面实现的,因而使系统具有良好的交互性。基于计算机声卡的数据采集系统有以下特点。价格低廉。在数据采集时,所要采用的是模数转换芯片,对于某些应用场合,可以利用计算机上所附带的声卡实现数据采集任务。灵活性强。用户不仅可以进行实时监视和控制操作,还可以把数据保存到硬盘,供以后分析使用。在CPU足够快的条件下,还可以实时处理数据,动态显示波形的频谱、功率谱。另外在一台计算机上,可以插若干块声卡,组成多通道数据采集系统。频率范围较窄,不能测直流。由于受声卡的硬件限制,要得到较好的波形,输入信号的频率最好在100Hz15kHz范围内。 总之,运用廉价的声卡,构成一个较高的采样精度,中等采样频率,且具有很大灵活性的数据采集系统,对于一些应用领域是一种很好的选择。4.1系统结构设计MATLAB提供了一个数据采集工具箱(Data Acquisition Toolbox),在该数据采集工具箱中,有一整套的命令和函数,可用来直接控制与PC机兼容的数据采集设备进行数据采集,因此,利用MATLAB的这一工具箱便可进行声音信号的采集。然后在MATLAB中直接调用频谱分析函数、功率谱分析函数或数值分析函数等,就可以将采集到的声音信号分别进行频谱、功率谱分析等多种谱分析。因此,在MATLAB中可以很容易地实现信号采集与分析处理工作,如图7所示。被测对象采样保持信号调理声卡计算机图7系统实现的总体框图4.2系统功能设计本系统由数据采集和数据分析两大部分组成,数据采集部分是实现信号采集功能,根据用户选择的采样频率和预设的采样样本数从声卡获得用户需要的数据。数据分析部分主要实现以下功能。(1)从信号采集部分获取数据,或者从数据文件读取数据。(2)实现将采集到的声音信号数据进行频谱分析,画出频谱图以图形方式很直观地反映出信号特征。(3)保存数据,包括保存所有数据和部分数据的功能,同时保存对应的频谱数据。(4)显示声音信号数据的时域图和频谱图。(5)其他功能。根据不同的需要,还可以进行修改,以选择合适的实验方案。4.3系统设计实现声音信号采集功能的实现是由MATLAB控制计算机声卡将传感器得到的模拟信号转换为数字信号并存储在计算机中;而信号分析功能是将采集得到的数据进行时、频域分析和各项数值分析等。整个系统设计主要包括系统的硬件配置、编制程序实现数据采集、编制程序实现数据分析及系统的界面设计四部分。4.3.1声音信号采集的硬件配置将声卡插入计算机的PCI插槽,安装好相应的驱动程序后,将声音传感器设备与声卡的模拟输入端连接起来,这就构建了声音采集的硬件设备,需要注意的是对声音传感器的选择,应选择音频专用电缆或屏蔽电缆以减小噪声信号的引入,最好能选择单向性声音传感器。在MATLAB的信号采集工具箱中有专门为声卡生成一个操作对象的函数,初始化该操作对象即能建立MATLAB与声卡的通信,并为已创建的声卡设备对象增加数据采集通道和触发方式。若缺省设置则系统采用一个数据通道、手动触发方式启动工作。进行数据采集时,根据所配置的声卡的工作特性和信号分析的设计要求,可设置相应的参数来控制声卡在数据采集时的行为,如采样频率、采样时间、预计模拟信号的输入/输出范围、采样的出发方式,采样点数据的存储等。另外需要注意的一点是采样频率是由声卡的物理特性决定的,实际应用中可以根据情况选择一个声卡支持的采样频率.MATLAB支持电平触发、事件触发和手动触发三种方式来启动数据采集工作。声音信号采集硬件配置的具体实现过程AI = analoginput(winsound);chan = addchannel(AI,1);set(AI,SampleRate,10000) % 设置采样速率为10000HzActualRate = get(AI,SampleRate); % 从AI中获取实际采样速率set(AI,TriggerChannel,chan) % 设置触发通道set(AI,TriggerType,software); % 设置触发类型set(AI,Triggercondition,rising); % 设置为电压上升至某值后触发set(AI,TriggerConditionValue,0.013); % 设置触发电压值set(AI, TriggerDelay, -1); % 设置触发时延set(AI, TriggerDelayUnits, seconds); % 设置触发时延的单位set(AI,timeout,2) % 定义超时值Fs = ActualRate; % 设置采样速率.% 其它的相关设置4.3.2数据采集启动设备对象,控制声卡开始采集数据,采集过程中可以向声卡发送控制命令,如暂停采集、退出采集等。采集到的数据被暂时存放在计算机的内存中,理论上可采集的最大数据量是由计算机的内存量所决定的。同时, MATLAB能够记录采集设备的硬件属性、采集的启动时刻、采集时间、采样频率及采样通道等信息,如果采集过程中出现了错误,则出错的时刻、错误产生的来源等信息也都会被记录下来供后续工作参考。需要注意的是,执行完一次数据采集工作后应删除设备对象,将内存中的数据存储在硬盘上之后释放数据存储所占用的内存空间,以备下一次采集能有足够的内存空间存储新的数据,声音信号采集的实现程序为clear data1;start(AI) % 开始采样try data1,time=getdata(AI); % 将采样得到的数据保存到data1,采样时间保存到timecatch time=0;data1=0;disp(A timeout occurred.);end4.3.3数据分析在设计该部分时,不仅要求实现能从数据采集部分直接获取数据,还需实现能从文件中读取以前所保持好的数据。之后,用户可以根据实际研究的需要,在MATLAB中调用频谱分析函数(periodogram等)、功率谱分析函数(psd等)或数值分析函数(fminbnd等),就可以将采集到的声音信号分别进行频谱、功率谱分析等多种谱分析,并且可方便地将分析结果以图形的形式显示出来。对所采集的声音信号进行频谱分析的程序为f,mag=daqdocfft(data1,Fs,blocksize); % 此函数为MATLAB自带 subplot(2,1,2)plot(f,mag)grid on ylabel(Magnitude (dB)xlabel(Frequency (Hz)title(Frequency Components of Incoming Signal)4.4应用实例1、对声卡产生的模拟输入对象进行操作。声卡是MATLAB数据采集工具箱所支持的一种硬件,用声卡完成一个简单的数据采集过程,麦克风就成了数据采集系统中的传感器。(1)创建设备对象,这里创建的是一个声卡AI设备对象。AI = analoginput(winsound);(2)给设备对象添加通道,这里添加1个通道。chan = addchannel(AI,1);(3)设定设备属性值,控制数据采集。set(AI,SampleRate,10000) % 设置采样速率为10000HzActualRate = get(AI,SampleRate); % 从AI中获取实际采样速率set(AI,TriggerChannel,chan); % 设置触发通道set(AI,TriggerType,software); % 设置触发类型set(AI,Triggercondition,rising); % 设置为电压上升至某值后触发set(AI,TriggerConditionValue,0.013); % 设置触发电压值set(AI, TriggerDelay, -1); % 设置触发时延set(AI, TriggerDelayUnits, seconds); % 设置触发时延的单位set(AI,timeout,2); % 定义超时值Fs = ActualRate; % 设置采样速率(4)数据采集及结果处理。在这里首先将所采集到的数据进行快速傅立叶变换,然后转化成分贝,并显示结果的实数部分。f,mag = daqdocfft(data1,Fs,blocksize); % 此函数为MATLAB自带 subplot(2,1,2)plot(f,mag)grid on ylabel(Magnitude (dB)xlabel(Frequency (Hz)title(Frequency Components of Incoming Signal)(5)清除内存中的设备对象。delete(AI) clear AI人声采样以及之后的快速傅立叶变换,再转化为分贝见下图8,图9。图8采样过程中没有对麦克风讲话图9采样过程中对麦克风讲话结果分析:图9中是在采样过程中打开麦克风,但是没有对麦克风讲话的结果,图10是在采样的过程中对麦克风讲话的结果。可以看出,讲话与否改变了所采集到的数据的结果。5结语MATLAB具备高性能的数值计算和可视化的科学工程计算功能,支持解释性语言输入,编程实现简单,具有丰富的数学函数功能支持。MATLAB提供的数据采集工具箱具有简单易用的特点,使用它用户可以非常方便地创建自己的数据采集系统,并对数据进行处理。而声卡的普及性高,价格低廉。所以说,该系统有操作简便、采集快速的优点,在不需要太高精度的数据采集系统中有一定的实用性。但是,数据采集系统性能的好坏主要取决于它的精度和速度,在保证精度的条件下,还要尽可能地提高采样速度,以满足实时采集、实时处理和实时控制的要求。所以说,此方法仅是一个简易采集,也只起一个抛砖引玉的作用,若要高精度采集,还需要仔细研究,更加完善,才能发挥出更大的用途。第 19 页参考文献1 JI Xiaosong,LI Zhengsheng.Design and Realization of High-speed Data Acquisition CardJModern Electronics Technique.2011,(1):16-18.2 陈志勇,钱卫飞.基于MATLAB数据采集系统的设计与实现J.计量技术,2010,(1):12-15.3 李亚微,郭敏.基于MATLAB的音频数据采集系统J.电声技术,2007,31(3):12-14.4 陈小异,刘军安,吴晨曦.基于MATLAB的远程数据采集系统的设计J.新技术新工艺,2007(10):10-11.5 王红兵,王国栋,金翔,白宁.基于声卡和MATLAB的数据采集系统在杨氏模量测量中的应用J.物理实验,2005,(4):22-25.6 王琳,商周,王学伟.数据采集系统的发展与应用J.电测与仪表,2004,(8):17-19.7 赵祚喜,罗锡文,马瑞峻.基于MATLAB的计算机数据采集系统设计J.2003,(3):13-16.8 陈德娟.基于MATLAB的数据采集系统设计J.2003,30(4):9-12.9 赖莉飞,王笑君.数据采集器运用于探究性学习的探讨J物理实验.2003(7):10-12.10 晏培等.数据采集与工业通信J.现代制造.2002(13):23-25.11 张金玉,张优云,王汉功.基于MATLAB远程信号分析与诊断系统的开发J.电子技术应用.2001(10):3-8.12 VINAY K I;JOHN G P.Digital signal processing using MATLABJ.1996.13 Miroslav D Lutovac,Dejan V Tosic,Brian L Evans.Filter Design for Signal ProcessingM.电子工业出版社,2002.14 李念强.数据采集技术与系统设计M.机械工业出版社,2009.15 马明建,周长城.数据采集与处理技术M.第二版.西安:西安交通大学出版社,2006.16 马兴义,杨立群,林敏.MATLAB6应用开发指南M.北京:北京机械工业出版社,2002.17 楼顺天.基于MATLAB的系统分析与设计M.西安:西安电子科技大学出版社,2000.18 晏培等.数据采集与工业通信M现代制造,2002.附录附程序function ouyangchaoAI = analoginput(winsound);chan = addchannel(AI,1);set(AI,SampleRate,10000) % 设置采样速率为10000HzActualRate = get(AI,SampleRate); % 从AI中获取实际采样速率set(AI,TriggerChannel,chan) % 设置触发通道set(AI,TriggerType,software); % 设置触发类型set(AI,Triggercondition,rising); % 设置为电压上升至某值后触发set(AI,TriggerConditionValue,0.013); % 设置触发电压值set(AI, TriggerDelay, -1); % 设置触发时延set(AI, TriggerDelayUnits, seconds); % 设置触发时延的单位set(AI,timeout,2) % 定义超时值Fs = ActualRate; % 设置采样速率clear data1;start(AI) % 开始采样try data1,time=getdata(AI); % 将采样得到的数据保存到data1,采样时间保存到timecatch time=0;data1=0;disp(A timeout occurred.);end subplot(2,1,1) % 绘制2行1列的第1张子图plot(time,data1) % 以时间为横轴,数据为纵轴作图xlabel(Time (sec.) % 标注横坐标ylabel(Signal Level (Volts) % 标注纵坐标grid on % 添加网格 % 对采集数据作滤波处理blocksize =length(data1); % 计算窗函数长度window = hanning(blocksize); % 计算汉明窗函数(此函数为MATLAB自带)data2=window.*data1; % 对数据先作加窗处理b,a=ellip(4,0.1,20,3000*2/Fs); % 构造椭圆滤波器data=filter(b,a,data2); % 求加窗处理后的数据经过滤波器的响应%当不需要AI时,将它从工作空间和内存中删除delete(AI) clear AI% 对滤波处理后的数据作FFT频谱分析,并将结果在第二张子图上作图表示,加上横纵坐标和标题f,mag = daqdocfft(data1,Fs,blocksize); % 此函数为MATLAB自带 subplot(2,1,2)plot(f,mag)grid on ylabel(Magnitude (dB)xlabel(Frequency (Hz)title(Frequency Components of Incoming Signal)% 找到频谱幅度最大值,并在屏幕上显示xlim(0 1500)ymax,maxindex = max(mag);disp(Maximum occurred at, num2str(maxindex), Hz)
展开阅读全文