查看: 3556|回复: 2

关于ADC测量误差的讨论(上)

[复制链接]
  • TA的每日心情
    开心
    2025-7-11 08:53
  • 签到天数: 301 天

    连续签到: 2 天

    [LV.8]以坛为家I

    3916

    主题

    7534

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    39871
    最后登录
    2025-8-15
    发表于 2023-1-12 11:09:26 | 显示全部楼层 |阅读模式
    关于ADC测量误差的讨论(上)


    本文首先讨论一下ADC模块固有的误差,然后重点讨论由工作环境导致的误差,在下半部分将重点讨论电路上输入阻抗的影响,最后给出一些实用建议。

    在讨论影响ADC转换精度的主要误差时,为便于参考,将精度误差以LSB为单位来表达。对应到测量电压的结果,则是以这个精度数值乘以1 LSB对应的电压,1 LSB对应的电压与测量的分辨率相关,以12位分辨率为例,1 LSB = VREF+ / 4096或VDDA / 4096。

    ADC模块自身引起的误差
    ADC自身误差为ADC本身设计和制造时所产生本体的误差,这类误差通常由以下静态参数表示:微分线性误差(DNL或ED)、积分线性误差(INL或EL)、偏移误差(OE或EO)、增益误差(GE或Verr(FS))。

    一般的MCU数据手册的ADC特性部分,给出了这些误差的定义和值。ADC自校准功能可以补偿其中大部分偏移误差。至于ADC的动态参数(如:ENOB)及其代表的误差程度,通常在语音和特定音频应用才会考虑,在一般MCU的应用场合不会太重视,本文暂且不讨论。

    ADC初始校准(校准OE和GE)
    在ADC的各种误差源中,偏移误差(OE)和增益误差(GE)属于”静态系统性”误差。他们可以在ADC初始化的时候被最大程度的校准和补偿掉,这就是为什么在SDK的代码中,我们看到ADC正式使用之前都需要做一次”自动校准”,SDK代码如下所示:
    11.png
    我们来详细了解下这两种误差:
    1. 零偏误差(Offset Error):说白了就是零偏,如下图所示:
    12.png
    当被测输入为0V的时,理论上ADC应该输出也应为0,但实际总有一个微小的零偏,这个偏置是一个确定性的系统误差,由于ADC制造工艺引起,但每次上电后偏差基本稳定不变,所以可以被校准。


    2. 增益误差Gain error):即ADC输出值与实际值之间存在一个比例系数,故增益误差也叫做比例系数误差,这个系数可正可负,且只和ADC本身工艺相关,故可以被校准。
    13.png
    这两种误差与ADC输出可以表示为简单的线性函数关系:
    ADC实际输出代码 = (增益误差 × 输入电压) + 失调误差 增益 = 2N ÷ 基准电压
    SDK代码中的这两行:
       LPADC_DoOffsetCalibration(DEMO_LPADC_BASE);
       LPADC_DoAutoCalibration(DEMO_LPADC_BASE);
    就是分别校准Offset 和 Gain Error,校准的具体步骤可以参考手册ADC Calibration有关章节。

    ADC环境导致的误差
    参考电压/电源噪声
    由于ADC转换值为模拟信号电压(V_"AIN " )与参考电压之比(V_"REF " ),因此在VREF上的任何噪声都会导致转换后数字值的变化。另外,VDDA电源的质量同样会影响ADC误差。VREF上面几十mV的波动就会造成十几LSB的误差。

    就供电侧噪声而言,DCDC电源模块通常内置快速切换功率晶体管,这会在DCDC输出中产生高频噪声,此切换噪声介于15kHz至1MHz之间,这种DCDC电源输出噪声足以造成ADC模块十几LSB的误差,必须留意。

    一般来说,线性稳压器的输出质量更佳。如果使用DCDC电源的话建议另外使用单独的线性稳压器给模拟部分供电,并且应在靠近电源的位置安装一个0.1μF和一个1至10μF的电容。小值电容过滤高频噪声,高值电容过滤低频噪声。

    要过滤高频噪声,还可使用与电源串联的铁氧体电感器(FB: ferrite bead)。由于FB的串行电阻极低,此解决方案导致的直流损失极低(可忽略不计),除非电流很大。

    MCU端VDD和VSS引脚的位置一般很接近,因此可以在尽量靠近的位置通过极短的引线将电容连接到微控制器。VDDA和VREF引脚必须连接到两个外部去耦电容,100nF陶瓷电容加上1μF钽电容或陶瓷电容。

    注意数字地与模拟地应相互隔离,避免噪声串扰。
    14.png
    模拟输入信号噪声
    在采样时间内,幅值小且高频率的信号变化可导致较大转换误差。这种噪声可能由电气设备(例如电机、发动机点火、电源线)产生。这些噪声本身就存在于ADC输入信号上,同样可导致ADC转换结果不准确。

    采样平均滤波
    一个最简单常用的技巧: 即通过软件对模拟输入多次采样,取所有结果的均值,此技巧有助于消除模拟输入上的高频噪声。如果被测模拟信号产生不稳定的ADC值,软件运算 时则可以通过剔除大值和小值,选择适当数量的待平均样本执行平均。此数量取决于需要的精度、最低转换速度。

    平均滤波法的优势是可以在无任何硬件更改的情况下提高ADC精度。它的缺点是转换速度和频率响应较慢,相当于降低了有效采样频率。

    平均滤波法也针对不同需求发展出各样差别,如:限幅滤波、中位值滤波、递推平均滤波、消抖滤波及其组合等等的算法。使用者可根据信号特性和芯片资源选择合适的数据平均方式。

    另外,大多数MCU的ADC硬件也支持硬件自动平均,原理上和软件平均一样。

    在ADC输入端添加外部滤波器
    添加外部RC滤波器以消除高频。

    这种情况下,截止频率fC一般设计为所关心的信号最高频率的2-5倍。但添加了外部RC滤波器时,ADC的采样时间和采样间隔都需要重新评估,否则可能造成更大的量测误差。

    模拟信号源阻抗的影响
    模拟信号源的阻抗或串联电阻(R_"AIN " ),可能会因为采样时流入或流出引脚的电流而导致其上的电压瞬间改变,这时ADC内部采样保持电容充满电所需要的时间会延长。如果采样时间短于将内部采样电容充分充放电所需的时间,则ADC转换的数字值会与实际值有徧差。

    内核或其他数字外设生成的噪声
    当CPU(以及其他外设)运行时,会产生大量内部和外部信号变化,这些变化通过电容耦合传输到ADC外设。此类干扰影响ADC精度。

    为使CPU(以及其他外设)对ADC的影响最小化,必须使采样和转换期间的数字信号变化量最小化 (数字静默)。

    使用下列方法之一可以实现这一点(在采样和转换时间内实现):

    采样时内部CPU变化量最小化(CPU停止,等待模式)

    采样时停止非必要外设(计时器、通信等)的时钟

    温度影响
    温度对ADC精度有重要影响。

    它主要产生两种重要误差:偏移误差漂移和增益误差漂移。建议使用内部温度传感器和ADC看门狗,以在温度变化达到给定值时重新校准ADC。

    I/O引脚串扰
    由于I/O之间的电容耦合,切换I/O可能会在ADC的模拟输入中产生一些噪声。

    彼此距离很近或交叉的PCB走线可能会产生串扰。内部切换数字信号和I/O会产生高频噪声。由于电流浪涌,切换高灌电流 I/O可能导致电源电压小幅下降。PCB上与模拟输入走线交叉的数字走线可能影响模拟信号。

    PCB布线时,应考虑对ADC输入信号给予屏蔽,可在信号线周围铺铜并就近接地,同时应尽量缩短走线距离。

    另外在ADC采样和转换时间内实现I/O引脚变化量最小化,对减小对ADC的干扰很有帮助。

    EMI产生的噪声
    邻近电路产生的电磁辐射,可能在模拟信号中产生高频噪声,此时PCB走线相当于天线接收干扰噪声。

    解决方法是,通过在可能的发射源和接收器之间提供物理隔离,或通过适当的接地和屏蔽措施对它们进行电气隔离。如: 沿敏感模拟信号布置接地走线,在PCB上提供屏蔽。这样可以防止干扰和I/O串扰影响信号。

    应使用屏蔽线缆将远距离信号(例如:传感器)连接到PCB或注意尽可能缩短PCB上信号的路径长度。

    晶振、时钟以及存在快速变化的信号线尽量远离ADC输入信号。

    qiandao qiandao
    回复

    使用道具 举报

  • TA的每日心情
    开心
    昨天 22:21
  • 签到天数: 1716 天

    连续签到: 9 天

    [LV.Master]伴坛终老

    23

    主题

    1万

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    15901
    最后登录
    2025-8-15
    发表于 2023-1-12 13:07:07 | 显示全部楼层
    感谢大佬的分享,学习了!
    跟着日天混,三天饱九顿!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-9-13 10:02
  • 签到天数: 297 天

    连续签到: 1 天

    [LV.8]以坛为家I

    34

    主题

    3512

    帖子

    38

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    6066

    活跃会员

    最后登录
    2025-7-30
    发表于 2023-1-12 13:37:48 | 显示全部楼层

    感谢大佬的分享,学习了!
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-8-16 09:08 , Processed in 0.087727 second(s), 23 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表