测试测量实验
直流电压表的设计
一、实验目的
1. 理解双积分A/D转换器7109及数字电压表的工作原理。
2. 掌握直流电压表的界面设计和软件设计。
3.测量数据的误差分析。
二、实验任务和内容
1. 设计一个直流电压表,设计要求为
(1)测量量程分为200mV、400mV、800mV、2V、4V、8V;
(2)测量分辩率为12bit;
(3)测量对象可选择为可调电位器的输出或外部电压
2. 设计完成后,用电压表不同量程进行测量,求相对误差。
三、实验器材
1. 计算机(具有运行windows2000和图形化控件的能力) 1台
2. SJ-8002B电子测量实验箱 1台
3. Q9连接线 1根
4. 4 1/2数字万用表 1台
四、实验原理
1、直流电压表原理
直流电压表的测量原理是,被测模拟直流电压经输入放大后,经A/D转换器为数字量,通过计算机的EPP接口传到计算机进行数据处理,将测量结果显示在计算机屏幕上。本实验使用“SJ8002B电子测量实验箱”的双积分A/D转换器7109完成直流电压的数字化转换,采样 PC机的虚拟仪器软件平台(LabVIEW)完成界面设计和软件设计,实现直流电压的数字化测量。测量原理如图1所示
图1 直流电压测量原理框图
4.2 A/D7109的接口工作原理
本实验双积分A/D转换器ICL7109实验威廉希尔官方网站 图。
图2 双积分式A/D转换器7109测量电压原理图
ICL 7109 是双积分式12 位A/D转换器,转换时间由外部时钟周期决定,为10140/58个时钟周期。其主要引脚定义如下:
① B1~B12:12bit的数据输出端
②OR:溢出判别,输出高电平表示过量程;反之,数据有效。
③POL:极性判别,输出高电平表示测量值为正值;反之,负值。
④MODE:方式选择, 当输入低电平信号时,转换器处于直接输出工作方式。此时可在片选和字节使能的控制下直接读取数据;当输入高电平时,转换器将在信号信号握手方式的每一转换周期的结尾输出数据(本实验选用直接输出工作方式)。
⑤REF:外部参考电压输入(本实验用其典型值:2.048V)。
⑥INL,INH:输入电压端口(有效范围是参考电压的2倍)。
⑦OO,OI:外部时钟输入(本实验用其典型值:3.579MHz)。
⑧RUN/HOLD_:运行/保持输入, 当输入高电平时,每经8192时钟脉冲完成一次转换;当输入低电平时,完成正在进行的转换,并停在自动调零阶段
⑨STATUS:状态输出,输出高电平,表明芯片处于积分和反向积分阶段;输出为低电平,表明反向积分结束,数据被锁存,模拟部分处于自动返回零态阶段。
⑩CE/LOAD_:片选,当其为低电平时,数据正常输出;当其为高电平时,所有数据输出端(B1~B12、POL、OR)均处于高阻状态。
⑾LBEN_:低字节使能,输入低电平时,数据线输出低位字节B1~B8。
⑿HBEN_:高字节使能,输入低电平时,数据线输出高位字节B9~B12及POL、OR的状态值。
A/D7109转换时序:ICL7109直接接口方式的定时图如图3所示。
图3 7109转换时序
7109的A/D转换关系为:
(1)
式中, —— A/D转换器输入电压;
—— A/D转换结果的12bit数字量;
—— A/D转换器外部参考输入电压,调节为=2.048V;
由式(1)可知,若=2.048V ,则即为以mv单位表示了,即
4.3 输入通道威廉希尔官方网站
外部待测直流电压信号从实验箱的DCin的Q9接线端输入如图3。另外,实验箱上提供了通过电位器调节的-4.096V-+4.096V的直流电压。由于实验中双积分式A/D转换器7109的输入电压范围为:-4.096V-+4.096V,为了较好的适应A/D转换器的输入范围,不同大小的待测模拟电压信号需经过不同的增益进行信号放大。增益的选择由计算机发出信号控制模拟开关选择。
图4 实验连接图
4.4 实验原理图
实验箱提供直流电压测量威廉希尔官方网站
原理图如图4所示
图5 直流电压测量威廉希尔官方网站
原理图
五、设计指导 在实验设计之前应认真思考设计任务要求,仔细阅读实验原理。
5.1功能与前面板设计
虚拟直流数字电压表主要完成对电位器或外部直流电压的测量与显示。因此,在虚拟仪器界面上需有测量对象的选择功能。为了适应不同大小的待测模拟电压信号,还应有测量量程选择功能,量程设置10档: 40mV、80mV、200mV、400mV、800mV、2V、4V、8V(对应增益:×100 、× 50、× 20、×10、×5、×2、×1、×0.5),量程缺省值设为8V。界面上设置有超量程指示灯,当测量溢出时,超量程指示灯点亮。测量结果同时进行表盘和数字显示,并通过实验箱上的七段LED显示出来。此外,界面上还需设置测量的启动和退出测量功能。
图5为前面板设计的参考。
图6 虚拟直流数字电压表面板
前面板控件说明如表1:
表1 前面板控件
控件类别 |
序号 |
名称 |
控件在控件模板中的位置 |
注释 |
指示类 |
(1) |
电压显示表盘 |
All controls>Numeric>Meter |
设置电压表的显示量程属性,对不同测量量程进行显示控制 |
(2) |
超量程指示灯 |
LEDS>Round LED |
溢出时点亮 | |
(3) |
电压数字显示框 |
Num Indis>Numeric Indicator |
设置显示量程属性,对不同显示位数进行控制 | |
测量选择类 |
(4) |
量程选择旋钮 |
Num Ctrls>Dial |
用于选择测量量程 |
(5) |
测试对象选择开关 |
AllControls>Classic Controls>Classic Boolean>HorizontalSwitch |
选择测试对象 | |
程序控制类 |
(6) |
退出 |
Buttons>OK Button |
控制程序退出 |
(7) |
测量 |
Buttons>Push Button |
控制程序开始 |
5.2程序设计指导
SJ8002B电子测量实验箱通过EPP接口和计算机主机相连,通过EPP接口操作实验箱的双积分A/D转换器7109的操作步骤依次是,EPP接口的初始化、EPP接口的读数检查、 启动A/D7109转换、读取转换数据、数据的显示处理。本程序设计的主要实现已经做成底层fp函数(用Labwindows/CVI实现),在程序设计时可直接调用实验箱提供的驱动函数动态链接库(即cvidll.dll函数),驱动函数原型及常数和变量在cvidll.prj中。
1.程序流程图
整个程序采取顺序结构,整个设计思路流程图如下:
图7 直流电压表程序流程图
2.动态链接库调用
实现直流电压测量的驱动函数如表2所示:
表2直流电压测量的驱动函数
序号 |
fp函数 |
实现功能 |
输入参数 |
输出参数 |
返回值 |
动态链接图标 |
1 |
void __stdcall epp_init(void) |
初始化EPP接口 |
无 |
无 |
无 |
|
2 |
int __stdcall epp_read_check (void) |
EPP读数检查 |
无 |
无 |
0:EPP可正常读数;1:EPP不能读数 |
|
3 |
int __stdcall run_7109 (unsigned char m_what, unsigned char gain_cw,double vref, double *rult) |
运行7109,实现7109的读数及转化 |
m_what:测试对象控制字 |
rult:测量结果 |
0:读数有效;2:读数无效,正溢出;3:读数无效,负溢出;4: EPP不能读数 |
|
4 |
void __stdcall amp_7109 (unsigned char gain_cw, double *gain, int *showdot) |
根据量程设置增益和显示位数 |
gain_cw: 量程控制字 |
gain:量程的增益 howdot:该量程的有效位数(V为单位,showdot为小数点后的位数) |
无 |
|
5 |
void __stdcall? indicator_7109 (unsigned char gain_cw, double *indicator_gain,double *indicator_max) |
根据量程设置7109输入增益,电压表表最大显示数字 |
gain_cw: 量程控制字 |
gain:量程的增益 |
无 |
|
6 |
void __stdcall start_7109 (void) |
启动7109 |
无 |
无 |
无 |
|
7 |
int __stdcall led_display(double display_data) |
LED显示 |
display_data:显示数据 |
无 |
成功执行后,返回值为0 |
在直流电压驱动函数中,调用参数gain_cw(量程控制字,用10进制数表示)与程序设计的量程档和运放的实际增益有如表3所示的一一对应关系。由于7109的输入电压为4V,故每档量程对应的增益与量程之乘积应为4V。
表3 量程选择控制字的设置
量程 |
8V |
4V |
2V |
800mV |
400 mV |
200 mV |
80 mV |
40 mV |
gain_cw |
16 |
17 |
18 |
19 |
33 |
34 |
35 |
49 |
gain |
0.5 |
1 |
2 |
5 |
10 |
20 |
50 |
100 |
测试对象控制字由测试对象选择开关决定,由于测试对象只有两种(电位器输出电压和实验箱外部输入电压),故将选择开关设置为布尔量,由一个程序选择结构根据开关的值来决定测试对象控制字的值,具体对应关系如表4所示
表4 测试对象选择开关与测试对象控制字和测试对象对应关系
测试对象控件位置选择 |
布尔值 |
测试对象控制字 |
测试对象(m_what) |
左边 |
FALSE |
50 |
电位器输出电压 |
右边 |
TRUE |
1 |
实验箱外部输入电压 |
动态链接调用举例:以调用int ?led_display(double display_data)为例
在block panel中点击右键:All functions>Advanced>Call library function node.
图8 动态链接调用界面
双击图图标,将出现如图9所示
图9 动态链接调用
此时可根据调用函数的路径,参数及名称进行设置进行得到图10
图10 动态链接设置
这样就完成了动态链接的调用及设置。
3.框图程序设计
(1)整个程序要求由 “退出”按扭来控制程序的运行与否,因此主框架可以设计为structure中的while循环。由“测量”控制测量与否。
(2)由于Labview特性是顺序流程,因此,循环内部可以设计为顺序结构。即使用structure中的flat sequence case。整个设计流程分为EPP初始化:调用动态链接实现,函数无返回值,启动7109:调用动态链接实现,函数无返回值,EPP读数检查:由函数返回值判断EPP读数是否成功,当EPP读数成功时进入下一步否则将“测量”键弹起,停止程序。
(3) 运行7109:用case结构实现量程和测量对象的选择,作为动态链接函数run_7109的输入,然后把run_7109的输出分别接到表盘和数字显示,并作为led_display的输入,进行led显示。根据7109的返回值判断,当其等于2或者3时,表示超量程,则点亮超量程指示灯。
根据采集数据和计算结果,显示在相应的显示窗口。根据被测信号数值,可验证双积分式AD原理和直流电压测量的关系。
六、调试和测试结果
直流电压表设计完成后,可使用直流电压表完成直流电压的测试,以验证设计是否正确。测试对象可选为“待测电压”和“电位器(电压)”。当选择电位器(电压)时,即测量虚拟仪器实验平台左下脚电位器的电压,可用万用表在实验箱的“TEST”点监测。当选择待测电压时,即可测量外加直流电压(由于虚拟直流电压表的最大量程为±8V,因此建议使用的直流电压小于±8V)。
1、调节电位器输出不同大小的直流电压信号,用虚拟数字直流电压表对其进行测量,量程选择为4V档。同时使用万用表测试输入电压,作为电压标准值,记录测量值,并填入表5中,对测量结果进行比较和分析,求出绝对误差和相对误差。
调节电位器输出 |
-4V |
-3V |
-2V |
-1V |
0V |
1V |
2 V |
3V |
4V |
标准电压值 |
|
|
|
|
|
|
|
|
|
测试数据 |
|
|
|
|
|
|
|
|
|
绝对误差 |
|
|
|
|
|
|
|
|
|
相对误差 |
|
|
|
|
|
|
|
|
|
表5
2、调节电位器输出一个固定大小的直流电压信号,用万用表测试作为标准值,用虚拟数字直流电压表的不同量程档进行测量,测试结果填入表6内,对测量结果进行比较和分析,求出绝对误差和相对误差。
表6
标准电压值 |
| |||||
量程 |
200mV |
400mV |
800mV |
2V |
4V |
8V |
测试数据 |
|
|
|
|
|
|
绝对误差 |
|
|
|
|
|
|
相对误差 |
|
|
|
|
|
|
七、思考和练习
7109的输入参考电压对A/D转换结果有何影响?如A/D转换结果偏大,应如何调节参考电压?
全部0条评论
快来发表一下你的评论吧 !