|
Realize twice sample AD conversion 摘要:AD转换是测量中一个非常重要的部分,为了达到精度比较高的转换效果,人们往往选择位数较高的AD转换器,这样容易造成电路的成本过高。本文就介绍一种如何利用普通的AD转换器来实现高精度的AD转换,它利用两次采样的原理,通过一个模拟量进行两次转换,从而实现高精度。此转换器所需元件比较简单,主要由一个凌阳SPCE061A单片机和一些普通的选通、运放电路组成,文章从硬件电路的组成和软件程序的编写两个方面来进行说明,清晰的介绍了如何来实现高精度转换的功能。 关键词:AD转换,高精度,两次采样,原理 ABSTRACT:In the scopes of measure, AD conversion is a very important part, the higher bit AD converter always is chosen in order to gain high precision, but it is very expensive for the circuit . With twice sampling theory, an analog voltage is converted twice to realize the high precision. The converter is composed of lingyang SPCE061A mcu, ordinary gates and amplifiers, it is simple. That how to realize the high precision conversion is showed clearly on hardware circuit and software programs in this article. KEYWORDS:AD conversion, high precision, twice sample, elements 引言 在测量领域中,随着大规模数字时代的到来,AD(模数)转换已经成为一个非常重要的部分。普通的AD转换器因测量精度较低而不能满足测量的要求,而高精度的AD转换器价格昂贵,不易推广,所以用简单便宜的AD转换实现高精度的测量是一个解决矛盾的最好办法。两次采样技术就是利用低精度的AD转换器实现高精度的转换,它实现方法简单,对元件的要求不高,应用范围非常广泛。下面就介绍一种利用凌阳公司的SPCE061A单片机来实现的两次采样AD转换。 一、凌阳SPCE061A单片机简介 SPCE061A是凌阳公司推出的一个16位结构的微控制器,内部集成有32K字FLASH,2K字SRAM,双16位的定时/计数器,7通道10位的模数转换器和双通道的10位的数模转换器,并有音频输入输出端口,32个输入输出端口,串行通信口,低压检测和复位等。[1] SPCE061A单片机以它的优异性能正在越来越多的应用到许多领域,本文就来介绍如何利用其内部的A/D和D/A资源来实现两次采样的高精度AD转换。 二、两次采样的工作原理 两次采样AD转换又称动态刻度扩展方法,是日本武田研究公司最先提出的。该方法是利用一个低精度的AD转换器先对被测电压进行一次粗测,然后再精确的测量出粗测时的误差值,最后两次测量结果按权相加(或相减),即可得到高准确度的测量结果。两次采样AD转换的框图如图1。[2]  由图可知,被测量 进入后,开始第一次采样,第一次采样时数模转换器(DAC)输出VDA为0,前置放大器×1,则被测量直接给到模数转换器(ADC),转换的数据N1放到第一次测量结果中,这次转换的电压我们记为V1。接下来进行第二次采样,这时将数模转换器(DAC)输出的VDA为刚才转换的电压 ,则输入到前置放大器的电压为 ,既第一次采样时的误差,这时将前置放大器改成×128,则送到模数转换器(ADC)的电压为 ,这次将测量的数据N2放到第二次测量结果中。这样,两次采样结束,总的结果为N1+N2/128。 三、用SPCE061A单片机实现两次采样的模数转换 1、硬件部分。由图1可以看出,要实现两次采样,主要的部分为前置放大器、模数转换器、数模转换器、数据处理部分和显示部分,而这些部分除了前置放大器外和显示部分外,SPCE061A单片机里面全有,所以,我们只需在做一个外部的前置放大器和数码管显示就可以很容易的实现两次采样的AD转换了。硬件结构如图2。
 SPCE061A单片机的AD转换器是10位的,如果我们要转换的模拟电压范围为0~5V,则分辨力能达到5/210V,约为0.005V(5mV),显然在一些测量中是不够的,如果使分辨力提高128倍,达到0.00004V(0.04mV),已经是相当高的精度了,相当于16到17位的AD转换器。这里之所以选择128倍,是为了在软件计算时更加容易,不出现误差。

图 3 前向通道电路图 整个系统的输入控制电路如图3所示,外部电路比较简单,主要就是一个运算放大器和一个模拟开关组成,运算放大器组成了差动放大器,模拟开关选取了CD4051,来实现对输入电压走向的控制,通过它可使给入AD转换的电压是被测电压或者误差电压。运算放大器在这里不仅起到放大的作用,还要实现对被测量 和第一次转换的电压VDAC求差的运算,具体情况为:
 2、软件部分。程序主要完成对两次采样过程的控制,数据的计算、处理和显示等。程序流程图如图4所示。  在软件的工作过程中,为了得到更精确的转换,我们可以在测量静止电压信号的时候,采取测量多次并取平均值的方法,来减小误差的影响。测量变化较快的电压信号时,就只能一次测量结束了。 转换过程中主要程序如下: *P_ADC_MUX_Ctrl=C_ADC_CH1; //初始化AD通道1 *P_ADC_Ctrl=C_ADCE; uiData1=*P_ADC_LINEIN_Data; uiData1=0; for(i=0;i<16;1++)//进行十六次转换取平均值 { *P_WatchDog_Clear=C_WDTCLR;//清狗 uiData1+=AD();//累加转换值 } uiData1>>=4;//求平均 fVoltage1=(float)uiData1/0xffc0*3.3;//计算第一次电压转换值 ASM("int off"); *P_DAC_Ctrl=C_DA1_Direct;//初始化DA转换通道1 *P_DAC1=uiData1;//DA转换 for(i=0;i<3000;1++)//延时 *P_WatchDog_Clear=C_WDTCLR; *P_ADC_MUX_Ctrl=C_ADC_CH2;//初始化AD通道2 *P_ADC_Ctrl=C_ADCE; uiData2=*P_ADC_LINEIN_Data; uiData2=0; for(i=0;i<16;1++) { *P_WatchDog_Clear=C_WDTCLR; uiData2+=AD(); } uiData2>>=4;//取平均 uiData2>>=6;//缩小64倍 fVoltage2=(float)uiData2/0xffc0*3.3;//计算电压值 fVoltage=fVoltage1+fVoltage2;//两次电压值求和 以上程序描述了如何控制系统中的如何控制内部的模数和数模转换器进行相互配合工作,以及采样结束后如何计算出最终的测量值,显示和其他方面的程序比较简单,在这里就不列举了。 四、总结 以上所讲述的两次采样的A/D转换的方法可以应用在众多的采集领域,如传感器的数据采集、电压信号的测量等,其结构可以是多样的,所用的元件也可以是其它型号,但其所能实现的根本的方法是不能变的。本文以凌阳单片机为基础来做,主要是其内部集成的AD转换器和DA转换器,可以达到外部结构简单,实现容易的效果,并可以很方便的实现其它如控制、显示等方面的功能。这种方法在实际的应用中实现容易,但是要保证其精确度则必须保证其中DA转换的精度和运算放大的精度,经过实际测试,此方法可以将误差控制在0.5%。如果电路质量好的话,还可以达到更高。 本文作者创新点:利用两次采样的原理,使用普通的A/D转换器实现高精度A/D转换。 参考文献: 1、赵战民等,利用SPCE061A单片机实现的两次采样AD转换,科学技术与工程,2007年12期 2、薛钧义等,凌阳十六位单片机原理及应用,北京航空航天大学出版社,2003年2月 3、杨素行,模拟电子技术基础简明教程,高等教育出版社,1998年10月 4、赵新民,智能仪器原理及设计,哈尔滨工业大学出版社,1995年6月 5、杨峰,一种简易提高A/D转换器分辨率的方法[J].微计算机信息,2007,8-2:282-283。
作者简介:马艳玲(1980-),女,河北藁城人,石家庄经济学院助教,学士,主要从事电子、自动控制方向的研究。 通信地址:河北省石家庄经济学院信息工程学院 (050031) |