0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ADC精度和误差

硬件攻城狮 来源:硬件攻城狮 作者:硬件攻城狮 2022-09-23 14:34 次阅读

ADC的种类很多,对应的精度和误差也有很多,本文就来讲讲关于ADC精度和误差的内容。

ADC介绍

ADC:Analog Digital Converter,指模数转换,也就是(电压)模拟量转换成数字量。大多数MCU中都集成了ADC模块,同时ADC也是在产品开发中使用率较高的一个模块,相信大部分人都使用过ADC这个功能。在STM32中内置最多四个高级12位ADC控制器(ADC1、2、3、4)。当然,ADC控制器数量多少取决于STM32型号,还有部分STM32具有16位采样的ADC(如STM32F373)。他们提供自校准功能,用于提高环境条件变化时的ADC精度。我们平时在使用ADC中要求不是很高,可能就没有在于ADC转换的值是否精确。但是,有些特定场合就需要更精确的转换值,那么我们就需要对ADC做更多了解。下面章节带领大家了解相关内容。

ADC误差

在涉及模数转换的应用中,ADC精度会影响整体的系统质量和效率。为了提高此精度,有必要了解与ADC相关的误差。

ADC误差主要包含:ADC自身和环境导致的误差。

1、ADC自身导致的误差

说误差之前,先说下ADC精度,为便于参考,将精度误差表达为1 LSB的倍数:

1LSB=VREF+/2^12.

(1)偏移误差

偏移误差是第一次实际转换和第一次理想转换之间的偏离。第一次转换发生在数字ADC输出从0变为1时。理想情况下,当模拟输入介于0.5 LSB和1.5 LSB之间时,数字输出应为1。仍然是理想情况下,第一次转换发生在0.5 LSB处。用EO表示偏移误差。可通过应用固件轻松校准偏移误差。正偏移误差的表示方法:

828bf818-3b07-11ed-9e49-dac502259ad0.png



负偏移误差的表示方法:

82f60ff0-3b07-11ed-9e49-dac502259ad0.png



(2)增益误差

增益误差是最后一次实际转换和最后一次理想转换之间的偏离。增益误差用EG表示。正增益误差的表示方法:

8321648e-3b07-11ed-9e49-dac502259ad0.png



负增益误差的表示方法:

8396e8d0-3b07-11ed-9e49-dac502259ad0.png



(3)微分线性误差

微分线性误差(DLE)为实际步进和理想步进之间的最大偏离。这里的“理想情况”不是指理想传输曲线,而是指ADC分辨率。理想情况下,1 LSB的模拟输入电压变化量应导致数字代码变化。如果需要大于1 LSB的模拟输入电压才能导致数字代码变化,将观察到微分线性误差。因此,DLE对应于从一个数字代码变为下一个数字代码所需的最大额外电压。

83bbc24a-3b07-11ed-9e49-dac502259ad0.png



(4)积分线性误差

积分线性误差为任何实际转换和端点相关线间的最大偏离,用EL表示ILE。端点相关线可以定义为A/D传输曲线上连接第一次实际转换与最后一次实际转换的线。EL是指与每一次转换的这条线的偏离。因此,端点相关线对应于实际传输曲线并且与理想传输曲线不相关。

83e6c5d0-3b07-11ed-9e49-dac502259ad0.png



(5)总未调整误差

总未调整误差(TUE)为实际和理想传输曲线间的最大偏离。此参数指定可能发生的会导致理想数字输出与实际数字输出之间最大偏离的总误差。TUE是记录到的任何输入电压的理想预期值与从ADC获得的实际值之间的最大偏离。

845ab0da-3b07-11ed-9e49-dac502259ad0.png



2、ADC环境导致的误差

(1)参考电压噪声

由于ADC输出为模拟信号电压与参考电压之比,因此模拟参考上的任何噪声都会导致转换后数字值的变化。在某些封装中,VDDA模拟电源被用作参考电压(VREF+),因此VDDA电源的质量会影响ADC误差。

(2)参考电压/电源调节

电源调节对于ADC精度十分重要,因为转换结果是模拟输入电压与VREF+值之比。当连接到VDDA或VREF+时,如果这些输入上的负载及其输出阻抗导致电源输出下降,将在转换结果中产生误差。

(3)外部参考电压参数

当使用外部参考电压源(VREF+引脚上)时,该外部参考源有一些重要参数。必须考虑三个参考电压规格:温度漂移、电压噪声和长期稳定性。

(4)模拟输入信号噪声

在采样时间内,小而高频率的信号变化可导致较大转换误差。此噪声由电气设备(例如电机、发动机点火、电源线)生成。它增加了不需要的信号,因此会影响源信号(例如传感器)。这样一来,导致ADC转换结果不准确。

(5)最大输入信号幅度的ADC动态范围匹配不佳

为获得最高ADC转换精度,ADC动态范围必须与待转换信号的最大幅度相匹配。我们假设待转换信号在0 V与2.5 V之间变化,并且VREF+等于3.3 V。如下图所示,有部分未使用的ADC转换范围,也会使转换后信号精度下降。

8480fe02-3b07-11ed-9e49-dac502259ad0.png

如何提高ADC采集数据准确性

这个问题之前写过相关的内容,只是没有单独提出来说,这里汇总一下。

1、减少ADC相关误差的影响

上面描述了“ADC自身导致的误差”,使用STM32 ADC自校准功能或通过微控制器固件可以轻松补偿偏移误差和增益误差。

之前在分享的代码中有提到,比如通过软件校正:

ADC_StartCalibration(ADC1);

2、使外部环境误差最小化

(1)参考电压/电源噪声最小化

也就是在VREF和VDDA引脚连接外部去耦电容。

84ad0da8-3b07-11ed-9e49-dac502259ad0.png



(2)模拟输入信号噪声消除


通过添加外部RC滤波器以消除高频。

(3)将ADC动态范围与最大信号幅度进行匹配


也就是将参考电压范围匹配采样电压(当然,需要有参考电压引脚的芯片才行)。

84ee81b6-3b07-11ed-9e49-dac502259ad0.png



同时,也可以使用放大器针对ADC范围调整输入信号范围:

8530b7f2-3b07-11ed-9e49-dac502259ad0.png




(4)温度影响补偿

第一种方法是完整描述偏移和增益漂移特性,并在存储器中提供查询表,以便根据温度变化修正测量值。此校准方法需要额外的成本和时间。第二种方法包括使用内部温度传感器和ADC看门狗,以在温度变化达到给定值时重新校准ADC。

(5)优化PCB布局

将模拟和数字布局分开

隔离模拟和数字电路电源

供电和接地使用单独的PCB层

3、提高精度的软件方法


(1)平均采样

平均会降低速度但可以提高精度

(2)数字滤波(抑制DC值中的50/60 Hz噪声)

设置适当的采样频率(这种情况下,从计时器触发十分有用)。

对采样数据执行软件后处理(例如,对50 Hz噪声及其谐波抑制进行组合滤波)。

(3)AC测量的快速傅里叶变换(FFT)

此方法可以显示被测信号中的谐波部分。

由于使用了更强的计算能力,因此速度较慢。

(4)ADC校准:偏移、增益、位权重校准

ADC校准可减少内部ADC误差。但是,必须知道内部ADC结构。

(5)使CPU生成的内部噪声最小化应用设计必须确保

ADC转换期间来自微控制器的干扰尽可能小。

使采样和转换期间的数字信号变化量最小化(数字静默)。

好了,本文就写到这里,希望能对大家有所帮助。

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16009

    浏览量

    343527
  • 模块
    +关注

    关注

    7

    文章

    2477

    浏览量

    46520
  • adc
    adc
    +关注

    关注

    95

    文章

    5646

    浏览量

    539411

原文标题:单片机中ADC采集都存在哪些误差?

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    CYT2B9使用没有偏移和增益调整的ADCADC误差会出现A_TEB (+/-12LSB) 吗?

    你好,我有关于 ADC 的问题。 CYT2B9 数据表提到 ADC 的总误差规格如下: 1、总误差是什么意思? 总误差是否意味着量化
    发表于 01-22 06:21

    详述ADC精度和分辨率的差异

    在与使用模数转换器(ADC)的系统设计人员进行交谈时,我最常听到的一个问题就是: “你的16位ADC精度也是16位的吗?” 这个问题的答案取决于对分辨率和精度概念的基本理解。尽管
    发表于 12-20 06:55

    ADC的所有误差都有哪些?

    和采样保持,如果选的参考源很好的话AD精度就会提高,外置的采样保持器往往比AD内部的采样保持器要好。 我的问题是:ADC的所有误差都有哪些?有没有这种讲所有误差并且有公式的资料没?我想
    发表于 12-19 08:04

    ADC中可能贡献误差率的基本因素

    电子发烧友网站提供《ADC中可能贡献误差率的基本因素.pdf》资料免费下载
    发表于 11-28 09:06 0次下载
    <b class='flag-5'>ADC</b>中可能贡献<b class='flag-5'>误差</b>率的基本因素

    Flash ADC中电阻误差对性能的影响

    Flash ADC常由电阻DAC和比较器组成,性能受限电阻匹配精度和比较器offset。
    的头像 发表于 11-20 17:46 663次阅读
    Flash <b class='flag-5'>ADC</b>中电阻<b class='flag-5'>误差</b>对性能的影响

    如何计算集成斩波放大器的ADC失调误差和输入阻抗?

    的影响。 一、ADC失调误差的计算 先来了解什么是ADC失调误差ADC(Analog-to-Digital Converter)将模拟信号
    的头像 发表于 10-25 11:50 390次阅读

    失调误差是如何影响单极性ADC传递函数的?

    失调误差是如何影响单极性ADC传递函数的? 失调误差是一个影响ADC传递函数的重要因素。在单极性ADC中,失调
    的头像 发表于 10-24 10:20 312次阅读

    如何在STM32F10xxx上得到最佳的ADC精度

    转换的应用中,ADC精度影响到整个系统的质量和效率。为了能够达到应有的精度,用户需要了解ADC误差是如何产生的和影响它的参数。转换
    发表于 10-10 06:26

    基于Arm Cortex-M0+的MCU上的ADC增益误差和失调误差校准

    电子发烧友网站提供《基于Arm Cortex-M0+的MCU上的ADC增益误差和失调误差校准.pdf》资料免费下载
    发表于 09-25 10:08 0次下载
    基于Arm Cortex-M0+的MCU上的<b class='flag-5'>ADC</b>增益<b class='flag-5'>误差</b>和失调<b class='flag-5'>误差</b>校准

    HPM系列MCU 高精度ADC误差分析和设计指南

    电子发烧友网站提供《HPM系列MCU 高精度ADC误差分析和设计指南.pdf》资料免费下载
    发表于 09-19 15:45 0次下载
    HPM系列MCU 高<b class='flag-5'>精度</b><b class='flag-5'>ADC</b>之<b class='flag-5'>误差</b>分析和设计指南

    单片机中ADC采集都存在哪些误差

    单片机中ADC采集都存在哪些误差
    的头像 发表于 09-18 16:31 2309次阅读
    单片机中<b class='flag-5'>ADC</b>采集都存在哪些<b class='flag-5'>误差</b>?

    如何在STM32系列器件获取最佳的ADC精度

    了解与ADC相关的误差以及影响它们的参数。ADC精度不仅取决于ADC性能和功能,还取决于ADC
    发表于 08-31 10:47 0次下载

    影响单片机ADC转换精度的主要误差

    本篇文章列出了影响模数转换精度的主要误差。这些类型的误差存在于所有模数转换器中,转换质量将取决于它们的消除情况。STM32微控制器数据手册的ADC特性部分规定了这些
    发表于 08-04 10:35 1525次阅读
    影响单片机<b class='flag-5'>ADC</b>转换<b class='flag-5'>精度</b>的主要<b class='flag-5'>误差</b>

    浅谈ADC的分辨率与精度

    为确保系统满足所需的精度规范,透彻了解不同的误差源非常重要。决定信号链精度的最关键要素之一是A/D 转换器 (ADC),这是本文的重点。请记住,AD
    发表于 05-22 11:39 2124次阅读
    浅谈<b class='flag-5'>ADC</b>的分辨率与<b class='flag-5'>精度</b>

    谈谈ADC的分辨率与精度

    为确保系统满足所需的精度规范,透彻了解不同的误差源非常重要。决定信号链精度的最关键要素之一是A/D 转换器 (ADC),这是本文的重点。请记住,AD
    发表于 05-15 14:06 4774次阅读
    谈谈<b class='flag-5'>ADC</b>的分辨率与<b class='flag-5'>精度</b>