华中科技大学 测控技术与系统实验报告 下载本文

2013-2014学年度第二学期

测控技术与系统实验报告

——电压校准、热电阻测温

院 系: 自动化学院 专业班级: 测控1102班

指导老师: 黄为 实验成绩:

实验一 电压测量基本实验

一、实验目的

熟悉CKXT-I 的系统开发方法; 熟悉Keil C 软件开发环境;

熟悉CKXT-I型综合实验仪的电压测量的基本功能。

二、基本原理

利用综合实验仪的模拟通道可实现高精度的电压测量。

综合实验仪采用的100ksps12位分辨率的逐次逼近寄存器型ADC,这种类型的A/D 转换器由一个比较器和DA 转换器通过逐次比较逻辑构成,从MSB 开始,顺序地对每一位将输入电压与内置DA 转换器输出进行比较,经n 次比较而输出数字值。其电路规模属于中等。其优点是速度较高、功耗低。综合实验仪的内部芯片C8051F005 包括一个逐次逼近寄存器型AD。其基本模拟输入转换通道的结构如图1.1 所示。模拟通道包括多路模拟开关(AMUX),可编程增益放大器(PGA),12位逐次逼近型A/D 转换器等。

图1.1 ADC 接口

三、实验内容及设备

实验内容:取一直流电压(如CSY-3000 应变电桥实验模块的输出),接入CKXT-I 实验仪的主模拟输入通道,编程实现该直流电压的测量,获得测量数据并进行分析。

实验设备:CSY-3000 实验仪;CKXT-I 型综合实验仪;信号源;万用表。

四、实验步骤

1、在CSY-3000 实验仪上找出电压输出接口,用导线分别将其接入CKXT-I 型综合实验仪的电压采集端口AD0 和AGND 端口。

2、在本次试验中,为了获得较高精度,采用电压采集输入端口AD0采集模拟电压信号。 3、在CSY-3000 实验仪上找出电压表测量输入接口,将CSY-3000 实验仪上测得的电压值作为参考标准电压,将CKXT-I 型综合实验仪作为待标定的电压。

分压网络与接线图

说明:

1、CKXT-I 型综合实验仪按要求接线,其中AD0端口用于采集模拟电压信号。 2、分压网络a端接CSY-3000实验仪上2V标准输出电压,所有接地端接到一起。 3、编程,采集并记录测量得到的电压值

4、改变滑动变阻器的阻值,得到不同电压值用于标定CKXT-I 型综合实验仪上的电压关系。实验中通过采集模拟1V和1.5V电压,通过拟合线性关系得出电压值并通过数码管显示。

5、标定之后比较实际电压值与单片机显示电压值进行比较观察误差。

五、实验现象和结论

通过按照实验电路图进行接线,并通过keil软件与CKXT-I 型综合实验仪进行调试后,CKXT-I 型综合实验仪在电压校准后数码管上显示的电压值与实际电压值的误差为0mm或者1mm,说明测量误差控制在很小的范围内,达到电压测量的目的。

六、核心程序注释

// CKXT-I 型综合实验仪上4个按键的控制功能配置的程序

while(1) { //对采集到的温度值进行标定 if(KEY0 == LEFT_KEY) // 在电压为1V时按左键采集记录

{ }

KEY0 &= 0;

AD_INL= GetADCResult(0);

if(KEY0 == RIGHT_KEY) // 在电压为1.5V时按子右键采集记录 { KEY0 &= 0; AD_INH= GetADCResult(0); }

voltL = AD_INL*2500.0/4096; // 将电压为1V时的AD值转化为电压值 voltH = AD_INH*2500.0/4096; // 将电压为1.5V时的AD值转化为电压值

for(i=0;i<100;i++) // 进行100次采样

{ AD_IN = GetADCResult(0); //采集实时电压输入点 voltM = AD_IN*2500.0/4096; //将AD值转化为电压值 volt+=(voltM-voltL)*500/(voltH-voltL)+1000; // 对采集到的电压值进行修正 } volt=volt/100; // 求取100次采样的平均值 if(KEY0 == MID_L_KEY) // 按中左键显示进行100次采集平均后的电压值 { KEY0 &= 0; disp_flag = 0; DisIntNum(volt); volt=0; } if(KEY0 == MID_R_KEY) // 按中右键配置参数disp_flag { KEY0 &= 0; disp_flag = 1; } if(disp_flag) // 当disp_flag为1,即按中右键后显示当前电压值 { DisIntNum(AD_IN); } else // 当disp_flag为0,即按其他键时,显示100次采样平均后电压值 { DisIntNum(volt); CH452_Write(CH452_SET_BIT + 0x003b); //显示小数点 volt=0; } }