基于声卡和labvIEW的虚拟仪器设计.docx
《基于声卡和labvIEW的虚拟仪器设计.docx》由会员分享,可在线阅读,更多相关《基于声卡和labvIEW的虚拟仪器设计.docx(18页珍藏版)》请在冰豆网上搜索。
![基于声卡和labvIEW的虚拟仪器设计.docx](https://file1.bdocx.com/fileroot1/2023-2/23/89194c47-0c87-499f-a622-76c013e1e17a/89194c47-0c87-499f-a622-76c013e1e17a1.gif)
基于声卡和labvIEW的虚拟仪器设计
基于声卡和labvIEW的虚拟仪器设计
一、设计题目
本次大作业基于“硬件的软件化”思想,在对信号分析、虚拟仪器技术和声
卡的实用性进行理论分析的基础上,利用虚拟仪器专用语言LabVIEW开发环境,
设计基于声卡的虚拟仪器。
用普通的计算机声卡代替商用数据采集卡,利用声卡
的DSP技术和LabVIEW的多线程技术实现信号的数据采集,开发基于PC机声卡的虚
拟仪器,可实现数据采集,信号分析,信号存储,信号回放、输出等多种功能。
要求:
1.程序可通过声卡采集、存储线路输入口的信号,或麦克风接口的信号或计算机
内部产生的信号,并实时显示波形。
(1)缓存区大小调节按钮,用于调节数据缓存区大小;
(2)声音格式,调节声卡采集数据时的参数,可以调节通道数如单声道和双声
道、采样频率可以选择8000Hz、11025Hz,22050Hz、44100Hz四种采样频
率。
采样位数为8位,16位可选;
(3)一个用来停止采集的控制按键;
2.对采样的信号进行一些分析和处理(时域分析和频域分析)。
其中时域分析包
括实时显示波形,测量信号电压、频率、周期等参数;频域分析包括幅值谱、
相位谱、功率谱和FFT变换等。
3.保存采样的信号数据,以文本文件的形式保存,通过用户界面可将数据以excel
形式提交给用户。
4.点击回放按键。
面板上可显示回放存储数据的波形,或计算机内部产生的信号
波形(需通过控件来选择),同时信号通过声卡完成D/A转换输出,连接计算
机线路输出接口与真实示波器,可对虚拟仪器前面板显示的波形与传统示波器
显示波形做对比。
5.设计界面要美观,程序可读性好。
需合理排布用户前面板,体现良好的程序用
户交流界面。
注意:
1.计算机内部产生的信号:
通过调用框程图中的不同功能函数,得到不同的信号。
面板上可选择信号类型按钮:
选择正弦,余弦、三角波、方波、锯齿波等;频
率选择按钮:
调节输出信号的频率;幅值调节按钮:
调节输出信号的幅值。
2.采集从线路输入口LineIn或麦克风接口MicIn的外部信号由信号发生器提
供。
注意幅值不同:
线路输入口LineIn:
可接入不超过1.5V的信号
麦克风接口MicIn:
可接入大约为0.02~0.2V的信号
3.在运行程序时一定要选好计算机系统的声音选项。
要不然可能得不到正确的波
形。
比如要采集从线路输入口进入的外部信号。
那最好对录音选项里选择线路
输入,而不是混合单声道或者是混合立体声,要不然会产生干扰.波形有极大
的噪点。
当选择混合输入时,最好不要使计算机系统产生任何声音.要不然不
能采集显示所需要的波形。
二、任务分析
根据题目要求,整个过程可以分为三大部分:
声音信号的采集、分析与处理、声音信号回放。
1、信号采集
该部分主要涉及声卡采集的一系列初始化操作,包括采样率、通道数、采样位数、缓存区大小设置等。
在Labview中有专门与计算机声卡相匹配的函数节点“配置声音输入”。
接下来,读取信号,进行实时显示,此后再将信号数据以文本形式保存。
2、信号分析与处理
该部分程序的主要功能是读取信号采集中保存的数据文件,对信号进行时域显示、频谱分析、功率谱分析以及幅值、频率、周期等参数的测量。
3、信号回放
该部分中,再次读取声音文件,运用Labview中的“播放波形”函数节点可以驱动声卡,将数据以音频形式播放,可用耳机收听。
另外,通过操作选项,可产生计算机内部信号(正弦波、方波、三角波、锯齿波可选),随后通过“播放波形”播放。
三、软硬件实现过程
(一)软件编程
主版面有三个选择项:
声音采集、信号分析和声音回放。
分别对应该系统的三大操作步骤,在程序框图中,以条件分支结构的形式体现。
1、声音采集部分
前面板(图1-1):
该部分主要是声卡采集的初始化设置。
缓存区设置采用旋钮的方式,调节范围是0~100000。
采样频率可人为设置,根据声音的采样特性,此处可以选择输入8000Hz、11025Hz,22050Hz、44100Hz四种采样频率;通道数可以选择单通道和双通道;采样位数可以输入8位或16位。
采样数据可以保存为Excel格式提供给用户,保存路径由“Excel导出路径”来确定。
图1-1声音采集前面板
程序框图(图1-2):
在“声音采集”条件分支中,首先用一个开关来控制子条件分支结构,为真时才执行采集操作,为假时不进行任何操作。
前面板上与之关联的“开关”是采样操作的总控制处。
采样时,首先初始化声卡,对“配置声音输入”分别输入采样率、通道数、采样位数、缓存大小设置信息。
节点上的常数0是默认设备ID,另一个常数1表示采样模式为连续采样。
随后,通过“读取声音输入”读取显卡中的数据,分别送至波形显示、文本文件存储(“写入波形至文件”)、Excel文件导出(“导出波形至电子表格文件”)。
图1-2声音采集框图
2、信号分析部分
前面板(图2-1):
“开始分析”作为分析操作的总开关。
“打开声音文件”可以选择将要分析的声音文件地址。
主屏上的四个波形图分别为被分析信号的时域图、频谱、相位谱、功率谱,同时在左下角三个数字显示区可以显示出音频信号的平均幅值、周期和频率。
图2-1信号分析前面板
程序框图(图2-2):
类似于上文的操作,用“开始分析”作为操作的开关,控制条件分支结构,只是在条件为真时才有操作,为假时的操作为空。
分析信号时,先读取之前保存的文本文件(wav格式),直接送至波形图可显示时域信号,经过“频谱测量”、“功率谱测量”后可显示频谱、相位谱和功率谱图像。
对于信号频率和周期,可以使用“信号的时间与瞬态特性测量”,对于信号幅值,经过对比选择,可使用“幅值和电平”函数。
图2-2信号分析框图
3、声音回放部分
前面板(图3-1):
该部分包括两种操作,回放声卡采集的声音、显示计算机内部信号,“操作选项”可以选择两个条件分支。
在“声音回放”选项下,可以将保存的声音文件以波形图形式显示,同时通过声卡发出声音。
在“机内信号”选项下,输入信号幅值、频率等参数,选择信号类型,即可产生相应的机内信号,显示并播放。
图3-1声音回放前面板
程序框图(图3-2-1和图3-2-2)
图3-2-1声音回放框图
图3-2-2声音回放(计算机内部信号)框图
(二)硬件电路连接
使用声卡采集信号可以通过麦克风采集,程序开始采集后,对麦克风说话即可记录声音。
也可以采用线路输入口输入外部信号,此时将导线的一端接至麦克风输入端,另一端连接函数发生器。
信号输出时,可以用耳机直接收听重放的声音,或者将示波器探头接至耳机输出端,观察信号波形。
四、测试结果与分析
测试1、用电脑的麦克风采集一段声音信号,采样频率设为8K,通道数为1,采样位数为16,缓存区大小为54150,随后进行信号分析、存储、回放操作。
文件已保存为m.mov,运行结果如下图所示:
声音采集1
信号分析1
声音回放1
导出Excel表格1
分析结果:
根据采集、分析、回放的波形观察和听音过程可以确定,基本满足设计要求,但是有些时候(多次测量后偶尔发现一次),单通道16位采集时,若缓存区设置过大(达到70000左右),程序运行时可能会报错。
另外,回放的声音效果不是很好,含有噪声,可能与采样效果或硬件的配置有关。
测试2、用电脑的麦克风采集一段声音信号,采样频率设为11025Hz,通道数为2,采样位数为8,缓存区大小为100000,随后进行信号分析、存储、回放操作。
文件已保存为n.mov,运行结果如下图所示:
声音采集2
信号分析2
声音回放2
导出Excel文件2
分析结果:
从Excel导出文件中的数据发现,双通道时,数据分别存储。
测试结果与理论分析基本一致,此次测试没有出现前次测试中程序报错的情况。
测试3、从函数发生器采集一段信号,最终将回放结果输出到示波器上显示:
结果分析:
采样信号为正弦波,回放后送入示波器显示,发现信号存在较大干扰。
对比软件界面中实时显示的波形可以发现,采样得到的信号质量确实不太好,函数发生器中产生的信号不太稳定,也可能是程序设计不够优化。
(前次实验中我换过一台函数发生器和示波器探头,效果会有一些改善)
五、使用说明
1、首先进入“声音采集”界面,调整滚轮确定缓存区大小(注意在本程序中缓存区大小不宜过大,某些条件下,超过70000左右程序可能会报错),输入采样率(8000Hz、11025Hz,22050Hz、44100Hz)、通道数(1或2),采样位数(8或16),选择Excel导出路径(如C:
\DocumentsandSettings\Administrator\桌面\1.xls),将“开关”点亮后单次运行程序,开始采样过程(由于涉及声卡操作,所以启动会有一定的延时),此时,采样信号可在界面上实时显示。
点击“停止”按钮可结束采样过程,弹出对话框,确定声音文件保存路径,文件的扩展名应为.Wav。
注:
(1)由于存在硬件操作,响应时间较慢,运行开始、停止以及实时波形的变化会有延时。
(2)采样时间不要太短,否则可能会因为数据不够导致计算过程无法正常进行。
(3)点击“停止”按钮后等待延时才会弹出对话框,而不是点击软件的停止运行。
2、进入下一界面时,注意要把当前界面的“开关”关掉,进入信号分析界面,在“打开声音文件”中确定刚刚采样信号的路径,点亮“开始分析”后单次运行程序,在主界面上可以看到时域、频谱、相位谱、功率谱的波形,信号平均幅值、周期、频率将会在左下角的信息栏中显示。
3、关闭“开始分析”,进入声音回放界面。
在“操作选项”中可选择“声音回放”,确定文件路径后,点亮“声音回放”,单次运行程序即可看到波形,同时听到声音;在“操作选项”中选择“机内型号”,在左下角的信息栏中输入信号参数,选择信号类型(采样频率与采样点数建议为1000),运行后即可看到相应波形,同时听到声音。
六、系统改进
设计本程序时,由于没有参考网上的经典范例,也没有使用labview软件提供的模板示例,程序框架和内部功能基本上全部来自于自我尝试,所以系统的稳定性欠佳,在性能上尚需优化:
1、程序运行后,响应时间过长,推测分析可能是由于程序中多次使用条件分支结构嵌套导致运行速度较慢,需要在程序结构上做些调整。
2、在第一界面中,确定每个通道的缓冲区大小,如果过大(达到70000左右时),采样进行一段时间后,可能会报错,显示“操作超时”,这种情况出现过几次,但是后来测试时又恢复正常,不太稳定。
目前尚未确定问题的原因,系统稳定性能需要进一步优化。
3、需要调整外部程序结构,使得系统在封装为一个可执行文件的情况下仍然可以正常运行,无需多次点击按钮。
要让人机交互更加便利。
七、心得体会
本次大作业,作为学习labview程序设计的最终落脚点,在系统设计上的要求可想而知。
总体感觉这次设计内容综合了软件与硬件,将我们以前做的小实验中所用到的方法和功能整合到一起。
不仅程序结构更加复杂,而且在编程过程中,更需要我们对工程整体思想做深入思考。
我后来发现,我们这个题目其实也是Labview软件应用的一个经典例子,参考书籍、网上资料以及软件自带的范例模板,会有更加专业的设计方案。
相比之下,我自己设计的程序虽然结构上显得比较简单,但是在性能上还有许多值得修改、完善的地方。
程序设计中,往往需要借鉴前人的经验和一些优秀的算法、解决方案,使得自己的程序更加严谨,功能更完善,性能更优越。
八、参考文献
[1]LabVIEW8.2基础教程雷振山编著中国铁道出版社.2008
[2]LabVIEW8.2.1与DAQ数据采集龙华伟.顾永刚编著清华大学出版社
[3]LabVIEW8实用教程[美]RobertH.Bishop著电子工业出版社