(word完整版)提高AD采样精度
(word完整版)提高AD采样精度

其中,ma=actual gain
B=actualoffset
(与输入为0时相关)
实际的和理想的转换计算曲线如图2所示:
在校正的时候,首先选用ADC的任意两个通道(例如A1,A2)作为参考输入通道,并分别
输入已知的直流参考电压,通过读取相应的结果寄存器获取转换值,利用两组输出值便可求
7.序列发生器可按2个独立的8状态序列发生器或1个16状态序列发生器。
我们在项目实际研发过程中采用的AD采样的硬件电路如下图所示:
图1为电流信号检测与调理电路,电压信号的检测与调理电路与此相类似。从电流传感器输出的信号CT1首先经过了由R1、C1组成的低通滤波电路,滤除高频干扰信号,然后通过U1构成的电压跟随器,实现了电路前后两级的隔离。由于2812的I/O口输入电平必须低于3.3V,因此在芯片引脚的输入前端加了一个稳压管Z1,使AD口输入的电压幅值不超过3V。
If(i>=SAMPLES)//采样满规定次数
{
i=0;
for(k=0;k<SAMPLES;k++)
{
Sum_HighActualCount+= HighActualCount;
Sum_LowActualCount+=LowActualCount;
}
Ave_HighActualCount= Sum_HighActualCount/SAMPLES;//多次采样取平均值
2.软件角度
(1)多次采样取平均值算法,最为简单;
(2)数字滤波算法,例如采用中值滤波法,具体方法为:连续采样20个数据,对这些数据进行排序之后,去掉最小的5个和最大的5个,然后取中间10个采样数据的平均值。
如何提高ADC采样精度

一、减小电源噪声1、电源端从噪声角度讲,线性稳压器具有较好的输出.市电经降压、整流和滤波,再经过线性稳压器。
强烈建议在整流输出端连接滤波电容。
请参考线性稳压器的数据手册。
如果使用开关型电源,建议使用一个线性稳压器为模拟部分供电。
建议在电源线和地线之间连接具有好的高频特性的电容,即在靠近电源一端应放置一个0。
1μF和一个1至10μF的电容。
电容允许交流信号通过,小容量的电容过滤高频率的噪声,大容量的电容过滤低频率的噪声。
通常瓷介电容具有较小的容值(1pF至0。
1μF),和较小的耐压(16V至50V)。
建议在靠近主电源(VDD和VSS)和模拟电源(VDDA和VSSA)管脚的地方,放置这样的瓷介电容。
这样的电容可以过滤由PCB线路引出的噪声。
小容值的电容可以响应电流的快速变化,并快速地放电适应快速的电流变化。
钽电容也可以与瓷介电容一道使用。
可以使用大容值的电容(10μF至100μF)过滤低频率的噪声,通常可以使用电解电容。
建议把它们放在靠近电源端。
可以使用在电源线上串联铁氧体电感滤除高频噪声。
因为串联的电阻非常小,除非电流非常大,这个方法可以产生非常小的(可以忽略的)直流损失。
在高频时,它的电阻很大。
STM32F10xxx端多数的STM32F10xxx微控制器的VDD和VSS管脚都是互相靠近的,VREF+和VSSA也是靠近的.因此可以在非常靠近微控制器的地方放置一个电容器。
每一对VDD和VSS管脚都需要使用单独的去藕电容器。
VDDA管脚必须连接到2个外部的去藕电容器(10nF瓷介电容+1μF的钽电容或瓷介电容)。
参见图14和图15的去藕电路例子.对于100脚和144脚封装的产品,可以在VREF+上连接一个外部的ADC的参考输入电压,从而改善对输入低电压的精度(参见2.2.4节)。
在VREF+上的电压范围是2.4V至VDDA。
如果在VREF+上单独提供参考电压,必须在这个管脚上连接2个电容器,10nF和1μF,而且VREF+不能超出2。
dspAD采样改进方法(精)

TMS320F2812 DSP编程之 AD 采样精度的校准算法摘要F2812内部集成了 ADC 转换模块。
该模块是一个 12位、具有流水线结构的模数转换器,内置双采样保持器(S/H ,可多路选择 16通道输入,快速转换时间运行在25 MHz、 ADC 时钟或 12.5 Msps, 16个转换结果寄存器可工作于连续自动排序模式或启动 /停止模式。
在实际使用中, ADC 的转换结果误差较大,如果直接将此转换结果用于控制回路,必然会降低控制精度。
关键词:TMS320F2812, DSP编程,采样精度F2812内部集成了 ADC 转换模块。
该模块是一个 12位、具有流水线结构的模数转换器, 内置双采样保持器(S/H ,可多路选择 16通道输入,快速转换时间运行在25 MHz、 ADC 时钟或 12.5 Msps, 16个转换结果寄存器可工作于连续自动排序模式或启动 /停止模式。
在实际使用中, ADC 的转换结果误差较大,如果直接将此转换结果用于控制回路,必然会降低控制精度。
(最大转换误差可以达到 9%左右F2812的 ADC 转换精度较差的主要原因是存在增益误差和失调误差,要提高转换精度就必须对两种误差进行补偿。
对于 ADC 模块采取了如下方法对其进行校正:选用 ADC 的任意两个通道(如 A3, A4作为参考输入通道,并分别提供给它们已知的直流参考电压作为输入(RefHigh 和 RefLow ,通过读取相应的结果寄存器获取转换值,利用两组输入输出值求得 ADC 模块的校正增益和校正失调,然后利用这两个值对其他通道的转换数据进行补偿,从而提高了 ADC 模块转换的准确度。
实现校准的硬件电路在本文中不作描述,在有关资料中可以查到。
下面是该算法的 C 语言实现://首先计算两个通道的参考电压转换后的理想结果// A4 = RefHigh = 2.5V ( 2.5*4095/3.0 = 3413 ideal count// A3 = RefLow = 0.5V ( 0.5*4095/3.0 = 683 ideal count#define REF_HIGH_IDEAL_COUNT 3413#define REF_LOW_IDEAL_COUNT 683#define SAMPLES 63//定义所需的各个变量Uint16 Avg_RefHighActualCount;Uint16 Avg_RefLowActualCount; /Uint16 CalGain; // Calibration Gain Uint16 CalOffset; // Calibration Offset Uint16 SampleCount;Uint16 RefHighActualCount;Uint16 RefLowActualCount;//对各个变量进行初始化void InitCalib({Avg_RefLowActualCount = 0;Avg_RefLowActualCount = 0;Avg_RefHighActualCount = 0;RefHighActualCount = 0;RefLowActualCount = 0;CalGain = 0;CalOffset = 0;SampleCount = 0;}//获得校准增益和校准失调// Algorithm: Calibration formula used is://// ch(n = ADCRESULTn*CalGain - CalOffset// n = 0 to 15 channels// CalGain = (RefHighIdealCount - RefLowIdealCount// -----------------------------------------// (Avg_RefHighActualCount - Avg_RefLowActualCount //// CalOffset = Avg_RefLowActualCount*CalGain - RefLowIdealCount //// A running weighted average is calculated for the reference inputs://// Avg_RefHighActualCount = (Avg_RefHighActualCount*SAMPLES // + RefHighActualCount / (SAMPLES+1//// Avg_RefLowActualCount = (Avg_RefLowActualCount*SAMPLES// + RefLowActualCount / (SAMPLES+1 //void GetCalibParam({RefHighActualCount = AdcRegs.ADCRESULT4 >>4;RefLowActualCount = AdcRegs.ADCRESULT3 >>4;if(SampleCount > SAMPLESSampleCount = SAMPLES;Avg_RefHighActualCount = (Avg_RefHighActualCount * SampleCount + RefHighActualCount / (SampleCount+1;Avg_RefLowActualCount = (Avg_RefLowActualCount * SampleCount + RefLowActualCount / (SampleCount+1;CalGain = (REF_HIGH_IDEAL_COUNT - REF_LOW_IDEAL_COUNT/ (Avg_RefHighActualCount - Avg_RefLowActualCount; CalOffset = Avg_RefLowActualCount*CalGain - RefLowIdealCount;SampleCount++;}//在 ADC_ISR中,对其他各个通道的结果进行修正:interrupt void adc_isr(void{GetCalibParam(;......newResult n= AdcRegs.ADCRESULTn*CalGain - CalOffset;......}通过上面的代码,配合硬件电路改动,可以大幅实现提高 ADC 采样的精度,实现更灵敏、更精确的控制。
如何提高ADC采样分辨率?

例如 精心设计电路
板和在参考电压信号线上加旁路电容
但是 ADC 总是存在量化噪声 所以一个给定位数的数据转
换器的最大 SNR 由量化噪声 不使用过采样技术时 定义 在正确的条件下 过采样和求均值会
减小噪声和改善 SNR 这将有效地提高测量分辨率的位数
图 1 所示的系统可以用 Cygnal 的片内
ADC 和一个软件子程序来实现 得到结果
在采用过采样和求均值技术的情况下
我们用同一个片内 12 位 ADC 可以测量的最小温度变化
是 0.007 摄氏度 这就允许我们以高于百分之一度的精度对温度进行测量
数据吞吐率降低
吞吐率是指每单位时间我们能得到的输出数据字的个数
如果一个 ADC 的最大采样速率是
100ksps 在不采用过采样和求均值技术的情况下我们可以得到
引言
很多应用需要使用模 / 数转换器 ADC 进行测量 这些应用所需要的分辨率取决于信号的动
态范围 必须测量的参数的最小变化和信噪比
SNR 因此 很多系统使用较高分辨率的片外 ADC
然而也可以通过使用一些技术来达到较高的分辨率和
SNR 本应用笔记介绍用过采样和求均值的方
法来提高模数转换的分辨率和 SNR 过采样和求均值技术可以在不使用昂贵的片外
应 用 笔记
AN018 用过采样和求均值提高 ADC 分辨率
相关器件
本应用笔记适用于下列器件 C8051F000 C8051F001 C8051F002 C8051F005 C8051F012 C8051F015 C8051F016 C8051F017
C8051F006
C8051F010
C8051F011
这样得到的结果是 16 位的有用数据 所做的操作被称为 累加和转储 一旦我们计算得到由 256 个
利用过采样技术提高ADC测量微弱信号时的分辨率(全面版)资料

利用过采样技术提高ADC测量微弱信号时的分辨率(全面版)资料利用过采样技术提高ADC 测量微弱信号时的分辨率 1. 引言 随着科学技术的发展,人们对宏观和微观世界逐步了解,越来越多领域(物理学、化学、天文学、军事雷达、地震学、生物医学等)的微弱信号需要被检测,例如:弱磁、弱光、微震动、小位移、心电、脑电等[1~3]。
测控技术发展到现在,微弱信号检测技术已经相对成熟,基本上采用以下两种方法来实现:一种是先将信号放大滤波,再用低或中分辨率的ADC 进行采样,转化为数字信号后,再做信号处理,另一种是使用高分辨率ADC ,对微弱信号直接采样,再进行数字信号处理。
两种方法各有千秋,也都有自己的缺点。
前一种方法,ADC 要求不高,特别是现在大部分微处理器都集成有低或中分辨率的ADC ,大大节省了开支,但是增加了繁琐的模拟电路。
后一种方法省去了模拟电路,但是对ADC 性能要求高,虽然∑-△ADC 发展很快,已经可以做到24位分辨率,价格也相对低廉,但是它是用速度和芯片面积换取的高精度[4],导致采样率做不高,特别是用于多通道采样时,由于建立时间长,采样率还会显著降低,因此,它一般用于低频信号的单通道测量,满足大多数的应用场合。
而本文提出的方案,可以绕过上述两种方法的缺点,利用两者的优点实现微弱信号的高精度测量。
过采样技术是提高测控系统分辨率的常用方法,已经被广泛应用于各个领域。
例如,过采样成功抑制了多用户CDMA 系统中相互正交用户码接收机(A Mutually Orthogonal Usercode-Receiver ,AMOUR )的噪声[5~6],提高了光流估计(optical flow estimation ,OFE )的精度[7],改善了正交频分复用(OFDM )信号的峰-均比[8]等。
但是,这些过采样技术应用的前提是采样前的信号幅值能与ADC 的输入范围相当。
而用ADC 采集微弱信号时,直接使用过采样技术提高不了精度,而且由于信号幅值远小于ADC 的输入范围,它的有效位数还会减小,使精度随之下降。
MCU内置ADC的转换精度提高方法

在实际应用中,由于环境温度、湿度等参数的变化 可能会引入一些误差, 电源电压的不稳定也会带来一 定的误差。 当然可以选择温度系数比较好、精度比较高 的电源模块提供稳定的电压。 但是由于高精度的电源
差。
A、方法:
本文采用数学变化,将会大大减少该算式的误差,
连续取N个采样值进行算术平均运算
有效改善电源电压变化的抑制比。
N值较大时:信号平滑度较高,但灵敏度较低
由式(1)经过数学变化得公式; Vad = Dad Vref Dref
N值较小时:信号平滑度较低,但灵敏度较高 N值的选取:一般流量,N=12;压力:N=4 B、优点:
术平均滤波法和递推平均滤波法 (又称滑动平均滤波 法)想结合的方法兼顾项目设计中的速度问题,实现误 差的最小化。 其中算术平均滤波法中N=4;递推平均滤 波法 (又称滑动平均滤波法)N=8. 经过软件滤波处理 后,12位ADC采样转换后的数据变化相差最大小于20, 满足了项目的要求。
3、标准校正减小偏移误差 经 过 前 2 步 骤 ,ADC 采 样 转 换 的 输 出 数 据 的 变 化 范 围大大缩小,变化数值相差最大小于20,基本满足项目 的要求。 但是ADC采样输出数值经过软件滤波后,和实 际数值有一定的偏移。 因此还需要加以校准,减小偏移 误差。 在本设计中,外部有5个模拟量需要采样。 在校准 的时候选择5个通道做为参考输入通道,同时提供已知 的直流参考电压作为输入(5个电压不相同)。 四、 结论 采 用 本 文 所 述 方 法 , 经 过 实 验 , 满 足 了 项 目 对 ADC 的采样精度,同时也降低了系统的功率损耗。 本文对类 似的项目设计有一定的参考意义和实际意义。
过采样技术提升ADC采样精度
过采样技术提升ADC采样精度其实原理很简单, 很容易明白, 怎样实现提高分辨率?假定环境条件: 10位ADC最小分辨电压1LSB 为1mv假定没有噪声引入的时候, ADC采样上的电压真实反映输入的电压, 那么小于1mv的话,如ADC在0.5mv是数据输出为0 我们现在用4倍过采样来, 提高1位的分辨率,当我们引入较大幅值的白噪声: 1.2mv振幅(大于1LSB), 并在白噪声的不断变化的情况下, 多次采样, 那么我们得到的结果有真实被测电压白噪声叠加电压叠加后电压ADC输出ADC代表电压0.5mv 1.2mv 1.7mv 1 1mv0.5mv 0.6mv 1.1mv 1 1mv0.5mv -0.6mv -0.1mv 0 0mv0.5mv -1.2mv -0.7mv 0 0mvADC的和为2mv, 那么平均值为: 2mv/4=0.5mv!!! 0.5mv就是我们想要得到的这里请留意, 我们平时做滤波的时候, 也是一样的操作喔! 那么为什么没有提高分辨率?????是因为, 我们做滑动滤波的时候, 把有用的小数部分扔掉了, 因为超出了字长啊, 那么0.5取整后就是0 了, 结果和没有过采样的时候一样是0 ,而过采样的方法时候是需要保留小数部分的, 所以用4个样本的值, 但最后除的不是4, 而是2! 那么就保留了部分小数部分, 而提高了分辨率!从另一角度来说, 变相把ADC的结果放大了2倍(0.5*2=1mv), 并用更长的字长表示新的ADC值,这时候, 1LSB(ADC输出的位0)就不是表示1mv了, 而是表示0.5mv, 而(ADC输出的位1)才是原来表示1mv的数据位,下面来看看一下数据的变化:ADC值相应位9 8 7 6 5 4 3 2 1 00.5mv测量值0 0 0 0 0 0 0 0 0 0 0mv(10位ADC的分辨率1mv,小于1mv无法分辨,所以输出值为0)叠加白噪声的4次过采样值的和0 0 0 0 0 0 0 0 1 0 2mv滑动平均滤波2mv/4次0 0 0 0 0 0 0 0 0 0 0mv(平均数, 对改善分辨率没作用)过采样插值2mv/2 0 0 0 0 0 0 0 0 0 0 1 2mv/2=0.5mv, 将这个数作为11位ADC值, 那么代表就是0.5mv这里我们提高了1位的ADC分辨率这样说应该就很简单明白了吧, 其实多出来的位上的数据, 是通过统计输入量的分布, 计算出来的,而不是硬件真正分辨率出来的, 引入噪声并大于1LSB, 目的就是要使微小的输入信号叠加到ADC能识别的程度(原ADC最小分辨率).理论来说, 如果ADC速度够快, 可以无限提高ADC的分辨率, 这是概率和统计的结果但是ADC的采样速度限制, 过采样令到最后能被采样的信号频率越来越低,就拿stm32的ADC来说, 12ADC, 过采样带来的提高和局限分辨率采样次数每秒采样次数12ADC 1 1M13ADC 4 250K。
DSP-AD校正篇(word文档良心出品)
32位高性能数字信号处理器内部AD的精度校正方法TMS 320F2812是TI公司设计的一款用于工业控制、机床控制等高精度应用领域的DSP。
它是一款最高主频可达150MHZ的32位高性能数字信号处理器(DSP),内部集成了16路12位ADC转换模块。
该模块内置两个采样保持器(S/H-A、S/H-B),有自动排序功能,且其转换时间最短可在100ns以内进行过采样处理。
但在实际应用中发现,即使使用了过采样处理,TMS 320F2812内部ADC转换器的转换结果仍存在较大误差,在测控系统中,这会降低控制回路的控制精度,导致运行结果出现一定的偏差。
本文提出一种提高ADC转换精度的方法,使得TMS 320F2812的ADC转换精度得到有效提高,能让TMS 320F2812更好的满足高精度控制系统的需要。
适用于控制领域的TMS320C2000系列DSP内部集成了ADC转换模块,为进一步提高其转换精度,实现更精确控制,提出对ADC转换模块存在的增益误差和偏移误差采用加参考信号与编程算法结合的方法进行校正偿,给出了具体的校正方案。
并在F2812芯片上进行了验证。
实验结果表明,此方法起到了补偿误差的作用,能够大幅度提高转换精度。
1、ADC转换器的误差分析计算机测控系统在测量数据时不可避免的会有随机误差和系统误差,其中随机误差一般是由各种干扰引入的,可通过统计的方法在数据处理中消除,系统误差一般在数值上较大,对测量正确度影响较大,且不能在数据处理中消除,必须要找出来并通过一定的方法进行消除。
对于线性系统,常用的A/D转换器主要存在偏移误差和增益误差,这两种误差都属于系统误差。
首先我们介绍一下什么偏移误差?什么是增益误差?增益误差是指从负满量程转为正满量程输入时实际斜率与理想斜率之差。
偏移误差是指对AD转换器采用零伏差动输入时实际值与理想值之间的差异。
增益和偏移增益误差通常是AD转换器中主要的误差源。
为了减小增益误差和偏移误差,可采取检测其值,然后对其进行修正的方法。
提高TMS320LF2407A内部A_D采样精度和范围的方法
(f)舍入误差概率密度函数图1A/D转换误差XA/DXqn(a)用n位A/D转换X!Xq-+!=Xq-X(b)A/D量化模型-2"-"!"2"-"(c)截断A/D转换器中的量化误差-3"/2-"/2"/2-"/23"/2X"/2!(d)舍入A/D转换器的量化误差-"01/"P(!)!1/"P(!)-"/2"/20!(e)截断误差概率密度函数与一般的单片机控制系统相比,数字信号处理器DSP具有更高的处理速度、更小的功耗和体积,便于应用在工业控制、个人数字处理器(PersonalDigitalAssistant)及各种嵌入式系统中。
美国德州仪器(TI)设计生产的TMS320系列DSP应用最为广泛,其中TMS320LF2407A在工业控制系统中最常用。
其内部具有10位A/D转换器,最大采样速度可达2MHz,可选择由两个事件管理器(EVA、EVB)触发两个8通道输入的A/D转换器或一个16通道输入的A/D转换器。
TMS320LF2407A的采样电压信号的幅值为0~3.3V,而在工业控制中多数信号是双极性的,且幅值通常大于3.3V,而其10位的内部A/D的采样误差很大,在很多系统中达不到精度要求。
本文将从A/D转换精度的分析入手,设计一套采样信号幅值为-5V~+5V的电路,并根据信号幅值的大小设计一种提高采集精度的方法,从而省去了外接A/D芯片,也简化了硬件电路和软件设计。
1A/D转换精度分析1.1A/D转换误差对于10位的A/D芯片,其量化采样的最小值为:"=2-n(1)其中:n为A/D的采样位数,在这里n=10。
其中采样的量化误差取决于n,图1(b)所示A/D转换的量化误差为:!=#q-$(2)假设A/D转换器中的截断和舍入误差服从正态分布,则其概率密度函数分布如图1(e)和图1(f)所示。
ad芯片精度
ad芯片精度AD芯片是一种用于模拟信号转换为数字信号的集成电路,具有很高的精度和准确度。
在测量、信号处理、控制系统等领域广泛应用。
下面将详细介绍AD芯片的精度。
首先,AD芯片的精度是指其输出的数字信号与输入的模拟信号之间的差异程度。
一般将其表达为位数或百分比。
位数表示AD芯片能够分辨的离散步长数目,位数越高,精度越高。
百分比表示AD芯片输出的数字信号相对于输入的模拟信号的误差百分比,百分比越小,精度越高。
AD芯片的精度受到多个因素的影响。
首先,AD芯片的分辨率决定了其精度的上限。
分辨率越高,AD芯片能够识别的信号差异越小,精度越高。
其次,AD芯片的采样率影响了其对信号的采样精度。
采样率越高,AD芯片能够更准确地捕捉信号的变化。
此外,AD芯片的失调误差、非线性误差、噪声等也会对其精度造成一定的影响。
为了提高AD芯片的精度,可以采取以下措施。
首先,选择具有高分辨率和高采样率的AD芯片。
其次,注意AD芯片的失调误差和非线性误差,选择具有低失调误差和非线性误差的AD芯片。
此外,通过设计合理的模拟信号滤波和抗干扰措施,可以降低AD芯片输入信号中的噪声干扰,提高精度。
最后,校准AD芯片的参数,对于已知输入信号进行校准和调整,可以提高AD芯片的精度和准确度。
总的来说,AD芯片是一种高精度的集成电路,其精度受到多个因素的影响,包括分辨率、采样率、失调误差、非线性误差和噪声等。
通过选择合适的AD芯片、采取合理的设计和校准措施,可以提高AD芯片的精度和准确度,满足各种应用需求。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Uint16Sum_LowActualCount;
Uint16 CalGain;
Uint16CalOffset;
Uint16HighActualCount[SAMPLES];
Uint16LowActualCount[SAMPLES];
//变量初始化
TMS320F2812内部集成了ADC转换模块,该模块具有如下的功能:
1.12位ADC核,内置了双采样-保持器(S/H);
2.顺序采样模式或者同步采样模式;
3.模拟输入:0V~3V;
4.快速转换时间运行在25MHz,ADC时钟,或12.5MSPS;
5.16通道,多路选择输入;
6.自动序列化,在单一时间段内最大能提供16个自动A/D转换,每个转换可编程对16个输入通道中的任何一个进行L_COUNT 3413//理想高值
#defineLOW_IDEAL_COUNT 683//理想低值
#define SAMPLES20//采样次数
//定义所需的各个变量
Uint16Avg_HighActualCount;
Uint16Avg_LowActualCount;
理想的12位ADC应该是没有增益误差和偏置误差的,因此其转换的计算公式为:
Y=x*mi
其中,x=input count=inputvoltage*4095/3.0V
Y=output count
Mi=ideal gain=1
但是,实际上F2812的AD是存在增益误差和偏置误差的,其转换的计算公式如式2所示:
TMS320F2812虽然有12位精度,但在实际的使用过程中,我们发现,ADC的转换结果误差较大,如果直接将此转换结果用于控制回路,必然会降低控制精度,最大的转换误差可以达到9%。那么如何来提高AD采样的精度呢,下面列出了几种常见的方法:
1.硬件角度
(1)硬件滤波,滤除干扰信号;
(2)电路板布线时需要注意不要让ADCINxx引脚运行在靠近数字信号通路的地方,这样能使耦合到ADC输入端的数字信号开关噪声大大降低;
(3)采用适当的隔离技术,将ADC模块电源引脚和数字电源隔离;
(4)如果采样电路部分是经过多路开关切换的,可以在多路开关输出上接下拉电阻到地;
(5)采样通道上的电容效应也可能会导致AD采样误差,因为采样通道上的等效电容可能还在保持有上一个采样数据的数值的时候,就对当前数据进行采样,会造成当前数据不准确。如果条件允许,可以在每次转化完成后现将输入切换到参考地,然后在对信号进行下一次采样。
7.序列发生器可按2个独立的8状态序列发生器或1个16状态序列发生器。
我们在项目实际研发过程中采用的AD采样的硬件电路如下图所示:
图1为电流信号检测与调理电路,电压信号的检测与调理电路与此相类似。从电流传感器输出的信号CT1首先经过了由R1、C1组成的低通滤波电路,滤除高频干扰信号,然后通过U1构成的电压跟随器,实现了电路前后两级的隔离。由于2812的I/O口输入电平必须低于3.3V,因此在芯片引脚的输入前端加了一个稳压管Z1,使AD口输入的电压幅值不超过3V。
{
HighActualCount[I]=0;
LowActualCount=0;
}
}
//计算增益和偏置的函数
Voidcalerror (void)
{
Static Unit16 i;//采样计数
Uint16k;
HighActualCount=AdcRegs.AdcResult1>>4;//读采样数据
LowActualCount=AdcRegs.AdcResult2>>4;
Voidinitvar (void)
{
Avg_HighActualCount=0;
Avg_LowActualCount=0;
Sum_HighActualCount=0;
Sum_LowActualCount=0;
CalGain=0;
CalOffset=0;
Uint16 I;
For(i=0;i<SAMPLES;I++)
2.软件角度
(1)多次采样取平均值算法,最为简单;
(2)数字滤波算法,例如采用中值滤波法,具体方法为:连续采样20个数据,对这些数据进行排序之后,去掉最小的5个和最大的5个,然后取中间10个采样数据的平均值。
(3)软件校正算法。F2812的ADC转换精度较差的主要原因是存在增益误差(Gain Error)和偏置误差(Offset Error),要提高转换精度就必须对两种误差进行补偿,下面将具体介绍这种实用的补偿方法。
得ADC模块得校正增益和校正偏置,然后利用这两个值对其他通道转换数据进行补偿。
首先,计算两个通道得参考电压转换后得理想结果。在讲述算法之前,我们先来看看各个参数之间的关系,如下图所示:
由图可以得到各参数之间的关系如下:
y = x * ma + b
ma = (yH – yL)/(xH – xL)
b = yL – xL*ma
If(i>=SAMPLES)//采样满规定次数
{
i=0;
for(k=0;k<SAMPLES;k++)
{
Sum_HighActualCount+= HighActualCount;
Sum_LowActualCount+=LowActualCount;
}
Ave_HighActualCount= Sum_HighActualCount/SAMPLES;//多次采样取平均值
CalGain = (xH – xL)/(yH – yL)
CalOffset = yL * CalGain – xL
x = y * CalGain – CalOffset
给A1通道加2.5V,给A2通道加0.5V。
A1input=VHigh=2.5V,则2.5*4095/3.0=3413(理想值)
A2input=VLow=0.5V,则0.5*4095/3.0=683(理想值)
Y=x*ma+mb
其中,ma=actual gain
B=actualoffset
(与输入为0时相关)
实际的和理想的转换计算曲线如图2所示:
在校正的时候,首先选用ADC的任意两个通道(例如A1,A2)作为参考输入通道,并分别
输入已知的直流参考电压,通过读取相应的结果寄存器获取转换值,利用两组输出值便可求