微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 测试测量 > Labview > 基于labview的简单虚拟示波器

基于labview的简单虚拟示波器

时间:10-02 整理:3721RD 点击:
 本文将介绍如何在LabVIEW下快速搭建基于MSP-060101的虚拟示波器和频谱分析软件。
一、硬件部分
  本文中所用到的MSP-060101是一款16bit、500ksps的单通道USB数据采集卡。它具有接口简单、量程可选(±1V与±10V)、速度快、精度高、驱动函数接口简单等优点,非常适合用来快速实现虚拟示波器和频谱分析功能。
  MSP-060101硬件连接非常简单,将采集卡插入PC的USB接口,按说明安装好驱动程序,就可以进行数据采集了,不需要外接电源和其他繁琐的设备。MSP-060101前端接信号的端口只有两个,分别接到差分输入信号的正端和负端即可,简单明了,一目了然。
二、底层函数
  连接好硬件,接下来了解该卡驱动函数的使用。该卡驱动函数只有两个,封装于MSP-16bitDAQCard.dll中,用户可通过调用DLL的方式来执行函数。函数定义如下:
int SetSampleRate (int SampleRate,  int DeviceNumber)
int GetVoltage(float *DataArray, int ArraySize, float mult, float Offset, int DeviceNumber)
  SetSampleRate 函数用来设置采集卡的采样率。其参数为 SampleRate(采样率,1K-500K范围内任意设置) 和 DeviceNumber(设备序号,同时支持10块采集卡)。
  GetVoltage 函数用来采集电压数据。其参数为DataArray(缓存数组)、ArraySize(缓存长度)、mult(增益系数)、Offset(偏移量)和DeviceNumber(设备序号)。
  这两个函数都有返回值,如果函数执行成功,则返回1,否则返回0。
  在LabVIEW中,是通过Call Library Function Node来调用DLL函数的。为了便于使用,我们将调用DLL的代码做成子VI函数,子VI主要有两个,即采集数据.VI 和 频率设置.VI。其内部程序框图如下:



三、软件编写
  编写好子VI,接下来的工作就是按照LabVIEW的程序设计方法来设计应用软件。本文以基本的示波软件为例,并结合频谱分析,示范如何利用LABVIEW的高效控件来编写测试软件。
  软件的整体设计思路大致如下:软件执行为一个无限循环,每次循环分为三个步骤,一是设置采集卡的采样率,二是连续采集一段长度的数据,三是进行数据分析。因此,程序的主体框架就是一个while循环内嵌套一个顺序结构。
  下面我们来看每次循环的第一个步骤,设置采样率。采样率的设置很简单,直接调用子VI即可。但为了让程序运行的稳定,防止由于采集卡无响应造成的程序死机,同时也使软件更人性化,在这里需要加入一个硬件检查报错机制。其思路是调用设置采样率的函数,如果采集卡硬件没有连好,或是硬件工作不正常,函数执行不成功,将返回0,则通过判断返回值是否为0,就可以判断采集卡硬件是否出现问题。如果出现问题,则向用户报错,提示用户检查硬件,并停止程序,不再向下执行。如果硬件正常,则继续执行数据采集程序。
  接下来是第二个步骤,采集一定长度的数据。这部分也较为简单,直接调用采集函数即可。数据采集的同时可以设置数据的增益系数和偏移量,以便获得更好的波形效果,也可以用来进行数据校准。
  对于一个数据采集软件来讲,重点在于第三个步骤,即数据的处理。本例中,目的是要显示一个稳定的波形,并对其频谱做初步的分析。这里将用到一个比较重要的功能,即软件的内触发。该功能是通过判断波形在某一个特定电平(触发电平)点上是上升还是下降(触发极性)来决定后续显示波形的起始点。经过内触发后,每次采集得到的波形都将从相同的电压点,按相同的变化趋势开始,因此对于周期变化的信号来说,波形就能较为稳定的重复出现,便于人们进行观察和分析。在本例中,内触发功能被做成了功能子VI,通过调用该VI就可以将波形进行软件触发。
  波形经过触发后,基本已经有了一个较为稳定的显示效果。接下来需要给波形数据加入时间特性。其方法是根据采样率算出采样间隔时间Δt,并通过建立波形的控件将Δt赋给波形数据。
  至此,我们已经得到了一个较为完整的显示波形,简单示波器的功能就已经实现了。
  想要给软件加上频谱分析的功能,在LabVIEW中也是很容易实现的。只需将我们前面得到的波形数据直接送入FFT函数中,就可以得到波形的频域数据。但为了便于分析,我们希望能自动从频域中提取信号的主频。其算法也很简单,就是由低到高依次扫描不同频率的功率分布值,找到最大值后,根据最大值所在的位置序号来推算主频。值得注意的是扫描时不能从频率0点开始,不然0频率可能对应的是最大的功率分布,一般要把前几个点排除在外。
  至此,软件的基本功能都已经完成,我们已经实现了一个简单的示波器软件。应用该软件,配合MSP-060101数据采集卡,就能够实现对信号的观察和分析了。
四、效果展示
  下图是采集效果的抓图,分别用信号源产生的100Hz正弦波和200Hz三角波来测试,效果还是让人比较满意的。




  本文所介绍了一个简单的虚拟示波器的组建,希望能对对于初学者有一定的启发,为朋友们编写自己的数据采集软件和组建自己的测试系统提供一点参考。

学习了,谢谢。

好东西

有没有高级的呢

要是有程序就更好了

学习学习

学习了

大神,这个程序图还在么?求一个!大神给指导啊!

好帖子

顶一下

啊呀,好东西

学习学习

谢谢!学习中!

呵呵,看一下

支持

学习ing
  谢谢

学习下~!

学习中

好玩意

求程序

波形图的X轴没法变,请问小编是怎样实现采样频率控制X轴的,急求
在下,先谢过了

顶起!

学习一下

学习中

xiexei

没有源程序么

给个源程序就好了

谢谢提供

学习无极限

thank太感谢了
好人
呵呵

果断学习啊!

,羡慕大神。

好是好,但是没有源程序啊

好东西
学习学习

谢谢,学习学习                              

热个人热个人过

这个不错哦!。

有源码就好了哦!

 本文将介绍如何在LabVIEW下快速搭建基于MSP-060101的虚拟示波器和频谱分析软件。
一、硬件部分
  本文中所用到的MSP-060101是一款16bit、500ksps的单通道USB数据采集卡。它具有接口简单、量程可选(±1V与±10V)、速度快、精度高、驱动函数接口简单等优点,非常适合用来快速实现虚拟示波器和频谱分析功能。
  MSP-060101硬件连接非常简单,将采集卡插入PC的USB接口,按说明安装好驱动程序,就可以进行数据采集了,不需要外接电源和其他繁琐的设备。MSP-060101前端接信号的端口只有两个,分别接到差分输入信号的正端和负端即可,简单明了,一目了然。
二、底层函数
  连接好硬件,接下来了解该卡驱动函数的使用。该卡驱动函数只有两个,封装于MSP-16bitDAQCard.dll中,用户可通过调用DLL的方式来执行函数。函数定义如下:
int SetSampleRate (int SampleRate,  int DeviceNumber)
int GetVoltage(float *DataArray, int ArraySize, float mult, float Offset, int DeviceNumber)
  SetSampleRate 函数用来设置采集卡的采样率。其参数为 SampleRate(采样率,1K-500K范围内任意设置) 和 DeviceNumber(设备序号,同时支持10块采集卡)。
  GetVoltage 函数用来采集电压数据。其参数为DataArray(缓存数组)、ArraySize(缓存长度)、mult(增益系数)、Offset(偏移量)和DeviceNumber(设备序号)。
  这两个函数都有返回值,如果函数执行成功,则返回1,否则返回0。
  在LabVIEW中,是通过Call Library Function Node来调用DLL函数的。为了便于使用,我们将调用DLL的代码做成子VI函数,子VI主要有两个,即采集数据.VI 和 频率设置.VI。其内部程序框图如下:



三、软件编写
  编写好子VI,接下来的工作就是按照LabVIEW的程序设计方法来设计应用软件。本文以基本的示波软件为例,并结合频谱分析,示范如何利用LABVIEW的高效控件来编写测试软件。
  软件的整体设计思路大致如下:软件执行为一个无限循环,每次循环分为三个步骤,一是设置采集卡的采样率,二是连续采集一段长度的数据,三是进行数据分析。因此,程序的主体框架就是一个while循环内嵌套一个顺序结构。
  下面我们来看每次循环的第一个步骤,设置采样率。采样率的设置很简单,直接调用子VI即可。但为了让程序运行的稳定,防止由于采集卡无响应造成的程序死机,同时也使软件更人性化,在这里需要加入一个硬件检查报错机制。其思路是调用设置采样率的函数,如果采集卡硬件没有连好,或是硬件工作不正常,函数执行不成功,将返回0,则通过判断返回值是否为0,就可以判断采集卡硬件是否出现问题。如果出现问题,则向用户报错,提示用户检查硬件,并停止程序,不再向下执行。如果硬件正常,则继续执行数据采集程序。
  接下来是第二个步骤,采集一定长度的数据。这部分也较为简单,直接调用采集函数即可。数据采集的同时可以设置数据的增益系数和偏移量,以便获得更好的波形效果,也可以用来进行数据校准。
  对于一个数据采集软件来讲,重点在于第三个步骤,即数据的处理。本例中,目的是要显示一个稳定的波形,并对其频谱做初步的分析。这里将用到一个比较重要的功能,即软件的内触发。该功能是通过判断波形在某一个特定电平(触发电平)点上是上升还是下降(触发极性)来决定后续显示波形的起始点。经过内触发后,每次采集得到的波形都将从相同的电压点,按相同的变化趋势开始,因此对于周期变化的信号来说,波形就能较为稳定的重复出现,便于人们进行观察和分析。在本例中,内触发功能被做成了功能子VI,通过调用该VI就可以将波形进行软件触发。
  波形经过触发后,基本已经有了一个较为稳定的显示效果。接下来需要给波形数据加入时间特性。其方法是根据采样率算出采样间隔时间Δt,并通过建立波形的控件将Δt赋给波形数据。
  至此,我们已经得到了一个较为完整的显示波形,简单示波器的功能就已经实现了。
  想要给软件加上频谱分析的功能,在LabVIEW中也是很容易实现的。只需将我们前面得到的波形数据直接送入FFT函数中,就可以得到波形的频域数据。但为了便于分析,我们希望能自动从频域中提取信号的主频。其算法也很简单,就是由低到高依次扫描不同频率的功率分布值,找到最大值后,根据最大值所在的位置序号来推算主频。值得注意的是扫描时不能从频率0点开始,不然0频率可能对应的是最大的功率分布,一般要把前几个点排除在外。
  至此,软件的基本功能都已经完成,我们已经实现了一个简单的示波器软件。应用该软件,配合MSP-060101数据采集卡,就能够实现对信号的观察和分析了。
四、效果展示
  下图是采集效果的抓图,分别用信号源产生的100Hz正弦波和200Hz三角波来测试,效果还是让人比较满意的。




  本文所介绍了一个简单的虚拟示波器的组建,希望能对对于初学者有一定的启发,为朋友们编写自己的数据采集软件和组建自己的测试系统提供一点参考。

学习了,谢谢。

好东西

有没有高级的呢

要是有程序就更好了

学习学习

学习了

大神,这个程序图还在么?求一个!大神给指导啊!

好帖子

顶一下

啊呀,好东西

学习学习

谢谢!学习中!

呵呵,看一下

支持

学习ing
  谢谢

学习下~!

学习中

好玩意

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top