当前位置: 主页 > 论文库 > 计算机 > 计算机应用 >

基于ADS7812的数据采集系统设计

时间:2011-12-31 15:11 来源:www.lunwen163.com 作者:163论文网 点击:
摘要:现代信息采集系统中A/D转换是关键,本文介绍了利用ADS7812进行A/D转换的数据采集系统。文中对ADS7812的特性进行了分析,给出了ADS7812与51单片机接口的程序代码,最后提出应用ADS7812应注意的一些问题。 关键词:A/D转换,串行通信,单片机

ADS7812是美国B-B公司生产的一款高性价比、SPI串行接口、12位模数转换芯片,自带采样/保持电路。它具体有以下几项主要性能特征:
●转换时间小于20微秒;
●+5V单电源供电;
●多种范围的模拟输入电压;
●与16位A/D转换芯片ADS7813管脚完全兼容;
●可使用内部或外部同步时钟;
●最大积分和微分非线性误差为±0.5LSB;
●35mW的最大功耗与50μW的掉电模式。
ADS7812的引脚排列如图一所示,它有两种应用,一种是使用内部时钟,也可以使用外部时钟。使用内部时钟时,当 端的输入信号由高电平变为低电平时便启动了一次转换过程,随即 变低,指示一次转换的开始,并一直保持到转换结束。在转换的同时,上一次转换的结果将在DATACLK信号的同步下由DATA引脚串行输出;对于使用外部时钟的转换电路来说,第n次的转换结果可以在本次转换完成后到下一次转换开始前这段时间内输出,也可以在第n+1次转换过程中输出,或者是在本次转换完成后和下一次转换过程中断续输出。当CS为低电平时,DATACLK引脚处于三态状态。当CS为高电平,若EXT/INT为低,则DATACLK引脚输出用于串行数据的同步时钟;若EXT/INT为高,则串行数据移位时钟从外部输入DATACLK脚。
ADS7812的工作模式设置以及对应输入阻抗参见表1。
表1  ADS7812工作模式设置及相关参数表
R1IN R2IN R3IN 输入阻抗
(kΩ) 模拟输入电压范围
Vin BUF GND 45.7 ±10V
Vin Vin Vin > 10,000 0.3125V~2.8125V
GND BUF Vin 26.7 ±5V
BUF GND Vin 26.7 0V~10V
BUF Vin GND 21.3 0V~4V
Vin BUF Vin 21.3 ±3.33V
GND Vin GND 21.3 0.5V~4.5V
其实,在应用中我们最关心的还是转换后数据的读取。经过试验及实际应用证明,ADS7812的数据读取非常方便。一种是利用SPI总线方式读取,这需要与ADS7812通信的芯片具有SPI功能。另外,可以模拟采用软件模拟的方式实现对ADS7812串行数据的读取。ADS7812的资料中给出了很多种数据传输的时序,我们以其中的一种来说明,时序图如图2所示,ADS7812工作在外部时钟模式下,单片机选用STC12C5A32S2,晶振为12MHz,模拟信号通过运放送到ADS7812的第4脚。单片机与ADS7812的连接可以任选5I/O端口。具体电路图如图3所示。

   

 

 

正对以上数据采集系统给出较完整的数据读取程序代码和大家共同探讨,编译环境为keil uvision3。
   sbit CONV=P1^5; sbit CS=P1^4; sbit BUSY=P1^3; sbit ADCLK=P1^7;sbit ADDAT=P1^6;
   union receive16
     { uint receive16;
        uchar receive8[2]; }receive_valu; 
void delay(int i,j);void receive(void);
   uchar DATBUF;uchar n=8;uchar m=4;
void delay(int i,j)
  { int k;k=j;
    while(i>0)
  { i--;
    while(k>0)
     { k--;}
  k=j; } } 
void receive(void)
 { receive_valu.receive16=0x0000;
   DATBUF=0X00;
   ADCLK=0;
   CS=0;   //片选
   delay(15,10000);
   CONV=0;  //低  
   CONV=1;   //拉高开始采样
   delay(10,1); //最少保持2us
   CONV=0;  //低,开始ADC
   delay(220,1); //最少保持22us   
    while(!BUSY);  //等待转换结束    
 while(n>0)    //读高八位
  { delay(10,1);
   ADCLK=0;    //时钟低
   delay(10,1);
   ADCLK=1;   //时钟高
   delay(10,1);
   ADDAT=1;   //读回p1口数据
   DATBUF=P1; //本次数据在p1.6上
   DATBUF>>=6; //将其移至最低位
   DATBUF&=0X01;//只保留最低位,其他位全清零   
   DATBUF<<=n-1;       //左移n-1位
   ADDAT=ADDAT|DATBUF; //与已经得到的数或运算,把刚移进来的位放在正确位置
   n--; }
 receive_valu.receive8[0]=ADDAT;
 ADDAT=0x00;
 while(m>0)
  { delay(10,1);
   ADCLK=0;    //时钟低
   delay(10,1);
   ADCLK=1;   //时钟高
   delay(10,1);
   ADDAT=1;   //读回p1口数据
   DATBUF=P1; //本次数据在p1.6上
   DATBUF>>=6; //将其移至最低位
   DATBUF&=0X01;//只保留最低位,其他位全清零   
   DATBUF<<=m-1;       //左移m-1位
   ADDAT=ADDAT|DATBUF; //与已经得到的数或运算,把刚移进来的位放在正确位置
   m--; }
 receive_valu.receive8[1]=ADDAT;
 ADDAT=0x00; }
此程序试验通过,数据通信正常。此程序已在实际中应用,程序中的延时可以根据所需的数据速率更改。
在应用ADS7812适应注意转换过程中,保持 引脚电平状态不变,以免对A/D产生干扰。参考电压引脚的滤波电容必须选用钽电容。且当采用内部参考电压时,参考电压端不允许施加任何负载。即使加入一个阻值为4MΩ的负载,满量程时的转换结果也可能减少4LSB。ADS7812属逐次逼近型A/D,对外部干扰比较敏感,一定要注意模拟电路和数字电路的隔离,以及电源的良好滤波等。ADS7812对ESD比较敏感,存放和焊接时应防止静电损坏。
参考文献
[1]卜广炎.串行A/D转换器ADS7812与单片机的接口技术【J】.仪表技术,2001.3.
[2]魏佩敏.ADS7812及其在智能型互感器校验仪中的应用【J】.电子技术,2002.5.
[3]余永权.FLASH单片机应用及原理[M].电子工业出版社,1997.