基于MAX197的多通道压力数据采集系统

2010年09月14日 15:42    发布者:techshare
水利工程中常常需要对某些重要区段配置压力测量系统,比如管道进出口、直线段、局部转折、局部转弯处等,用来测定诸如管道沿程阻力系数和不同类型管道局部阻力系数等对工程影响较大的参数。水文测量中单点的测量基本上是没有意义的,必须通过合理的阵列测量才能进行频谱分析等工作。

多通道采集系统处理方案

根据系统要求,系统前端配置多路传感器以探测液压信号,实际系统中使用了32路。传感器采回的信号为电流信号,在A/D变换前要变为电压信号。A/D变换中采用的是Maxim生产的MAX197对32个通道进行循环采集。采集结果送入单片机中进行预处理,单片机选用Atmel公司的产品AT89C51,使用RS232通信接口与PC端连接并发送数据。PC端将收到的数据在数据处理软件中进行结果处理、显示。系统流程如图1所示。



图1 多通道采集系统流程图

传感器及过压保护

传感器采用AST4410型号的液压传感器,其性能参数如图2所示。

长度:60mm
直径:17mm
测量范围:表压 0~40MPa 绝压0~10kPa
精度等级:0.2级或 0.5级1~5Vdc
输出信号:4~20mAdc
工作电压:12~36Vdc
过程接口:1/4NPT螺纹
引线方式:电缆线

实际电路中供电电压使用24V,这对于后级的A/D以及单片机电路来说是相当危险的值,因此需要设置高电压保护电路。



图2 高电压保护电路

A/D采样及MAX197应用

MAX197是Maxim公司推出的8通道、12位的高速A/D转换芯片。芯片采用单一电源+5V供电,单次转换时间仅为6μs,采样速率可达100kSa/s。

MAX197的内部核心部分是一个采用逐次逼近方式的DAC,前端包括一个用来切换模拟输入通道的多路复用器以及输入信号调理和过压保护电路。其内部还建有一个2.5V的能隙基准电压源,管脚如图3所示。



图3 MAX197引脚定义视图

MAX197既可以使用内部参考电压源,也可以使用外部参考电压源。当使用内部参考源时,芯片内部的2.5V基准源经放大后向REF提供4.096V参考电平。这时应在REF与AGND之间接入一个4.7μF电容,在REFADJ与AGND之间接入一个0.01μF电容。当使用外部参考源时,接至REF的外部参考源必须能够提供400μA的直流工作电流,且输出电阻小于10Ω。如果参考源噪声较大,应在REF端与模拟信号地之间接一个4.7μF电容。模拟量输入通道拥有±16.5V的过电压保护,即使在关断状态下,保护也有效。

通过将控制寄存器的ACQMOD位置0可选择内部采集控制模式。在内部采集控制模式下,写信号脉冲将开始一个由内部定时控制长度的采集间隔。在6个时钟周期长度的采集间隔结束时,将启动下一个转换。

在内部采集控制模式下,MAX197的模拟信号输入电路拥有5MHz的信号带宽,当使用内部采集控制模式并使用外接2MHz时钟时,可达到100kSa/s的通过速率。

通过将控制寄存器的ACQMOD位置1可选择外部采集控制模式。采用外部采集控制模式是为了精确控制采样孔径或独立控制采集和转换时间。由用户分别通过两个写信号脉冲控制采集间隔和开始转换时间,第一个写信号脉冲时将控制寄存器的ACQMOD位置1,开始一个采集间隔。第二个写信号脉冲时将控制寄存器的ACQMOD位置0,结束采集间隔并开始转换。然而,如果在第二个写信号脉冲时将控制寄存器的ACQMOD位置1,则将开始又一个采集间隔。

在第一个写信号脉冲和第二个写信号脉冲时,控制寄存器中的模拟通道选择位必须置相同的值。电源关断模式控制位可以置不同的值。

选用AT89C51单片机作为主处理器。通过P0.0~P0.7与MAX197的D0~D7相连,既用于输入MAX197的初始化控制字,也用于读取转换结果数据。 用AT89C51单片机的P2.7作片选信号,则MAX197的高位地址为7FH。选择MAX197为软件设置低功耗工作方式,所以置SHDN脚为高电平。本文采用外部基准电压,所以REFDJ接高电平,而REF则接外部输入参考电压。AT89C51单片机的P1.1脚用做判读高、低位数据的选择线,直接与HBEN脚相连。MAX197的INT脚可与AT89C51的INT0相连,以便实现中断,读取转换结果。MAX197只有8个通道,一共要采32路压力值,用8片4选1的模拟开关实现。

在电路中,AGND和DGND应相互独立,各种电源与模拟地之间都用0.1mF电容来消除电源的纹波。

AX197的硬件电路设计如图4所示。



图4 MAX197连接原理图

单片机数据采集程序设计如下:

void scan(uchar channel){ //channel为通道数
uchar conword,low8,high4,i; //定义变量
for(i=0;i<8;i++){
if(i>0)channel=channel>>1;
if(channel&1){
conword="0x50"+i;
P12=1;
XBYTE=conword; //读取数据
while(P32==1){}
//P12=0;
P13=0;
low8=X
BYTE; //低位处理
P13=1;
high4=XBYTE&0x0F; //高位处理
SUMX[ i]=high4*256+low8; //数据整合
}
}
}

根据系统的要求以及芯片的性能,选择10ms为采样的最小间隔。后面在PC端的程序可调整设定发送间隔,如果发送间隔大于采样间隔,则将采样得到的完整数据取均值后再发送,可以起到滤波的作用。

if(FREQ>=10){ //INTERVAL 设定采样间隔为10ms
FREQ="0";
scanall();
NUM1++;
P16=0;
P17=0;
}
if(NUM1>=INTERVAL){ //interval 即为PC端发送的指令
for(i=0;i<32;i++){ //如果大于10ms则取平均值
if(SUM[ i]!=0){
union{
ulong usum;
uchar ustr;
} nua;
uchar a;
transfer(i);
SUM[ i]=SUM[ i]/NUM1;
nua.usum=SUM[ i];
a="nua".ustr;
transfer(a);
a="nua".ustr;
transfer(a);
SUM[ i]=0;
}
}
NUM1=0;
NUM2++;
}

串行通信部分



图5 MAX232通信连接原理图

采用MAX232芯片与PC机通信,电路连接如图5所示。

总结

将系统进行实际测试,连续运行14小时正常。该系统已用于水库模型测量实验中,运行良好。将前端传感器更换后,后级系统可以应用于多种场合,另外加入保护电路后更可用于恶劣条件下。系统前级提供4~20mA的电流模拟信号,后级即可工作并将信号输出,通用性较强。