界面与真实示波器的操作面板相似,如图1所示,其中显示的波形为虚拟示波器用于RLC 串联电路特性实验时,电路频率为2000Hz 时的波形。虚拟示波器面板上各个旋钮、开关的功能与真实示波器相同,包括“TI M E /D I V ”时间/分度选择旋钮、“X -Y ”水平-垂直按钮、“X -P OS ”水平位置调节旋钮、“VAR ”扫描速度微调旋钮、“S OURCE ”触发选择开关、“S LOPE ”触发极性选择开关、“VOLT/D I V ”电压/分度衰减器、“Y -P OS ”位置调节旋钮、“VAR ”幅度微调旋钮、直流-接地-交流开关。不同于真实示波器的部分有:
1显示屏 用于显示声卡采集的信号波形。水平方向和垂直方向各有10个格,每个格又分5个小格。用户可以通过单击鼠标右键,选择“V isible Ite m s ”选项,显示“Pl ot Legend ”和“Graph Palette ”,实现传统示波器无法实现的操作,如查看显示屏上未显示的部分、进行波形的多倍放大,以完成特定的测量。
2“LE VE L ”触发电平调节旋钮 触发电平默认值为“0”。当用户设置的触发电平大小超出触发电压信号的范围时,不再进行触发。若进行设置后需调节回零值,可在旋钮上单击鼠标右键,选择“Reinitialize t o Default Value ”即可。
3“P AUSE ”暂停按钮 按下此按钮,可暂停信号采集,方便用户仔细观察显示屏上的波形。
4“S AVE ”存盘按钮和存盘路径设置文本框 用户可在文本框中指定保存文件的位置,点击“S AVE ”按钮,以文本文件的格式存储数据。文本文件可导入EXCE L 、MAT LAB 等软件进行处理。用户亦可用“Print Screen ”键直接剪取波形图。
5“VERT MODE ”显示模式选择开关 只观测A 或B 通道信号时,选择器置于“A ”或“B ”。设计程序时,线路输入插孔左声道采集的信号送入A 通道,右声道采集的信号送入B 通道。“A&B ”用于同时显示两通道信号。“A +B ”和“A -B ”用于显示两通道信号相加和相减后的波形。
6电压显示 虚拟示波器附加了电压表的功能,显示屏下两个文本框分别用于显示A 、B 通道的电压幅值。
使用前,需要制作一根测试电缆用于输入信号。方法是用一个立体声插头,接一段1~2m 长的双芯屏蔽线,分别对应立体声插头的地线、左声道、右声道,构成测试电缆,电缆的另一端接上三个鳄鱼夹。为确保虚拟仪器正常工作,要正确设置声卡:送入虚拟示波器的信号若为线路输入信号,通过L I N E I N 插孔输入,在音量控制面板的录音属性中选择“线路输入”一项;若为麦克风信号,通过M I C 插孔输入,在录音属性中选择“麦克风”一项。输入电压不能超过声卡的承受范围,以免损坏声卡,对于线路输入插孔,一般为-1V ~1V 。若测量的信号超过此范围,需先将信号衰减。
虚拟示波器程序安装在不同计算机上时,对于信号频率的
测量没有影响,由波形计算出的信号频率与真实值一致;对于信号幅度的测量,由于线路输入音量大小的不同,在使用前需要定标,以后的测量中,不必再调节线路输入音量大小。
4 虚拟示波器软件设计 4.1 总体结构
虚拟示波器程序采用W hile 循环结构,示波器的电源开关状态作为循环的控制条件,包含数据采集、电压显示、触发控制、垂直方向波形调节、水平方向波形调节、显示模式选择、波形显示和波形存储8个模块,各模块之间的关系如图2所示。框图程序见图3
。
图2 虚拟示波器总体结构 图3 虚拟示波器框图程序 4.2 数据采集
SI Config 节点和SI Start 节点放在循环的外部,设置声卡参
数和数字声音格式,并驱动声卡开始采集数据。SI Clear 节点也 放在循环外部,并由数据流程控制,在程序停止时释放声卡占用的资源。 “P AUSE ”按钮按下时,用SI St op 节点停止数据采集,进入W hile 循环,直到弹起“P AUSE ”按钮,循环中止,用SI Start 节点重新驱动声卡采集数据。SI Read 节点读取包含16bits 立体声数据的数组,由I ndex A rray 函数分别提取左声道和右声道数据,作为示波器CH A 与CH B 的输入信号。需要注意的是:在各个声道声卡每次读取的数据点数为8192,即SI Read 节点读取的数组维数为8192行×2列,提取左、右声道数据时,要按列进行,“0”列对应左声道数据,“1”列对应右声道数据。
样本位数为16bits 的数据其范围为-32768~32767,为便于虚拟示波器电压读数与信号真实参数相同,将声卡采集的数据除以某个数值。根据声卡线路输入插孔的输入电压范围,设定虚拟示波器可测到的最高电压为1V,可将此除数设为32767,当输入的信号高于1V 时,示波器的波形失真。
4.3 触发控制 图4 软件触发原理图
触发控制子程序实现选择触发源、根据触发电平的大小和触发极性进行触发。其原理如图4所示,首先判断用户设置的触发电平大小是否在波峰和波谷范围内,在此范围内则进行触发。对输入电压信号的第i 点和第
第3期
吕红英等:Lab V I E W 环境下基于声卡的虚拟示波器软件设计63 图5 触发控制框图程序 i +1点的值进行比较, 正极性触发时,若第i
点的值等于或小于触发电平,同时第i +1点的值大于触发电平,则第i 点为触发点,将此值送入触发控制子程序后的A rray Subset 函数的“in 2dex ”端口,每次采集数
据后,都从触发点开始提取子数组,送入显示屏,实现波形的同步显示。负极性触发时与之相反。子程序框图如图5所示。
4.4 电压灵敏度调节
可以采用不同档位时对显示屏wavef or m graph 的三个属性节点“YScale .M axi m u m ”、“YScale .M ini m u m ”和“YScale .I ncre 2ment ”赋不同值的方法。但这样调节CH A 电压/分度衰减器时,CH B 的波形也随之变化。故采用另一种方法。
固定显示屏wavefor m graph 的Y 轴刻度即电压刻度,范围为-0.5V ~0.5V,在垂直方向占10个格,每个格分为5个小格。为使波形在垂直方向所占的格数与档位变化相一致,采用按比例放大或缩小数组数据的方法。电压/分度衰减器“VOLT/D I V ”的值作为Case 结构条件,Case “0~9”中,分别将数组除以不同的数值。由于Y 轴刻度值固定,因此选择不同档位时,波形在垂直方向上所占的格数与其档位相乘,其值是恒定的。如对于幅值为0.2V 的正弦信号,当档位为0.1V /格时,在Y 轴刻度范围为-0.5V ~0.5V 的显示屏上,其半波形占2个格;当档位变为0.2V /格时,由于除数由“1”变为“2”,数据值减小为原来的一半,即电压幅值变为0.1V,此时在显示屏上,其半波形占1个格。两种情况下波形在垂直方向上所占的格数与其档位的乘积相等。,就可以分别调节CH A 和CH B 波形的电压灵敏度。
4.5 水平方向波形调节 (1时间灵敏度调节
与电压灵敏度的调节相似,可以采用不同档位时对显示屏
wavefor m graph 的三个属性节点“XScale .Maxi m u m ”、“XScale .M ini m u m ”和“XScale .I ncre ment ”赋不同值的方法。但用这种方