测试测量实验
虚拟数字交流电压表设计
一、实验目的
1. 了解交流数字电压表的测量原理。
2. 掌握交流电压测量的基本方法。
3.掌握虚拟交流电压表的LabView软件设计。
4. 测量数据的误差分析。
1.设计一个虚拟数字交流电压表界面和软件,符合以下要求:测量电压范围峰值100mV~25V, 频率1Hz~100KHz,可测量正弦波、三角波、方波信号的峰值、有效值、平均值,可对多种波形的信号进行测量,如正弦波、方波、三角波等。
2. 使用设计的交流电压表测量正弦波、三角波、方波信号的幅值。
1. 计算机 1台
2. SJ-8002B电子测量实验箱(817V4.5) 1台
3. SAMPO(FG1617)函数信号发生器(1Hz~1MHz) 1台
4. TEK(TDS2012)双踪示波器(20MHz以上的模拟或数字示波器) 1台
传统的交流电压测量技术,大都是采用把交流电压变换成直流电压(AC/DC变换)后进行测量,即交流电压通过检波器后测量其直流电压或电流。由于直流电压及电流测量准确度可做的很高,因此交流电压测量的准确度在很大程度上取决于检波器的性能。使用检波器类型不同,有峰值,均值,有效值方式的电压表,各种方式的电压表对不同的交流电压波形(如正弦波,三角波和方波)的响应不同,欲测量电压,往往有波形影响的误差。
图1
一个交流电压的大小,可以用有效值U,峰值,平均值等表征,若被测电压的瞬时值为,则
全波平均值为
(1)
有效值为
(2)
波形因数为 (3)
波峰因数为 (4)
几种典型电压波形的U、、之间的换算关系见表1。
表1
波形 测量值 |
正弦 |
方波 |
三角 |
有效值 |
A-1 |
A-3 |
A-4 |
峰值 |
A-1 |
A-3 |
A-4 |
平均值 |
- |
-3 |
A-4 |
本实验采用了与传统方法完全不同的交流电压测量的方法,它基于高速的A/D转换技术测量出交流电压的波形瞬时值,传给计算机,由计算积按照式(1)~(3)进行计算,得到交流电压的各种特征值。
本实验系统基于虚拟仪器构建的流数字电压表通过实验箱内的数据采集来实现的。被测的模拟电压通过数据采集得到的离散的数字信号,由PC机运行虚拟仪器软件按各种电压的定义计算出被测电压的有效值、均值或峰值。
离散信号的电压平均值及峰值的数学表达式如下所示:
电压有效值: (5)
电压平均值: (6)
电压峰-峰值: (7)
在上面各式中,其中N为整周期倍数的采样点总数,VK为第K次采样值。
与传统的模拟电压表相比,被测电压的瞬时值数据量化更实时准确,而且很容易实现存储、传输、处理等。在对交流电压的测量,根据奈奎斯特采样定理,采样速率必须是信号最高频率的两倍以上,采样频率越高,时间轴上的信号分辨力就越高,所获得的信号就越能反映原始信号的瞬时变化值。电压测量的分辨率取决于A/D采样器件的位数。
Ain1通道接入同样的采样时钟,同时进行转换。转换后的数据经过缓冲器,送至SRAM锁存。当一次采集完成后,由主机读回数据,进行进一步的处理,如滤波、显示等。
数据写入:AD9288在采样时钟CLK的控制下,将两路输入模拟信号数字离散为8bit数字信号经过数据缓冲器送至SRAM。地址由同一个地址计数器提供,该地址计数器为加/减计数器(采集数据时递增,读取时递减)。这样,每次采集所得数据都会顺利的存入SRAM中。
2.交流电压表的相关参数
下面主要介绍一下每个电压表的档位对应的通道增益放大倍数,由于此电压表分为了6档,因此对应的关系如下表所示。
表2
DIV序号 div |
2 |
5 |
6 |
7 |
8 |
9 |
峰值量程 |
0.1 |
1 |
2.5 |
5 |
10 |
25 |
通道总增益理想值 |
5 |
0.5 |
0.2 |
0.1 |
0.05 |
0.02 |
由于选用的A/D输入范围为1V,再考虑适当的过载的情况的话,
以及对应的秒格序号(总的采集点数5000点):
表3
秒格序号 |
1 |
7 |
12 |
15 |
18 |
秒格范围(Hz) |
1k~1M |
10k~100k |
1k~10k |
100~10k |
1~100 |
选用这些秒格序号的原因是,设采样频率为fs,总采样点数为N,被测信号频率为fx,则被测信号每周期采样点数M=fs/fx,总的采样点数为N时,信号周期数K=N/M=Nfs/fx.测量时,采样的周期数>2,每周期采样点数>100为好。
五 设计指导
本实验基于“SJ8002B电子测量实验箱”的高速数据采集和基于PC机的虚拟仪器软件平台(LabView)构建,实现交流信号电压和波形的测量,完成“虚拟存直流电压表”的设计。SJ8002B的采集通道性能的控制。
1.功能与前面板设计
虚拟直流电压表主要完成的是对信号发出的数据的采集和处理,并将其显示在LabView的前面板上。因此,在虚拟直流电压表的前面板上需要有峰值量程,频率范围,三组电压值显示,电压值的指针显示,采集波形显示,量程和频率出错判断。。根据SJ8002B高速数据采集的性能指标,我们使用了峰值量程的其中的六个档位,分别为:100mV,1V,2.5V,5V,10V和25V,频率范围分为了:1Hz-100Hz,100Hz-1KHz,1KHz-10KHz,10KHz-1MHz。此外,界面上还有运行和退出控件,主要是执行测量电压值的控制和退出面板的控制。
软件流程如下所示:
启动虚拟仪器labview软件开发环境,建立新的工程文件,打开front Panel设计界面,并存储,由界面文件自动生成相关流程图框架。
本程序用到的前面板控件有:
表 4
控件类别 |
控件名称 |
位置 |
注释 |
指示类 |
峰值显示 |
Controls>numeric>indicators |
用于显示峰值 |
有效值显示 |
用于显示有效值 | ||
平均值显示 |
用于显示平均值 | ||
波形显示 |
用于显示采集波形 | ||
电压值指针显示 |
用指针显示三类电压值 | ||
超量程显示 |
用于显示超量程出错 | ||
欠量程显示 |
用于显示欠量程出错 | ||
频率错显示 |
用于显示频率出错 | ||
测量控制类 |
峰值量程选择 |
Controls>numeric control>dial |
用于控制峰值量程 |
频率范围选择 |
用于控制频率范围 | ||
程序控制类 |
开始/停止 |
Buttons>OK Button |
控制程序的开始与停止 |
退出 |
Buttons>Stop Button |
控制退出程序面板 | |
面板装饰类 |
面框 |
All controls-decorations |
使得面板更加美观 |
3 动态链接库的调用
本程序设计的主要实现已经做成底层fp函数(用Labwindows/CVI实现),在程序实现时可直接调用实验箱提供的驱动函数动态链接(即.dll函数),驱动函数原型及常数和变量在control_channel.prj中。程序设计时,应加入动态链接control_channel.dll。
实现虚拟直流电压表的驱动函数如表5所示:
表 5
Fp函数 |
实现功能 |
输入参数 |
输出参数 |
返回值 |
动态链接图标 |
Void epp_init(void) |
初始化EPP端口 |
无 |
无 |
无 |
|
Void div_control (int div, double *gain, unsigned char *div_cw) |
采集通道增益控制 |
Div:伏格序号 |
Gain:该伏格的通道增益量 |
无 |
|
Void DC_control (int sampling_channle,int DC_code) |
直流偏置设置 |
Sampling_channel采集通道(控制序号为0,1) |
无 |
无 |
|
Void timebase_control (int timebase, unsigned char *fr_cw, double *show_pots,double *sampling_fr) |
采集时基控制 |
Timebase:秒格序号 |
Fr_cw:采集时钟控制字 |
无 |
动态链接调用举例: int led_display(double display_data):
在block panel中点击右键:All functions>Advanced>Call library function node.
图 2
双击图图标,将出现如图3所示
此时可根据调用函数的路径,参数及名称进行设置进行得
4. 子VI的编写与调用
本程序除了调用了动态链接库以外还编写并调用了多个子VI,使得整个程序更加的紧凑和完善,子VI编写过程和整个程序的编写都是相同的。但不同的是在子VI的程序做好后要对其做输入和输出的引脚,以便在调用子VI的时候就能够方便的进行程序的编写。本程序在编写中主要调用了以下的几个子VI程序,如表6
表 6
Fp函数 |
实现功能 |
输入参数 |
输出参数 |
返回值 |
注释 |
sampling (unsigned char coupling1_cw, int div1, int DC1_code,unsigned char coupling2_cw, int div2, int DC2_code,int timebase, unsigned char tri, int sampling_points,int Panel_Handle, int stop_ID,unsigned char ain1_data[], unsigned char ain2_data[],double *show_pots); |
在虚拟交流电压表上对采集的波形的显示以及得到的数据送出进行数据的处理 |
coupling1_cw,coupling2_cw :Ain1,2通道耦合方式控制字(01表示交流耦合,00表示直流耦合)。 |
ain1_data[]Ain1的采集值 ain2_data[]Ain1的采集值;采集的数据的类型是U8,即8位无符号整形 |
Err: |
|
processing_data (unsigned char data[],int points,unsigned char coupling_cw,int div,int timebase, double *signal_fr,double *vp, double *vm, double *ve); |
进行数据的处理,并输出相应所求的值 |
data[] 采集的数据 |
signal_fr 信号频率Hz |
Err: |
|
Void process_vs_AC (unsigned char data[], int n, int m,int div, double *vp,double *vm, double *ve) ; |
用于计算交流耦合方式下峰值、均值和有效值 |
data[] :信号数据 |
Vp :峰峰值 |
无 |
|
Int amp_OK(unsigned char data[],int points, unsigned char v_min) |
主要用于判断电压表读数是否超量程、欠量程等情况 |
data[] :信号数据 |
无 |
0: OK,伏格选择合适2 :增益太大,应增大伏格序号(div),以减小通道增益 |
|
六、实验步骤
(1)按图5所示各输入输出接头连接实验系统。
(2)测量内部DDS信号源输出的交流电压:
图 5
交流数字电压表的输入信号有两种接法:(1)测外部信号发生器输出的交流电压,如图5所示的①,由外部的信号发生器连接Ain1的BNC插头;一种是如图5所示的②,由实验箱内的信号源Aout1(或者Aout2)连接实验箱内的采集通道输入Ain1的BNC接头;同时可用示波器监测输入信号的幅度和频率,以便对测量结果进行对照和比较。
软件调试:
首先对软件的功能性测试,可以看到面板上有三组指示灯,超量程、欠量程和频率出错的指示。在这里可以分别对三组指示等分别测试功能是否正确。
对超量程,首先输入一个较大的信号,如5V峰值的正弦波,而虚拟交流电压表则选择幅格低于5V的档位来进行测量,这时可以看到超量程的指示灯亮起,这就说明这个软件实现了超量程判定的功能。
同理,对于欠量程功能的判定,我们也可以选取一个400mV的正弦信号,而幅格则用5V/div的档位。这时如果欠量程的指示灯亮起,则说明欠量程测量功能实现。
对于频率出错,我们可以选用一个5KHz的电压,而频率范围我们则选用在非5KHz的范围,则可以看到频率出错指示灯亮。这时说明这个功能也成功实现。
然后按照交流电压表实验运行交流电压表程序进行电压值的测量.
图6 虚拟交流数字电压表面板
使用说明:
表7
波形 |
有效值 |
峰值 |
平均值 | ||||||
参考值 |
测量值 |
误差 |
参考值 |
测量值 |
误差 |
参考值 |
测量值 |
误差 | |
正弦 |
|
|
|
|
|
|
|
|
|
三角 |
|
|
|
|
|
|
|
||
方波 |
|
|
|
|
|
|
|
|
|
图 7
图8
图 9
(2) 由外部信号源输出不同频率、峰值为1V的正弦(三角波、方波)电压信号,用虚拟交流数字电压表测量其有效值、平均值,并与理论值比较做误差分析,并将测量和计算结果填入表8
表8
正弦波频率 |
50 Hz |
500 Hz |
5kHz |
50kHz |
500kHz |
1MHz | |
有 |
参考值 |
|
|
|
|
|
|
测量值 |
|
|
|
|
|
| |
误差 |
|
|
|
|
|
|
图 10
表9
正弦波幅度 |
500 mV |
1V |
2V |
4V |
8V | |
有 |
参考值 |
|
|
|
|
|
测量值 |
|
|
|
|
| |
误差 |
|
|
|
|
|
全部0条评论
快来发表一下你的评论吧 !