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

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

3天内不再提示

ADC采集的数据都准确吗?

黄工的嵌入式技术圈 来源:黄工的嵌入式技术圈 2020-03-04 10:08 次阅读

想要提高ADC采集精度,软件和硬件工程师都应该了解一下相关的内容!

1写在前面

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做更多了解。下面章节带领大家了解相关内容。

2

ADC误差

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

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

1.ADC自身导致的误差

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

1 LSB = VREF+ / 2^12.

A.偏移误差

偏移误差是第一次实际转换和第一次理想转换之间的偏离。第一次转换发生在数字ADC输出从0变为1时。理想情况下,当模拟输入介于0.5 LSB和1.5 LSB之间时,数字输出应为1。

仍然是理想情况下,第一次转换发生在0.5 LSB处。用EO表示偏移误差。可通过应用固件轻松校准偏移误差。

正偏移误差的表示方法:

负偏移误差的表示方法:

B.增益误差

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

正增益误差的表示方法:

负增益误差的表示方法:

C.微分线性误差

微分线性误差( DLE)为实际步进和理想步进之间的最大偏离。这里的“理想情况”不是指理想传输曲线,而是指ADC分辨率。

理想情况下, 1 LSB的模拟输入电压变化量应导致数字代码变化。如果需要大于1 LSB的模拟输入电压才能导致数字代码变化,将观察到微分线性误差。因此, DLE对应于从一个数字代码变为下一个数字代码所需的最大额外电压。

D.积分线性误差

积分线性误差为任何实际转换和端点相关线间的最大偏离,用EL表示ILE。

端点相关线可以定义为A/D传输曲线上连接第一次实际转换与最后一次实际转换的线。 EL是指与每一次转换的这条线的偏离。因此,端点相关线对应于实际传输曲线并且与理想传输曲线不相关。

E.总未调整误差

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

2.ADC环境导致的误差

A.参考电压噪声

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

B.参考电压/电源调节

电源调节对于ADC精度十分重要,因为转换结果是模拟输入电压与VREF+值之比。

当连接到VDDA或VREF+时,如果这些输入上的负载及其输出阻抗导致电源输出下降,将在转换结果中产生误差。

C.外部参考电压参数

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

D.模拟输入信号噪声

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

E.最大输入信号幅度的ADC动态范围匹配不佳

为获得最高ADC转换精度, ADC动态范围必须与待转换信号的最大幅度相匹配。

我们假设待转换信号在0 V与2.5 V之间变化,并且VREF+等于3.3 V。 如下图,有部分未使用的ADC转换范围,也会使转换后信号精度下降。

3

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

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

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

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

之前在分享的代码中有提到,比如:ADC_StartCalibration(ADC1);

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

A.参考电压/电源噪声最小化

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

B.模拟输入信号噪声消除

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

C.将ADC动态范围与最大信号幅度进行匹配

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

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

D.温度影响补偿

第一种方法是完整描述偏移和增益漂移特性,并在存储器中提供查询表,以便根据温度变化修正测量值。此校准方法需要额外的成本和时间。

第二种方法包括使用内部温度传感器和ADC看门狗,以在温度变化达到给定值时重新校准ADC。

E.优化PCB布局

将模拟和数字布局分开

隔离模拟和数字电路电源

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


3.提高精度的软件方法

A.平均采样

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

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

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

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

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

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

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

D.ADC校准:偏移、增益、位权重校准

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

E.使CPU生成的内部噪声最小化

应用设计必须确保

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

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

好了,就写到这里。本文内容参考ST官方应用笔记内容,经我整理分享给大家,还有许多方法,大家可以自行研究。

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

    关注

    146

    文章

    17185

    浏览量

    351727
  • adc
    adc
    +关注

    关注

    98

    文章

    6514

    浏览量

    545051
  • 引脚
    +关注

    关注

    16

    文章

    1204

    浏览量

    50668
收藏 人收藏

    评论

    相关推荐

    什么原因导致了ADS1262采集到的数据准确了?

    =2.39v,当Vp=1.5v,VN=0v,adc读取到的数据0x101F7626对应的电压V=0x101F7626/0xFFFFFFFF=0.15v 请问下是什么原因导致了采集到的数据
    发表于 11-26 08:12

    将LM50接在双极性的ADC上,能否采集准确的温度?

    LM50根据数据手册的描述,LM50可以接在AMC7836的ADC输入来采集温度,数据手册中给出的示例是接在“LV_ADC”上的,如果将L
    发表于 11-13 07:47

    ADC12DL3200的测试模式下数据采集不正确的原因?怎么处理?

    0xh00 0x06C 0xh01 当ADC处于测试模式时,ADC会发送固定的Pattern值,但其中一组信号无论我怎么调节IDELAY的Tap值无法实现数据正确
    发表于 11-13 07:38

    TLV320AIC3104内置ADC实现MIC数据采集准确度,为什么Codec测得的数据比原始信号要大那么多?

    第一个问题:用3104内置ADC 实现MIC数据采集准确度: 实测结果是:采集数据与实现信号大了约170mVrms; 测量办法:用示波
    发表于 10-14 08:22

    第12章-ADC采集电压和显示 基于STM32的ADC—电压采集(详细讲解+HAL库)

    第12章-ADC采集电压和显示 基于STM32的ADC—电压采集(详细讲解+HAL库)
    的头像 发表于 08-21 16:31 2735次阅读
    第12章-<b class='flag-5'>ADC</b><b class='flag-5'>采集</b>电压和显示 基于STM32的<b class='flag-5'>ADC</b>—电压<b class='flag-5'>采集</b>(详细讲解+HAL库)

    国产ADC兼容AD7606在便携式振动数据采集器中应用

    国产ADC兼容AD7606在便携式振动数据采集器中应用
    的头像 发表于 07-04 10:05 448次阅读
    国产<b class='flag-5'>ADC</b>兼容AD7606在便携式振动<b class='flag-5'>数据采集</b>器中应用

    16位200kSPS的ADC替代AD7606在数据采集系统中应用

    16位200kSPS的ADC替代AD7606在数据采集系统中应用
    的头像 发表于 06-03 09:42 587次阅读
    16位200kSPS的<b class='flag-5'>ADC</b>替代AD7606在<b class='flag-5'>数据采集</b>系统中应用

    STM32F334 ADC1和ADC2同步采样,有时会出现采ADC1和ADC2所有的通道采集数据一样的情况为什么?

    STM32F334 ADC1和ADC2同步采样,有时会出现采ADC1和ADC2所有的通道采集数据
    发表于 05-15 08:15

    ST BlueNRG-1的ADC每个接一个模拟量传感器,可以同时采集数据吗?

    传感器,可以同时采集数据吗? 另外接麦克风的PDM接口也用到了ADC单元,可以同时采集ADC数据的同时同时
    发表于 05-06 06:12

    stm32 ADC定时唤醒采集数据,工作一段时间adc值不变了是为什么?

    ,但是不知道过多久,随机的,adc数据就会停留在一个固定数值,不论我怎么调节模拟输入无效 用仿真器查了dma 和数据buf 和adc的D
    发表于 04-11 07:22

    STM32F4 ADC采集数据不匹配是什么原因造成的?如何解决?

    地。 然而实际采集到的数据是: 输入电压0V~ADC转换数据0; 输入电压1.054V~ADC转换数据
    发表于 04-02 08:21

    STM32G431的ADC数据准确是什么原因导致的?

    我在一个STM32G431的核心板上做的测试工程. 使用 ADC1,TIM1,DMA1 实现的 ADC多通道定时采集工程. ADC进行了校准, 采集
    发表于 03-26 08:22

    DMA传输打印ADC采集数据ADC采集直接打印数据不同,为什么?如何排查?

    现在发现利用DMA将ADC采集数据传入数组打印与直接将ADC采集数据打印 出来有差异,为啥呢
    发表于 03-19 07:39

    关于STM32G474 ADC多通道数据采集遇到的问题求解

    STM32G474 ADC时钟:168MHz/4=42MHz 分辨率 12bit 单端输入 ADC1 采集6通道数据 采样时间6.5cycle 单端1.65V【0~-10mV左右跳动
    发表于 03-14 08:11

    振弦采集仪:高效准确,助力工程监测

    工程监测工作更加精确和有效。 振弦采集仪:高效准确,助力工程监测 首先,振弦采集仪可以实时采集振弦信号,并将其转换为数字信号进行处理。这种数字信号处理的方式可以大大降低测量误差,提高
    的头像 发表于 02-21 13:46 403次阅读
    振弦<b class='flag-5'>采集</b>仪:高效<b class='flag-5'>准确</b>,助力工程监测