(完整word版)构建基于声卡的数据采集与分析系统_第1页
(完整word版)构建基于声卡的数据采集与分析系统_第2页
免费预览已结束,剩余11页可下载查看

下载本文档

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

文档简介

1、构建基于声卡的数据采集与分析系统 本章详细介绍了基于声卡的数据采集与分析系统的设计与实现, 包括声卡的硬件结构及 特性、文件存储、数据回放等等。通过本章的学习,读者可以根据自己的需要,对例程进行 适当修改后,轻松搭建一套实用的数据采集与分析系统。 本章各节内容要点如下: 【本章重点】 ? 声卡的硬件结构与特性 ? 基于声卡的数据采集软件 ? 常用的信号时、频分析方法与实现 ? 声音文件的存储与回放 ? 界面修饰与软件调试 15.1 声卡的硬件结构与特性 声卡作为语音信号与计算机的能用接口,其主要功能就是经过 DSP (数字信号处理) 音效芯片的处理,进行模拟信号与数字信号的转换,因此,从其功能

2、上来看, 声卡可以作为 数据采集卡来使用。一般的声卡价格比较低廉,而且 LabVIEW 中提供了专门用于声卡操作 的基本函数,所以用声卡搭建数据采集系统非常方便。 15.1.1 声卡的基本参数 作为一种数据采集设备, 最主要的是采样位数和采样率两个参数。 目前市场上主流声卡 是 16 位的, 相对大多数采集卡 12 位的分辨率来讲, 这方面声卡的性能比较高。 但是作为一种 音频处理设备,声卡的采样率不是很高,普通声卡的采样率分为 4 档: 44.1kHz 、 22.05kHz 、 11.025kHz、8kHz。对于少数专业的声卡,采样率能达到 96kHz 或者更高的 192kHz 等。另外,

3、声卡对 20Hz20kHz 的音频信号有比较好的响应,而对这个频率范围之外的信号有很强的衰 减,对于测试来讲,信号的频率最好在 50Hz10kHz 范围之内。 15.1.2 声卡的硬件接口 对于不同的声卡, 其硬件接口有所不同, 一般声卡有 45 个对外接口, Wave Out(Line Out) 和SPK Out 是输出接口, Wave Out 输出的是没有经过放大的信号, SPK Out 输出的是经过功 率放大器放大后的信号,可直接接到扬声器上。 Mic In和 Line In是输入接口,两者的区别在 于,后者只能接入较弱的信号,幅值大约为 0.02V0.2V ,这个信号较易受干扰,在作数

4、据采 集时常用Line In,它可接入幅值约不超过 1.5V 的信号。这两个通道输入端口内部都有隔直电 容,直流信号和频率太低的信号都不能被接受。 多数声卡在接入端把左右声道短接成一个通 道,这种声卡可做为单通道数据采集卡用,声卡本身不提供参考电压, 需要自行标定。在进 行数据采集时,信号可以通过 3.5mm 的音频插头通过声卡输入到电脑中或从电脑输出。 在进行数据采集时需要在 PC 机上对声卡进行设置,具体方法为: (1) 双击音量图标,弹出“主音量”控制对话框,在菜单中选择“选项T属性”; (2) 在属性页的混音器中选择“ Realtek HD Audio in put ” (这个名称根据

5、具体的 PC 机 可能有所不同,总之选择输入那个选项就是了); (3) 在“显示下列音量控制”列表中勾选“线路音量”和“麦克风音量”。 这样,就可以对“线路音量”和“麦克风音量”进行调节了,如图 1 所示,将音频与对 应的接口就可以进行数据采集了,对于普通的集成声卡,一般为 3 个接口,从外面上区分, 粉红色的为 Mic In,草绿色的为 Wave Out,浅蓝色的为 Line In。 图 1声卡录音控制 15.2 声卡操作函数 LabVIEW 提供了一系列使用 Windows 底层函数编写的与声卡有关的函数, 利用这些函 数可以方便搭建基于声卡的信号采集程序, 这些函数位于“函数T编程T图形

6、与声音T声音” 子面板上,如图 2 所示。 七芦音 输出 输入 文件 图 2声卡操作函数子面板 这些函数都是用 Windows 底层函数编写的,直接与声卡驱动联系,可以实现对声卡的 快速访问和操作,具有比较高的执行性能。 声音子面板下又分输出、 输出与文件三个子面板, 它们分别提供声音输出、输入与声音文件相关的 VI。声卡操作函数的用法比较简单,这里 不再赘述,感兴趣的读者可以参考 LabVIEW 的帮助文档,另外,通过菜单栏的“帮助T查 找范例”打开 NI范例查找器后,在“硬件输入与输出T声音”可以找到这些函数的典型应 用,通过对它的修改即可实现用户所需的功能。 15.3 构建基于声卡的数据

7、采集与分析系统 1531 系统组成 基于声卡的数据采集与分析系统主要由: 传感器、信号调理电路、声卡和计算机四部分 组成。其中传感器的作用是获取外界信息,并转成相应的电信号,这些信号一般比较微弱, 并且常常伴有较强的噪声, 需要经过调理电路的滤波和放大, 声卡将这些信号进行采样, 变 成数字信号后送入计算机进行显示和保存。 对于前置的传感器和信号调理电路,这里不作过多的讨论,这里采用的声卡就是普通 PC 机上的声卡,主要介绍的是软件的编写。基于声卡的数据采集与分析系统软件主要由自 动存储、手动存储和信号回放与分析三部分功能组成。 在自动存储中,用户只要指定每个文 件的长度、总文件数,软件即可自

8、动将这些文件保存到用户事先指定的文件夹中。 在手动存 储中,需要用户手动控制信号存储的长度。 这些存储的文件还可以进行回放、 基本的时频分 析,同时还可以通过声卡对外输出。 15.3.2 编写波形显示子VI 当一个程序比较复杂的时候, 为了使整个程序框图看上去比较简洁, 可以对部分代码进 行封装,再通过“函数T选择 VI”进行调用,在这里,把波形显示封装成一个子 VI,能实 现通道选择、滤波、频谱分析与波形显示等功能。 1. 通道选择 前面已经讲到,声卡有左右两个通道, 它可以作为一种双通道数据采集卡使用, 但这些 数据在进入到电脑之后是以波形数组的形式出现的, 两个通道混合在一起, 通过分离

9、用“函 数T Express T信号操作”中的“拆分信号 M”实现。 图 3不同通道的数据处理框图示意 图 4通道选择控件与属性设置 2. 数据类型转换 “读取声音输入.vi”的输出数据是一个波形数据,如图 5 所示,这些数据包括 tO、dt 和 Y,其中 tO 表示数据采集的当前时间, dt 表示采样周期,即 1/f, Y 就是采集到的数据。 对它进行某些处理(比如滤波) 的时候先要进行类型转换,用“函数T Express 宀信号操作” 中的“从动态数据转换.vi”即可实现,第一次把它放置到后面上时, 或者双击打都可打开它 的配置对话框,如图 6 所示,这里选择“一维标题数组一单通道”或者“

10、单一波形都可以” 。 通道选择 左邇道 左il道 右通港 值 1 2 右通道 取11测I道 图 5通道选择控件与属性设置 图 6配置从动态数据转换 VI对话框 3. 谱分析谱分析的实现比较容易,LabVIEW 已经为我们封装好了这些函数,我们只要对它进行 相应的设置即可,进行谱分析的时候,有时候需要调整数据点数, 可以通过“函数T编程T 数组”中的“拆分一维数组.vi”实现。在这里用“函数T信号处理T波形测量”中的“ FFT 功率谱密度”实现信号的功率谱分析,用“ FFT 频谱(幅度一相位).vi”实现对幅度一相位 谱的分析,可以对处理结果的显示方式等进行设置。另外,对于谱分析之前要用“函数T

11、编 程T波形”中的“创建波形 M”对数据进行重组,把它还原成一个波形数据。 4. 滤波 “函数T信号处理T滤波器”中提供了许多常用的滤波器,这些 VI使用非常简单,这 里选择“ Butterworth 滤波器”,可以进行低通、高通、带通等方式滤波,要注意的是它的 fs 端口要连接数据的采样率, 否则没有波形输出, 另外在进行波形显示的时候, 如果不对它进 行波形重组,那么显示的横轴是数据点数。 5. 波形显示 为了使显示比较符合我们的习惯, 对滤波后的数据进行了波形重组, 这样它显示的横轴 是时间,另外,因为后面涉及到对双通道数据的处理, 在显示的时候为了能在一个波形图中 显示出来,需要用“创

12、建数组.vi”将两路波形数据组合到一起,这样就会出现一个问题:在 对单通道的数据进行处理的时候只有一路波形数据, 为了使数组类型匹配, 在单通道显示的 时候,将另一通道数据用一个空数组来替代。 至此,整个波形显示子 VI的功能已经全部实现,程序框图如图 76 所示。 图 7波形显示子 VI程序框图 6. 设置输入输出端口 re star t 丨w window 卜 d OH |T filUr view FFT点数 频谱 幅虞诸 经过上面 5 个步骤,波形显示子 VI的基本功能已经实现,但要能够被正常调用,还需 要对它进行端口设置,也即进行封装。端口设置比较简单,点击菜单栏右上角的图标, “显示

13、连线板”,这样图标就变成了连线端口,如图 8 所示。在图标上点击一个端口,然后 在前面板上点击相应的控件, 这样就和控件与端口对应上了, 用户可以对端口的分布, 数目 进行调整。另外,还可以对图标进行编辑,输入用户想要的字符或者图案作标记。 图 8显示连线板 至此,波形显示子 VI就制作完成了,将它保存为“波形显示 .vi”,以后就可以对它进 行调用了。 1533 自动存储 声卡对数据采集主要通过配置声音输入 .vi、读取声音输入.vi、声音输入清零.vi 三个 VI 实现,声音文件的存储主要通过写入并打开声音文件 .vi、写入声音文件.vi、关闭声音文件.vi 三个 VI实现。 利用声卡进行

14、数据采集之前,要先对声卡进行配置,这里的配置主要包括:设备 ID 号 (0)、采样模式(选择连续采样)、每通道采样点数、 采样率、通道数、每采样比特数(16 )。 进行连续采集的时候,如果参数没有改变,则不需要每次都对声卡进行配置, 只要循环读取 缓中的数据即可。在进行数据存储之前要先打开一个声音文件, 而写入完成之后则要将它关 闭。 如果一段数据太长,会对后置处理造成麻烦, 经常会因为计算机内存不够而不能完整地 读出存储的数据,解决这个问题的方法就是对数据进行分割, 那么,针对这个问题,我们可 以在存储的时候就把文件分割成一定长度的数据段, 便于后置处理,也即这里所说的自动存 储。对于自动存

15、储,它的目标是实现指定文件长度,指定文件数目的数据采集与存储,用 For 循环实现。整个程序代码如图 9 所示,内层的 For 循环实现对单个文件长度的控制,循 环次数=采集时间x采样率十每通道采样点数 +1 ,表示取整,在注意的是这里只是近似 文件的长度,并不是十分精确的,比如设置文件长度为 5s,实际采到的信号长度可能是 5s 多一点。在进行自动存储之前要先指定文件存放的路径、 要保存的文件数目、 每个文件的长 度,要注意的是文件名不要加后缀, 由程序自动添加序号和后缀。波形显示调用“波形显示” 子 VI实现。选择 手动存储需要经过用户的操作才能进行一段文件的存储,它的存储长度需要用户控制

16、。 程序的编写与自动存储类似, 将图 9 的外层循环去掉,内层循环改成 While 循环,对声卡参 数的配置方式和波形显示方式不变,程序框图如图 10 所示。在使用过程中,要先指定文件 的存放路径(注意这里的文件名称要加后缀,后缀为“ .wav”),程序一开始运行时,并不存 储数据,点击“保存”按钮后才开始进行数据保存,在数据保存过程时, “保存”按钮会闪 烁(这个功能用“属性节点”的“闪烁”实现) 。 信号回放与分析部分的功能就是将采集到的信号进行再现和分析, 个程序将信号通过声卡发射出去。 读取声音文件用到的函数主要有: 并打开声音文件.vi、读取声音文件.vi、关闭声音文件.vi ;播放

17、声音文件用到的函数主要有: 配置声音输出.vi、设置声音输出音量.vi、写入声音输出.vi、声音输出等待.vi、声音输出清 零 M。用 While 循环不断读取缓冲区中的数据实现续输出, 滤波、谱分析等功能通过调用 “波 形显示”子 VI实现,程序框图如图 11 所示。lirar 1534 手动存储 |fa止轲寸當丰声1 . |IQF) ) Lu*-tl FJ丄艺 Yi: Jbis *L 1 fLlr trk 弓曲有迅rjift n.a M叭 图 9自动存储程序框图 十具甘 V Js :-ojrid FLU V rite v囲 Rjrl: . :,L.L :-irii T limi i 罔也功

18、nN Tjipnt【乜&FLguj 叭 图 10手动存储程序框图 FS1 SOM dBOJ a aitpji 赴 node |u姑久便p Hi VR FbiCM 4 區I亜H I*! Itm liTi 祁让;0 图 11信号回放与分析程序框图 1536 程序组合 将块程序代码组合在一起, 在一个程序上实现多个功能, 这些功能又互不干扰, 最简单 的方式就是利用“条件结构”或者“事件结构” 。在这个综合实例中,各个模块功能,如自 动存储、手动存储、信号回放与分析,包括后面要讲到的帮助与退出程序都是用事件结构实 现的,在信号回放与分析模块中滤波、幅度谱与相位谱、功率谱等功能是通过条件结构实

19、现 的。 1.主程序 主程序是建立在事件结构的基础上的, 关于事件结构的详细内容请参考 5.7 中的相关内 容,在这个实例中,各分支的事件源、事件及功能如表 15-1 所示。 表 15-1主程序各事件分支说明 序号 事件源 事件 功能 0 自动采集 值改变 运行自动采集程序 1 手动采集 值改变 运行手动采集程序 2 播放 值改变 运行回放与分析程序 3 帮助 值改变 弹出帮助信息 4 退出 值改变 退出程序 在编辑事件的时候,一定要注意取消对话框下面“锁定前面板(延迟处理前面板的用户操作)直至事 件分支完成”的选择,否则,运行“手动保存”程序分支时,会造成里面的 While循环假死,即程序

20、( ii4 ilZild. BllTkiiil L-Ea L-uJidl Fj L B TliEi* MLJ Fa |c :3tt :血口 Mi f nfl=la 二 于| km 卫目 uni ii 1 III;KII siii 呂由*ii i % k | EWZ I 在运行这个分支时,界面上的按钮会失去响应。 2.回放与分析模块 回放与分析模块要实现的功能是采集数据的再现与滤波、 幅度一相位谱分析、功率谱分 析等功能,因为界面显示有限, 不可能一次把所有的程序运行结果都显示出来, 这里用一个 “条件结构”进行选择,选择条件由“选项卡”控件提供,将这三个功能模块分别放置在选 项卡控件的不同页上

21、, 这样,切换选项卡页的时候就选择了不同的功能模块, 如图 12 所示。 15.4 界面布局与修饰 界面修饰是程序编写的重要一步, 一个布局合理,色彩搭配恰当的界面可以使人看去赏 心悦目,而且易于操作。 界面的布局与修饰没有一个特定的公式可以参考, 只要使人看上去舒服即可,一般来说, 有下面几点可以用来作参考: (1) 把同一类型的控件放在一起; (2) 充分利用“控件T新式T修饰”中的线条、框框等进行划界修饰; (3) 用“查看T工具”打开“工具”选板之后,对界面进行着色修饰,但注意最不把色 彩弄得过于复杂; (4) 充分利用菜单栏中的“对象对齐”、“分布对象”、“调整对象大小”、“重新排 序”等工具对控件进行快速对齐、布局、调整大小等等; (5) 利用属性节点对控件的显示进行控制,

温馨提示

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

评论

0/150

提交评论