基于单片机的短样测试数据采集系统的设计
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;i2;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 { //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技术保证了易用性和稳定性。 关键词:
单片机
数据采集
程序设计
Keithley-2182纳伏表
加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW
或用微信扫描左侧二维码