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

发布者:喜茶我要七分糖最新更新时间:2023-02-01 来源: zhihu关键字:单片机  ADC采集  误差 手机看文章 扫描二维码
随时随地手机看文章

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的倍数:

    1 LSB = VREF+ / 2^12.

    (1)偏移误差

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

    负偏移误差的表示方法:

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

    负增益误差的表示方法:

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

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

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

    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转换范围,也会使转换后信号精度下降。

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

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

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

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

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

      ADC_StartCalibration(ADC1);

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

      (1)参考电压/电源噪声最小化也就是在VREF和VDDA引脚连接外部去耦电容

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

      通过添加外部RC滤波器以消除高频。(3)将ADC动态范围与最大信号幅度进行匹配也就是将参考电压范围匹配采样电压(当然,需要有参考电压引脚的芯片才行)。

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

      (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转换期间来自微控制器的干扰尽可能小。

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

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


      关键字:单片机  ADC采集  误差 引用地址:单片机中ADC采集都存在哪些误差

      上一篇:单片机硬件电路的设计方案和心得
      下一篇:扒一扒单片机串口IAP原理

      推荐阅读最新更新时间:2024-11-10 21:59

      8051单片机教程第二十八课:单片机音乐程序的设计
      利用单片机(或单板机)奏乐大概是无线电爱好者感兴趣的问题之一。本文从单片机的基本发间实验出发,谈谈音乐程序的设计原理,并给出具体实例,以供参考。 单片机的基本发音实验 我们知道,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单处机某个口线的“高”电平或低电平,则在该口线上就能产生一定频率的矩形波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调。 例如,要产生200HZ的音频信号,按图1接入喇叭(若属临时实验,也可将喇叭直接接在P1口线上),实验程序为: 其中子程序DEL为延时子程序,当R3为1时,延时时间约为20us,R3中存放延时常数,对200
      [单片机]
      8051<font color='red'>单片机</font>教程第二十八课:<font color='red'>单片机</font>音乐程序的设计
      关于PIC单片机SLEEP指令
      之前一直没有真正理解sleep指令,最近在做智能水表的产品的时候,用了一款8位的单片机PIC16F690,当看到程序中的sleep指令时以为执行后cpu还会工作,导致一些认识上的错误,在网上搜索了一下,找到了一篇关于sleep的详细说明文章,现收集下来以便以后查询! 在执行SLEEP指令后进入睡眠省电模式。进入SLEEP模式后,主振荡停止,如果看门狗在烧写时打开了,看门狗定时器将被清并保持运行。I/O 口,周边模块和内部RAM将保持原来状态,所以如果要求睡眠后有很低功耗,应该在进入SLEEP前把IO口置为高阻抗的输入状态,不用的模块也要关闭。另有些周边模块与主时钟有关,如在异步模式下的USART,将不工作。 唤醒SLEEP
      [单片机]
      关于单片机编译器中对函数中局部变量的处理和PC不同
      通常我们都是学了标准c语言教程后从事单片机c语言的编写的, 那就先要明白一点, 标准c语言实际上是起源于pc平台上的一种语言, 标准c语言肯定是不会照顾到单片机的特殊性的. 因此单片机c编译器中的c语言是一种基于标准c,但是又有相应修改扩充的扩展c语言. 所以在单片机c编译器里写程序时一定要了解单片机编译器扩展c语言的不同之处, 绝不能死板地照搬标准c。 在标准c里, 局部变量是函数在调用的时候才临时分配存储空间的,全局变量是程序整个生命周期都一直存在的. 不过要知道,临时分配存储空间是需要操作系统内存管理程序支持的, 单片机中通常都没有操作系统,也就不能实现像pc平台中那样的局部变量的空间分配. 这里就需要深入了解一下单片机
      [单片机]
      用51单片机做信号发生器,同时输出四种频率的方波
      //编写51单片机程序,输出方波。 //要求:晶振为12MHz,用T0做定时器,在P1的低四位输出四种频率的方波: // P1.3 = 1.25kHz、P1.2 = 2.5kHz、P1.1 = 5kHz、P1.0 = 10kHz //另外,上述四个频率要求用一个四选一数据选择器,再选出其中的一个输出出去。 //P1.6、P1.7的输出用来控制四选一数据选择器的选择位,它们由P3.0按键控制。 //悬赏分:10 - 解决时间:2009-12-5 10:45 //=================================================== //最佳答案: //本题目早在一年前就回答完毕,现在增加了PROTE
      [单片机]
      用51<font color='red'>单片机</font>做信号发生器,同时输出四种频率的方波
      单片机两个PIT中断不能同时运行的解决方法
      基于以下的事实: ①中断子程序中,清楚中断标志位时,如果使用BSET位操作指令,PITTF清零,PIT1的中断标志位也被清零;(《单片机与嵌入式系统开发方法》P238) ②PIT中断优先级通道0大于通道1; ③1s恰好是10ms的整数倍。 所以,每到1s的时候,通道0和通道1同时发生中断,由于通道0优先级高,先进入通道0的中断子程序,而通道0的中断子程序中的清中断动作把通道1的中断标志位也清零,这样等通道0的中断程序返回时,通道1就不能发生中断了,这样通道1的中断子程序就永远不能运行。 我查看了PITTF_PTF = 1;的汇编代码为C083 BSET 0x0345,#2。 当然这只是猜想,验证如下: 1)针对③,把PIT1中断
      [单片机]
      STM32单片机使用SWD(Serial wire debug)模式 下载程序出错问题解决
      最近在使用STM32F105单片机做产品,使用SWD接口下载程序,遇到一些问题,得益于网上的一些文章最后得以解决,所以也想把问题解决的过程整理出来,以供出现同类问题的技术人员进行参考,本人没有系统地学习SWD接口下载程序的过程(每天的时间都在赶开发进度,很难静下心来系统地学习一项技术了,惭愧),只是提供一点经验。 问题:使用SWD模式下载程序,遇到 Cannot access Memory (@ 0xe00ffff0, Read, Acc Size: 4 Byte) RDDI-DAP Error 等问题提示 问题发生以及解决的过程: 开始使用SWD模式下载程序都还比较顺利, 随着开发的程序增加,有一天突然不能正常下载
      [单片机]
      STM32<font color='red'>单片机</font>使用SWD(Serial wire debug)模式 下载程序出错问题解决
      18-基于51单片机的噪声测量仪仿真
      具体实现功能: ①LCD1602实时显示噪声分贝值,精度为0.1db; ②可以按键设置报警值,实现声光报警;三个按键:设置键、加键、减键; ③当噪声分贝值未超过阀值时,绿灯闪烁;当超过阈值时,红灯闪烁并蜂鸣器报警。 单片机介绍 51单片是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C51为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM,32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位 定时器/计
      [单片机]
      18-基于51<font color='red'>单片机</font>的噪声测量仪仿真
      MCS-51 单片机 存贮器 组织结构
      计算机的存贮器的管理模式,大致可分为两类。第一类是将程序存贮器和数据存贮器分开,并有各自的寻址机构和寻址方式,这种结构形式称为哈佛型结构。另一类是存贮器逻辑空间统一管理,可随意安排ROM或RAM,访问时用同一种指令,这种结构形式称为普林斯顿型。MCS-51单片机的存贮器结构属于前者,一般微机属于后者。 数据存贮器RAM也有64KB寻址区,在地址上是和ROM重叠的。MCS-51通过不同的信号来选通ROM或RAM:当从外部ROM取指令时用选通信号 ,而从外部RAM读写数据时采用读写信号 来选通。因此不会因地址重叠而出现混乱。
      [单片机]
      MCS-51 <font color='red'>单片机</font> 存贮器 组织结构
      小广播
      设计资源 培训 开发板 精华推荐

      最新单片机文章
      何立民专栏 单片机及嵌入式宝典

      北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

      换一换 更多 相关热搜器件

       
      EEWorld订阅号

       
      EEWorld服务号

       
      汽车开发圈

      电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved