完整word版构建基于声卡的数据采集与分析系统.docx

上传人:b****6 文档编号:10193677 上传时间:2023-02-09 格式:DOCX 页数:12 大小:384.36KB
下载 相关 举报
完整word版构建基于声卡的数据采集与分析系统.docx_第1页
第1页 / 共12页
完整word版构建基于声卡的数据采集与分析系统.docx_第2页
第2页 / 共12页
完整word版构建基于声卡的数据采集与分析系统.docx_第3页
第3页 / 共12页
完整word版构建基于声卡的数据采集与分析系统.docx_第4页
第4页 / 共12页
完整word版构建基于声卡的数据采集与分析系统.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

完整word版构建基于声卡的数据采集与分析系统.docx

《完整word版构建基于声卡的数据采集与分析系统.docx》由会员分享,可在线阅读,更多相关《完整word版构建基于声卡的数据采集与分析系统.docx(12页珍藏版)》请在冰豆网上搜索。

完整word版构建基于声卡的数据采集与分析系统.docx

完整word版构建基于声卡的数据采集与分析系统

构建基于声卡的数据采集与分析系统

本章详细介绍了基于声卡的数据采集与分析系统的设计与实现,包括声卡的硬件结构及特性、文件存储、数据回放等等。

通过本章的学习,读者可以根据自己的需要,对例程进行适当修改后,轻松搭建一套实用的数据采集与分析系统。

本章各节内容要点如下:

【本章重点】

∙声卡的硬件结构与特性

∙基于声卡的数据采集软件

∙常用的信号时、频分析方法与实现

∙声音文件的存储与回放

∙界面修饰与软件调试

15.1声卡的硬件结构与特性

声卡作为语音信号与计算机的能用接口,其主要功能就是经过DSP(数字信号处理)音效芯片的处理,进行模拟信号与数字信号的转换,因此,从其功能上来看,声卡可以作为数据采集卡来使用。

一般的声卡价格比较低廉,而且LabVIEW中提供了专门用于声卡操作的基本函数,所以用声卡搭建数据采集系统非常方便。

15.1.1声卡的基本参数

作为一种数据采集设备,最主要的是采样位数和采样率两个参数.目前市场上主流声卡是16位的,相对大多数采集卡12位的分辨率来讲,这方面声卡的性能比较高.但是作为一种音频处理设备,声卡的采样率不是很高,普通声卡的采样率分为4档:

44.1kHz、22.05kHz、11.025kHz、8kHz.对于少数专业的声卡,采样率能达到96kHz或者更高的192kHz等。

另外,声卡对20Hz~20kHz的音频信号有比较好的响应,而对这个频率范围之外的信号有很强的衰减,对于测试来讲,信号的频率最好在50Hz~10kHz范围之内。

15.1.2声卡的硬件接口

对于不同的声卡,其硬件接口有所不同,一般声卡有4~5个对外接口,WaveOut(LineOut)和SPKOut是输出接口,WaveOut输出的是没有经过放大的信号,SPKOut输出的是经过功率放大器放大后的信号,可直接接到扬声器上。

MicIn和LineIn是输入接口,

(a)前面板框图

两者的区别在于,后者只能接入较弱的信号,幅值大约为0。

02V~0。

2V,这个信号较易受干扰,在作数据采集时常用LineIn,它可接入幅值约不超过1。

5V的信号。

这两个通道输入端口内部都有隔直电容,直流信号和频率太低的信号都不能被接受.多数声卡在接入端把左右声道短接成一个通道,这种声卡可做为单通道数据采集卡用,声卡本身不提供参考电压,需要自行标定.在进行数据采集时,信号可以通过3。

5mm的音频插头通过声卡输入到电脑中或从电脑输出。

在进行数据采集时需要在PC机上对声卡进行设置,具体方法为:

(1)双击音量图标,弹出“主音量”控制对话框,在菜单中选择“选项→属性";

(2)在属性页的混音器中选择“RealtekHDAudioinput"(这个名称根据具体的PC机可能有所不同,总之选择输入那个选项就是了);

(3)在“显示下列音量控制”列表中勾选“线路音量”和“麦克风音量”。

这样,就可以对“线路音量”和“麦克风音量”进行调节了,如图1所示,将音频与对应的接口就可以进行数据采集了,对于普通的集成声卡,一般为3个接口,从外面上区分,粉红色的为MicIn,草绿色的为WaveOut,浅蓝色的为LineIn。

图1声卡录音控制

15.2声卡操作函数

LabVIEW提供了一系列使用Windows底层函数编写的与声卡有关的函数,利用这些函数可以方便搭建基于声卡的信号采集程序,这些函数位于“函数→编程→图形与声音→声音”子面板上,如图2所示。

图2声卡操作函数子面板

这些函数都是用Windows底层函数编写的,直接与声卡驱动联系,可以实现对声卡的快速访问和操作,具有比较高的执行性能。

声音子面板下又分输出、输出与文件三个子面板,它们分别提供声音输出、输入与声音文件相关的VI。

声卡操作函数的用法比较简单,这里不再赘述,感兴趣的读者可以参考LabVIEW的帮助文档,另外,通过菜单栏的“帮助→查找范例"打开NI范例查找器后,在“硬件输入与输出→声音”可以找到这些函数的典型应用,通过对它的修改即可实现用户所需的功能。

15.3构建基于声卡的数据采集与分析系统

15.3.1系统组成

基于声卡的数据采集与分析系统主要由:

传感器、信号调理电路、声卡和计算机四部分组成.其中传感器的作用是获取外界信息,并转成相应的电信号,这些信号一般比较微弱,并且常常伴有较强的噪声,需要经过调理电路的滤波和放大,声卡将这些信号进行采样,变成数字信号后送入计算机进行显示和保存。

对于前置的传感器和信号调理电路,这里不作过多的讨论,这里采用的声卡就是普通PC机上的声卡,主要介绍的是软件的编写.基于声卡的数据采集与分析系统软件主要由自动存储、手动存储和信号回放与分析三部分功能组成。

在自动存储中,用户只要指定每个文件的长度、总文件数,软件即可自动将这些文件保存到用户事先指定的文件夹中.在手动存储中,需要用户手动控制信号存储的长度。

这些存储的文件还可以进行回放、基本的时频分析,同时还可以通过声卡对外输出.

15.3.2编写波形显示子VI

当一个程序比较复杂的时候,为了使整个程序框图看上去比较简洁,可以对部分代码进行封装,再通过“函数→选择VI”进行调用,在这里,把波形显示封装成一个子VI,能实现通道选择、滤波、频谱分析与波形显示等功能.

1.通道选择

前面已经讲到,声卡有左右两个通道,它可以作为一种双通道数据采集卡使用,但这些数据在进入到电脑之后是以波形数组的形式出现的,两个通道混合在一起,通过分离用“函数→Express→信号操作”中的“拆分信号。

vi”实现.

经过“拆分信号”如果,左、右通道的信号已经分离,对于每个通道的数据处理用“条件结构"实现,如图3所示,通道选择通过“菜单下拉列表”控件实现,如图4所示。

图3不同通道的数据处理框图示意

图4通道选择控件与属性设置

2.数据类型转换

“读取声音输入.vi”的输出数据是一个波形数据,如图5所示,这些数据包括t0、dt和Y,其中t0表示数据采集的当前时间,dt表示采样周期,即1/f,Y就是采集到的数据。

对它进行某些处理(比如滤波)的时候先要进行类型转换,用“函数→Express→信号操作"中的“从动态数据转换。

vi”即可实现,第一次把它放置到后面上时,或者双击打都可打开它的配置对话框,如图6所示,这里选择“一维标题数组─单通道”或者“单一波形都可以"。

图5通道选择控件与属性设置

图6配置从动态数据转换VI对话框

3.谱分析

谱分析的实现比较容易,LabVIEW已经为我们封装好了这些函数,我们只要对它进行相应的设置即可,进行谱分析的时候,有时候需要调整数据点数,可以通过“函数→编程→数组”中的“拆分一维数组.vi”实现。

在这里用“函数→信号处理→波形测量”中的“FFT功率谱密度”实现信号的功率谱分析,用“FFT频谱(幅度─相位).vi”实现对幅度─相位谱的分析,可以对处理结果的显示方式等进行设置.另外,对于谱分析之前要用“函数→编程→波形"中的“创建波形。

vi”对数据进行重组,把它还原成一个波形数据.

4.滤波

“函数→信号处理→滤波器"中提供了许多常用的滤波器,这些VI使用非常简单,这里选择“Butterworth滤波器",可以进行低通、高通、带通等方式滤波,要注意的是它的fs端口要连接数据的采样率,否则没有波形输出,另外在进行波形显示的时候,如果不对它进行波形重组,那么显示的横轴是数据点数.

5.波形显示

为了使显示比较符合我们的习惯,对滤波后的数据进行了波形重组,这样它显示的横轴是时间,另外,因为后面涉及到对双通道数据的处理,在显示的时候为了能在一个波形图中显示出来,需要用“创建数组。

vi”将两路波形数据组合到一起,这样就会出现一个问题:

在对单通道的数据进行处理的时候只有一路波形数据,为了使数组类型匹配,在单通道显示的时候,将另一通道数据用一个空数组来替代。

至此,整个波形显示子VI的功能已经全部实现,程序框图如图76所示.

图7波形显示子VI程序框图

6.设置输入输出端口

经过上面5个步骤,波形显示子VI的基本功能已经实现,但要能够被正常调用,还需要对它进行端口设置,也即进行封装。

端口设置比较简单,点击菜单栏右上角的图标,选择“显示连线板”,这样图标就变成了连线端口,如图8所示。

在图标上点击一个端口,然后在前面板上点击相应的控件,这样就和控件与端口对应上了,用户可以对端口的分布,数目进行调整。

另外,还可以对图标进行编辑,输入用户想要的字符或者图案作标记。

图8显示连线板

至此,波形显示子VI就制作完成了,将它保存为“波形显示.vi",以后就可以对它进行调用了。

15.3.3自动存储

声卡对数据采集主要通过配置声音输入。

vi、读取声音输入。

vi、声音输入清零。

vi三个VI实现,声音文件的存储主要通过写入并打开声音文件。

vi、写入声音文件.vi、关闭声音文件.vi三个VI实现。

利用声卡进行数据采集之前,要先对声卡进行配置,这里的配置主要包括:

设备ID号(0)、采样模式(选择连续采样)、每通道采样点数、采样率、通道数、每采样比特数(16)。

进行连续采集的时候,如果参数没有改变,则不需要每次都对声卡进行配置,只要循环读取缓中的数据即可。

在进行数据存储之前要先打开一个声音文件,而写入完成之后则要将它关闭.

如果一段数据太长,会对后置处理造成麻烦,经常会因为计算机内存不够而不能完整地读出存储的数据,解决这个问题的方法就是对数据进行分割,那么,针对这个问题,我们可以在存储的时候就把文件分割成一定长度的数据段,便于后置处理,也即这里所说的自动存储。

对于自动存储,它的目标是实现指定文件长度,指定文件数目的数据采集与存储,用For循环实现。

整个程序代码如图9所示,内层的For循环实现对单个文件长度的控制,循环次数=[采集时间×采样率÷每通道采样点数]+1,[]表示取整,在注意的是这里只是近似文件的长度,并不是十分精确的,比如设置文件长度为5s,实际采到的信号长度可能是5s多一点。

在进行自动存储之前要先指定文件存放的路径、要保存的文件数目、每个文件的长度,要注意的是文件名不要加后缀,由程序自动添加序号和后缀。

波形显示调用“波形显示”子VI实现。

图9自动存储程序框图

15.3.4手动存储

手动存储需要经过用户的操作才能进行一段文件的存储,它的存储长度需要用户控制.程序的编写与自动存储类似,将图9的外层循环去掉,内层循环改成While循环,对声卡参数的配置方式和波形显示方式不变,程序框图如图10所示.在使用过程中,要先指定文件的存放路径(注意这里的文件名称要加后缀,后缀为“。

wav"),程序一开始运行时,并不存储数据,点击“保存”按钮后才开始进行数据保存,在数据保存过程时,“保存”按钮会闪烁(这个功能用“属性节点”的“闪烁”实现)。

图10手动存储程序框图

15.3.5信号回放与分析

信号回放与分析部分的功能就是将采集到的信号进行再现和分析,当然,也可以通过这个程序将信号通过声卡发射出去.读取声音文件用到的函数主要有:

声音文件信息.vi、读取并打开声音文件。

vi、读取声音文件。

vi、关闭声音文件。

vi;播放声音文件用到的函数主要有:

配置声音输出。

vi、设置声音输出音量.vi、写入声音输出.vi、声音输出等待.vi、声音输出清零.vi。

用While循环不断读取缓冲区中的数据实现续输出,滤波、谱分析等功能通过调用“波形显示”子VI实现,程序框图如图11所示。

图11信号回放与分析程序框图

15.3.6程序组合

将块程序代码组合在一起,在一个程序上实现多个功能,这些功能又互不干扰,最简单的方式就是利用“条件结构”或者“事件结构"。

在这个综合实例中,各个模块功能,如自动存储、手动存储、信号回放与分析,包括后面要讲到的帮助与退出程序都是用事件结构实现的,在信号回放与分析模块中滤波、幅度谱与相位谱、功率谱等功能是通过条件结构实现的。

7.主程序

主程序是建立在事件结构的基础上的,关于事件结构的详细内容请参考5.7中的相关内容,在这个实例中,各分支的事件源、事件及功能如表15-1所示。

表15—1主程序各事件分支说明

序号

事件源

事件

功能

0

自动采集

值改变

运行自动采集程序

1

手动采集

值改变

运行手动采集程序

2

播放

值改变

运行回放与分析程序

3

帮助

值改变

弹出帮助信息

4

退出

值改变

退出程序

&在编辑事件的时候,一定要注意取消对话框下面“锁定前面板(延迟处理前面板的用户操作)直至事件分支完成”的选择,否则,运行“手动保存"程序分支时,会造成里面的While循环假死,即程序在运行这个分支时,界面上的按钮会失去响应。

8.回放与分析模块

回放与分析模块要实现的功能是采集数据的再现与滤波、幅度─相位谱分析、功率谱分析等功能,因为界面显示有限,不可能一次把所有的程序运行结果都显示出来,这里用一个“条件结构”进行选择,选择条件由“选项卡"控件提供,将这三个功能模块分别放置在选项卡控件的不同页上,这样,切换选项卡页的时候就选择了不同的功能模块,如图12所示.

图12信号分析程序框图

15.4界面布局与修饰

界面修饰是程序编写的重要一步,一个布局合理,色彩搭配恰当的界面可以使人看去赏心悦目,而且易于操作。

界面的布局与修饰没有一个特定的公式可以参考,只要使人看上去舒服即可,一般来说,有下面几点可以用来作参考:

(1)把同一类型的控件放在一起;

(2)充分利用“控件→新式→修饰”中的线条、框框等进行划界修饰;

(3)用“查看→工具"打开“工具”选板之后,对界面进行着色修饰,但注意最不把色彩弄得过于复杂;

(4)充分利用菜单栏中的“对象对齐”、“分布对象”、“调整对象大小”、“重新排序”等工具对控件进行快速对齐、布局、调整大小等等;

(5)利用属性节点对控件的显示进行控制,如在本例中对“手动存储”模块中的“存储”按钮设置了“闪烁”,当按钮按下时,即进行数据保存时“存储”按钮会闪烁。

另外,对于一些控件,可以进行自定义,具体方法为:

在控件上单击鼠标右键,选择“高级→自定义”,打开控件自定义前面板,在这个前面板上可以对控件的形状、颜色、机械动作等进行修改,还可以加入图片,在本例中修改了两个“确定”按钮,一个作为“帮助"按钮,一个作为“退出”按钮,修改后的效果如图13所示。

图13自定义修改后的控件

整个程序的界面如图14所示,程序框图如图15所示。

需要特别说明的是:

(1)在进行存储前要先设置好保存路径、采样参数等;

(2)采样参数在运行过程中不可改变,滤波参数和显示参数可以改变;

(3)自动存储时不要指定文件后缀,由程序自动添加,手动存储和回放时要指定文件的后缀,后缀名为.wav;

(4)手动存储在点击“保存”后才开始保存数据;

(5)双击图表上的数值,可以改变波形显示的范围。

图14基于声卡的信号采集与分析软件界面

图15基于声卡的数据采集软件程序框图

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1