基于单片机数据采集
- 格式:doc
- 大小:382.00 KB
- 文档页数:6
基于单片机的短样测试数据采集系统的设计
2010-02-09 16:28:48 作者:郭飞武玉来源:微计算机信息
关键字:单片机数据采集程序设计Keithley-2182纳伏表
1.引言
中科院合肥分院等离子所超导电工中心基于ITER(国际热核聚变反应堆)项目,需要对超导短样股线进行失超极限测试(强磁场,4.2K液氦温度下),为此笔者设计了一套短样测试数据采集系统,对短样测试中超导股线的电流、电压、温度进行采集并实时分析和保存。
在短样测试实验中,电流信号变化范围0至1000安培,设计使用100:1直流分流器转换为0至10伏电压信号接入采集系统。
温度信号通过电阻温度计获得,短样股线在极低温(4.2K)情况下进入超导状态,普通电阻温度计无法测量这个区间的温度,所以选用了美国LAKESHORE公司的CERNOX电阻温度计。
CERNOX电阻温度计由metal-oxy-nitride 材料制成,具有负的电阻温度系数,在液氦温区灵敏度很高(103Ω/K),受磁场影响小(在4.2K温度6T磁场下,误差0.2%),稳定性好。
采集系统采用四线法测量温度计电阻,CERNOX电阻温度计工作电流10微安,两端输出电压为10毫伏级,必须使用仪表放大器放大100倍才能符合采集系统精度要求,放大器选用INA110KP芯片。
在短样测试中至关重要的信号为短样股线电压信号,要求精确到10纳伏,市场上现有采集卡无法胜任,此外为了消除串扰,电压信号需要独立采集,所以系统选用了Keithley-2182纳伏表。
下面是采集系统硬件结构图。
2.下位机系统设计
下位机1采用8位微处理器AT89S52,AT89S52 是一种低功耗、高性能CMOS 8位微控制器,与工业80C51产品指令和引脚完全兼容。
AT89S52具有以下标准配置:8K字节Flash,256字节RAM,32位I/O口线,2个数据指针,三个16位定时器/计数器,一个
6向量2级中断结构和全双工串行口。
A/D转换芯片采用美信公司的MAX197。
MAX197是美信公司推出的8通道、12位高速A/D转换芯片。
芯片采用单一电源+5V供电,单次转换时间6?s,采样速率可达100ksps。
量程±10V , ±5V ,0V~10V , 0V~5V,内部自带4.096V 参考电压源。
它有标准的微机接口,数据总线的时序与绝大多数通用的微处理器兼容,全部逻辑输入和输出与TTL / CMOS电平兼容。
采集系统中,MAX197采用外部时钟源,CLK引脚接单片机ALE引脚,单片机时钟晶振11.0592MHZ,ALE引脚输出时钟为晶振的六分之一约为2MHZ,符合MAX197要求。
单片机P0.0至P0.7引脚与MAX197的D0至D7连接,MAX197的片选信号CS连接单片机P2.0引脚,HBEN引脚接单片机P1.1引脚,INT引脚接单片机P1.2引脚,MAX197芯片地址为0X0FEFFH。
选用内部参考电压,REF引脚通过4.7UF电容旁路接地,REFADJ 引脚通过0.01UF电容旁路接地。
模拟信号输入量程选择为0到10V,使用内部采集方式,MAX197控制字为0X10。
测试系统使用2个通道CH0,CH1采集电流信号,温度信号。
下面是下位机1接口电路图
单片机采集子程序:
void scan_ch(void) { P2^0=0; // CS片选信号有效P1^2=1; uchar
i,ch_low,ch_high,control; for(i=0;i<2;i++)
{control=0X10+i; //给出控制字和通道选择XBYTE[0X0FEFF]=control; // 写控制字产生一个WR脉冲,开始采集while(P1^2==1) {;} //等待采集结束信号,P1.2为0时结束
P1^1=0; //低电平获取低8位数据ch_low=XBYTE[0X0FEFF]; P1^1=1;
ch_high=XBYTE[0X0FEFF]&0X0F; //获取高4位数据chan_data[i]= ch_high *256+ ch_low; //将数据存入数组}
start_ch=0; //一轮采集结束}
设置单片机允许串口中断,波特率19200,数据位8位,无奇偶校验。
当下位机1通过串口接收到采集允许信号后,系统进行一轮采集,并把数据通过串口发送给上位机。
采集系统使用MAX232芯片进行串口电平转换。
单片机串口初始化:
void init_serial(void)
{//定时器1的工作方式2 TMOD=0X20; TL1=0Xfd; //装载计数初值TH1=0Xfd; SCON=0X50; //采用串口工作方式1,无奇偶校验PCON=0X80; //串口波特率加倍波特率19200 IE=0X90; //开总中断,开串口中断TR1=1; //启动定时器1
}
单片机串口发送数据:
void data_send(void) { uchar i; EA=0; //关中断for(i=0;i<SIZEOF(SEND_TXT);I++)< P>
{ //send_txt字符串由每个chan_data[i]的两个字节转换而来SBUF=send_txt[i]; //按字符顺序发送while(TI==0); TI=0;
}
EA=1; //开中断} 下位机2采用Keithley-2182纳伏表,支持单路模拟输入信号,分辨率为1纳伏,采用IEE-488接口与计算机相连,支持GPIB协议。
GPIB是一种工程控制用协议,昀初由HP公司提出,目前成为一种国际标准,遵守的协议为IEEE488。
可以使用任何编程语言如VB、VC和LabVIEW实现电脑对仪器的控制。
系统中通过GPIB桥接卡与上位机连接。
Keithley-2182纳伏表在保证精度下采集速度昀快可达每秒18个。
下面是采集系统总体流程图。
3.上位机程序设计
上位机采用LabVIEW开发环境,LabVIEW是新一代G语言编程软件,适宜于仪器控制和数据采集,程序使用状态机结构,分为五个状态:设置,采集,保存,分析,显示。
采用多线程技术,三个工作线程:数据采集显示线程,实时分析线程,数据保存线程。
在三个线程之间采用Queen队列传递数据。
Queue队列,先进先出结构,协调三个线程运行,在采集中起到约束和补偿的作用,避免了数据丢失和死锁现象。
下面是上位机程序结构图。
Keithley公司提供了纳伏表Keithley-2182 LabVIEW库函数,Keithley 2182 Display.vi用于设置启用或关闭仪器面板显示,关闭仪器面板显示可以提高采集速度。
Keithley 2182 Measurement Mode.vi用于设定采集类别,采集系统设置为电压采集(DCV)。
Keithley 2182 DCV.vi用于设定电压范围、精度、滤波和采集速度,采集系统设置为精度7位半、中速、无滤波、通道1。
GPIB Write.vi用于向Keithley-2182纳伏表写入GPIB命令,命令“:data:fresh?”:请求获取昀新采集数据。
GPIB Read.vi用于接收昀新数据。
可以循环发出GPIB 读写命令,进行数据采集。
LabVIEW串口通讯调用VISA模块中的库函数。
VISA Configure Serial Port:初始化指定串口通讯参数,设定波特率为19200,8数据位,无奇偶校验,COM1;VISA Set I/O Buffer Size:设置指定的串口的输入输出缓冲区大小,设定为2048字节;
在数据保存线程中,为了方便以后数据察看和分析,采用excel文件存储。
在LabVIEW 中,利用ActiveX服务中的属性节点Property Node,可以读取或设置ActiveX控件的属性,调用节点Invoke Node可以用来调用ActiveX控件的方法,通过使用属性节点和调用节点来打开,读取和写入excel文件。
系统设定每隔1秒线程从数据队列1请求一组数据,这样使得采集显示线程可以获得更多时间片用于采集,提高速度。
在实时分析线程中,线程每隔1秒从数据队列2请求一组数据,插入绘图数组中,利用LabVIEW的绘图函数绘制趋势图。
设置x轴为通电电流,y轴为短样股线电压。
下面是采集系统运行界面图。
4. 测试与总结
经过测试,采集系统速度可以稳定达到每秒每通道采样17个,采集精度和速度符合要求,可以完整捕捉到失超临界点和失超曲线;采集系统硬件电路简单,成本低廉;软件界面直观,智能化程度高,程序可读性较VC代码强,适合非计算机专业工程人员使用。
采集系统扩展性很好,如果有需要可以采集更多路信号。
创新点:采用AT89S52单片机和
MAX197 A/D转换芯片,替代PCI采集卡,降低了成本,简化了系统设计,提高了可维护性,同时也达到了短样测试的数据要求;采用便携式Keithley-2182纳伏表使实验室获得了高精度采集的能力;软件设计方面采用LabVIEW和Queen技术保证了易用性和稳定性。