声卡不提供基准电压,因此无论是A/D还是D/A在使用时,都需要用户自己参照基准电压进行标定。
(5)声卡频率范围与频率响应。
某声卡的频率响应如图2所示,可以看出在200Hz~5kHz之间的曲线还是比较平坦的,其余部分信号有较多衰减。在合适的频率范围内,可以用声卡代替昂贵的数据采集卡进行工作。
2 利用G语言LabVIEW组建虚拟实验仪器
虚拟仪器是在美国国家仪器公司(National Instruments Corp.简称NI)于1986年提出的“软件就是仪器”这一口号的基础上发展起来的,其概念是用户在通用计算机平台上,在必要的数据采集硬件的支持下,根据测试任务的需要,通过软件设计来实现和扩展传统仪器的功能。传统台式仪器是由厂家设计并定义好功能的一个封闭结构,有固定的输入/输出接口和仪器操作面板。每种仪器只能实现一类特定的测试功能,并以确定的方式提供给用户。虚拟仪器的出现,打破了传统仪器由厂家定义、用户无法改变的模式,使得用户可以根据自己的要求,设计自己的仪器系统,并可通过修改软件来改变或增减仪器的功能,真正体现了“软件就是仪器”这一新概念。
(1)G语言LabVIEW关于声卡的模块介绍。
LabVIEW中提供了一系列使用Windows底层函数编写的声卡有关的函数。这些函数集中在Sound VI下。由于使用Windows底层函数直接与声卡驱动程序打交道,因而封装层次低,速度快,而且可以访问,采集缓冲区中任意位置的数据,具有很大的灵活性,能够满足实时不间断采集的需要。
LabVIEW函数库中Sound Input子模版(Functions Palette→Graphics&Sound→Sound→Sound Input)提供了声卡函数,可以通过声卡采集外部模拟信号。
(2)基于声卡的虚拟示波器的组建。
应用LabVIEW构建基于声卡的虚拟示波器,其整体思想就是在一个While循环中,添加各输入节点,使其对采集到的声音波形进行显示,而在内部又添加了若干的属性节点来对各种附加功能进行实现。流程图如图3所示。
虚拟示波器的软件的设计是把整个软件分别分成几个模块,然后组建成一个整体。分别为数据采集,存储,显示,处理等。
数据采集模块是虚拟示波器软件的硬件驱动部分,在这里主要是利用LabVIEW里面的声卡函数完成声卡的硬件参数设置、启动声卡采集数据、等待采样数据缓冲区满的消息、通知声卡停止采集等任务。
波形显示模块使用了波形操作函数,主要用到Build Waveform函数。Build Waveform函数。建立或修改已有的波形。默认情况下函数只有waveform和t0输入端子,向下拖拽函数下边沿还可以增加dt、Y和attribuates输入端子。使用操作工具单击端子可以弹出元素选择快捷菜单。如果waveform端子没有接入,则Build Waveform根据输入参数建立新的波形数据,并在输出端子中返回。在本设计中,只用到t0,dt,Y三个输入端子。其中t0为波形的起始时间,dt为波形数据点中间的时间间隔或持续时间,Y为包含了波形的数据值。此处,设置起始时间为0,但因为数据格式不匹配,增加了一个数据格式转换函数to time stamp,从而把一个数值转换成时间值。dt值取自SI Config的格式中的采样倒数,倒数取得的方法利用了reciprocal函数。Y值来自SI Read的stereo 16-bit输出端子。
因为篇幅有限,不能对各个模块进行详细介绍。下面是组建好的示波器。
3 虚拟示波器和传统示波器的比较