华厚强
(中国民用航空飞行学院航空电子电气学院,四川广汉,618307)
虚拟仪器(Virtual Instrumentation, VI)技术是指将通用计算机安装上软件并连接好硬件,让使用者在进行计算机操作时就好像在进行专用的电子仪器操作的技术。虚拟仪器利用软件来实现硬件的功能,能实现”软件即仪器”[1-4]。示波器是最常见的电子测量工具和仪器之一,通常模拟示波器都功能单一且结构笨重,数字示波器虽然可以进行多种功能扩展,但价格相对较贵,普及到实际应用中的困难也相对较大[5-7]。随着现代虚拟仪器仪表技术的进步,将传统的仪器测量用计算机技术实现的虚拟示波器系统具有较大应用价值,可以提高实验测量仪器的技术含量,并且性价比高[8]。
目前国内很多的高档实验测量仪器高度依赖进口,不仅价格昂贵,而且使用面窄,自主研究虚拟仪器仪表技术具有重大意义[9-11]。本文基于STC12C5A60S2单片机和LabVIEW 2018软件开发平台设计出一种虚拟示波器,硬件部分主要是普通PC机和单片机,软件部分则包括了前面板、串口驱动及相关的应用软件(主要有频谱分析、数字滤波、数据存储和读取、波形显示等),可以实现对多种波形显示和输出[12-13]。
虚拟示波器设计有硬件和软件两大基本组成部分,如图1所示。软件部分包括上位机软件设计和下位机程序设计,下位机通过对单片机编程实现一定频率和幅度范围内信号数据的采集、模数(A/D)转换及串口通信,上位机通过编译LabVIEW实现对信号波形的显示。
图1 虚拟示波器组成框图
在虚拟示波器运行过程中,函数发生器可输出正弦波、三角波和方波等基本波形,将其输入至加法电路,加法电路将函数发生器输出波形的每一点电压值变正(目的是让单片机可以采集到波形上每一点),通过加法电路之后将模拟输出接至单片机模拟输入端P1.0,最后通过单片机串口与PC机通信并且在PC机上显示出波形。
虚拟示波器的硬件电路主要包括加法电路、主控芯片、A/D转换模块、串口电平转换模块、单片机的晶振和复位电路等。
下位机以STC12C5A60S2单片机为控制核心,主要负责信号的采集和数据上传,片内硬件16×16位乘法器特别适用于快速、高运算量的使用;内部自带多个高精度A/D转换器ADC完善了系统的稳定性、可靠性;较多的I/O端口使设计变得非常方便;+3.3V的I/O端口电平与ΜAX232C完全兼容。STC12C5A60S2单片机的串行通信引脚UATXD0、UARXD0分别通过跳线连接到ΜAX232的T2IN、R2OUT[14]。通过ADC转换器来采集从外界输入的模拟信号,将其转换为数字信号后输出[15]。
上位机采用LabVIEW 2018平台进行程序开发,负责与下位机通信,对上传的数据进行相关处理和结果显示。
系统总体程序流程图如图2所示。先将单片机初始化后,由上位机发出开始采集命令,单片机开始A/D转换,以及与PC机进行串口通信,PC机读取转换结果,写入串口缓冲区,然后读取数据并对数据进行处理,最终实现对波形的实时显示,如果按下停止采集按钮,PC机便不再读取数据,停止采集。
图2 软件总体流程图
下位机工作流程图如图3所示。下位机主要功能是对信号进行采集,并与PC机进行串口通信。因此,下位机软件设计主要是针对STC12C5A60S2的A/D和串口模块的使用,首先对单片机的A/D和串口初始化,然后启动A/D转换,ADC10输出10位转换结果,最后将数据通过串口传送给PC机。
3.3.1 虚拟示波器前面板设计
虚拟示波器的前面板如图4所示。前面板包括波形显示、参数设定和参数测量等功能模块。
图4 虚拟示波器前面板图
3.3.2 虚拟示波器后面板设计
后面板程序的设计总体上可以分为数据采集程序、数据处理和波形显示程序两大部分,后面板总程序如图5所示。
图5 后面板总程序设计图
后面板数据采集程序设计如图6所示,该程序主要功能是与单片机进行串口通信,接收单片机发送的数据以实现数据采集。
图6 后面板数据采集程序设计图
后面板数据处理和波形显示程序设计如图7所示,该程序可以对PC机采集到的数据进行处理,并且实现波形显示、数据缓冲的功能。
图7 后面板数据处理和波形显示程序设 计图
完成系统整体后,可以根据相关器件的工作原理对其进行相应的调试与集成整合。在调试过程中分别采用了硬件调试与软件调试相结合的调试思路,力求使设计能够正常实现相关功能。
系统通过串口调试助手检测有没有串口信号。先以单片机STC12C5A60S2内部模拟的方波为对象进行检测,用来进行串口调试的硬件电路实物图如图8所示。方波串口代码显示结果如图9所示。
图8 串口调试硬件电路实物图
图9 方波串口代码显示图
通过串口助手的显示结果表明串口通信已实现,波形为方波。然后可以对单片机内部模拟的正弦波用类似的方法进行检测,显示结果表明波形为正弦波时串口通信同样已实现。
虚拟示波器设计整体实物图如图10所示。虚拟示波器设计完成后,可进行系统调试。调试过程中LabVIEW可能出现无法定位和加载VISA或其所需代码库的问题[16],可以安装相应的VISA驱动程序来解决。通过添加清除错误模块解决了VISA读取传输时发生帧错误的问题。
图10 虚拟示波器设计整体实物图
当输入信号是频率为1kHz、幅值为4V的正弦波时,PC机上LabVIEW程序显示结果和函数信号发生器显示对比如图11所示,图(a)虚拟示波器和图(b)函数信号发生器两者显示结果一致,虚拟示波器对正弦波的波形显示比较理想,无失真。
图11 输入1kHz、幅值为4V的正弦波时,(a)虚拟示波器和(b)函数信号发生器的显示结果对比图
类似地,当输入信号是频率为1kHz、幅值为4V的三角波和方波时,PC机上LabVIEW程序显示结果和函数信号发生器显示对比分别如图12和图13所示,在两图中,图(a)虚拟示波器和图(b)函数信号发生器的显示结果均保持一致,虚拟示波器对三角波和方波的波形显示比较理想,无失真。
图12 输入1kHz、幅值为4V的三角波时,(a)虚拟示波器和(b)函数信号发生器的显示结果对比图
图13 输入1kHz、幅值为4V的方波时,(a)虚拟示波器和(b)函数信号发生器的显示结果对比图
综合以上来说,系统调试结果表明:当输入频率为1kHz、幅值为4V的正弦波、三角波和方波信号时,虚拟示波器和函数信号发生器的显示结果都能保持一致,波形显示比较理想,无失真。说明针对此时来说,系统设计较合理。
若降低输入信号的频率,当输入信号是频率为10Hz、幅值为5V的方波时,PC机上LabVIEW程序显示结果和函数信号发生器显示对比如图14所示,两者显示结果一致。系统调试结果表明:当输入为较低频率信号时,虚拟示波器对方波的波形显示比较理想,无失真,此时系统设计较合理。
图14 输入10Hz、幅值为5V的方波时,(a)虚拟示波器和(b)函数信号发生器的显示结果对比图
若升高输入信号的频率,当输入信号是频率为5KHz、幅值为5V的方波时,PC机上LabVIEW程序显示结果和函数信号发生器显示对比如图15所示。系统调试结果表明:当输入为较高频率信号时,虚拟示波器对方波的波形显示失真比较严重,无法正确显示,说明此虚拟示波器设计只适用于较低频率范围的输入信号显示。
图15 输入5kHz、幅值为5V的方波时,(a)虚拟示波器和(b)函数信号发生器的显示结果对比图
本虚拟示波器设计结果还不够理想。由于受制于单片机的串口通讯速率,采集的信号只能是低频的,可以尝试采集频率更高的信号,但对硬件需要做一些调整。另外,能采集电压的幅度也受到了参考电压的限制,可以通过添加外电路来采集幅值更高的电压。
可以从两个方面对本虚拟示波器设计进行进一步研究和改进:(1)提高ADC的采样速率。针对单片机内ADC采样速率低、带宽窄,从而影响示波器分辨率和波形显示的问题,可以选用高性能的采集卡或ADC来搭建虚拟示波器。(2)使虚拟示波器具备网络功能。将虚拟示波器与网络及远程监控技术相结合,实现资源共享。随着嵌入式系统和PC技术的融合发展,示波器等虚拟仪器可以具备嵌入式和实时功能。
本文基于STC12C5A60S2单片机及LabVIEW平台,通过软、硬件设计实现对信号进行采集、处理和显示的虚拟示波器系统,能实现A/D转换模块对信号进行单通道连续采集,串口模块通过串口将数据实时传送至PC机上,实现对不同频率、不同幅度的波形进行显示与分析等功能。随着高速率A/D芯片和高性能ADC的发展和运用,安装有虚拟示波器等虚拟仪器软件的计算机,可作为多功能测量仪器站在网络上共享使用,具备低成本且高扩充性,在工业测试与自动化、航空航天和汽车等诸多领域都会有广阔的应用前景。