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

01前言
本篇文章列出了影响模数转换精度的主要误差。这些类型的误差存在于所有模数转换器中,转换质量将取决于它们的消除情况。stm32微控制器数据手册的adc特性部分规定了这些误差 值。规定了stm32 adc的不同精度误差类型。为便于参考,将精度误差表达为1 lsb的倍数。就电压而言,分辨率取决于参考电压。通过将lsb数乘以1 lsb对应的电压来计算电压误差。
02 adc自身导致的误差
偏移误差
偏移误差是第一次实际转换和第一次理想转换之间的偏离。第一次转换发生在数字adc输出 从0变为1时。理想情况下,当模拟输入介于0.5 lsb和1.5 lsb之间时,数字输出应为1。仍然是理想情况下,第一次转换发生在0.5 lsb处。用eo表示偏移误差。可通过应用固件轻松校准偏移误差。
示例:
对于stm32 adc,电压的最小可检测增量变化用lsb表示为:
1 lsb = vref+/4096(在某些封装上,vref+ = vdda) 
如果 vref+=3.3 v,则在理想情况下, 402.8 µv(0.5 lsb = 0.5 × 805.6 µv)的输入应导致生成数字输出 1。但实际上,adc可能仍然提供读数 0。如果从550 µv的模拟输入获得 数字输出 1,则:
偏移误差 = 实际转换 – 理想转换 
eo = 550 µv – 402.8 µv = 141.2 µv 
eo = 141.2 µv / 805.6 µv = 0.17 lsb
当大于0.5 lsb的模拟输入电压生成第一次转换时,偏移误差为正。如下图:
当小于0.5 lsb的模拟输入电压生成第一次转换时,偏移误差为负。如下图:
增益误差
增益误差是最后一次实际转换和最后一次理想转换之间的偏离。增益误差用eg表示。最后一次实际转换是从0xffe到0xfff的转换。
理想情况下,当模拟输入等于vref+ – 0.5  lsb时,应存在从0xffe到0xfff的转换。因此对于vref+= 3.3 v,最后一次理想转换应发生 在3.299597 v处。如果adc提供vain < vref+ – 0.5 lsb的0xfff读数,将获得负增益误差。
示例
按以下公式计算增益误差: 
eg = 最后一次实际转换 – 理想转换 
如果vref+ = 3.3 v且vain = 3.298435 v时生成从0xffe到0xfff的转换,则:
eg = 3.298435 v – 3.299597 v 
eg = –1162 µv 
eg = (–1162 µv / 805.6 v) lsb = –1.44 lsb 
如果vain等于vref+时没有得到满量程读数(0xfff),则增益误差为正。
正增益误差的表示方法:
负增益误差的表示方法:
微分线性误差
微分线性误差(dle)为实际步进和理想步进之间的最大偏离。这里的“理想情况”不是指理想传输曲线,而是指adc分辨率。在下图中,用ed表示dle。 
ed = 实际步宽 – 1 lsb
理想情况下,1 lsb的模拟输入电压变化量应导致数字代码变化。如果需要大于1 lsb的模拟输入电压才能导致数字代码变化,将观察到微分线性误差。因此,dle对应于从一个数字代 码变为下一个数字代码所需的最大额外电压。dle也称为微分非线性(dle)误差。
示例
给定数字输出应对应于模拟输入范围。理想情况下,步宽应为1 lsb。我们假设1.9998 v至 2.0014 v模拟输入电压范围内的数字输出相同,则步宽为:2.0014 v – 1.9998 v = 1.6 mv。因此,ed等于较高(2.0014 v)和较低(1.9998 v)模拟电压之间的电压差减去1 lsb所对应的电压。
如果vref+ = 3.3 v,则1.9998 v(0x9b1)的模拟输入可提供介于0x9b0和0x9b2之间的结 果。同样地,2.0014 v(0x9b3)的输入可提供介于0x9b2和0x9b4之间的结果。因此,0x9b2步进所对应的总电压变化量为: 
0x9b3 – 0x9b1
即 2.0014 v – 1.9998 v = 1.6 mv (1660 µv) 
ed = 1660 µv – 805.6 µv 
ed = 854.4 µv 
ed = (854.4 µv/805.6 µv) lsb 
ed = 1.06 lsb 
假设当步宽小于1 lsb时,电压高于2.0014 v不会导致0x9b2数字代码,则ed为负。
积分线性误差
积分线性误差为任何实际转换和端点相关线间的最大偏离。在下图中,用el表示ile。端点相关线可以定义为a/d传输曲线上连接第一次实际转换与最后一次实际转换的线。el是指与每一次转换的这条线的偏离。因此,端点相关线对应于实际传输曲线并且与理想传输曲线不相关。ile也称为积分非线性(inl)误差。ile是整个范围内dle的积分。
示例 
如果从 0 到 1 的第一次转换发生在 550 µv 处并且最后一次转换(0xffe 到 0xfff)发生在 3.298435 v(增益误差)处,则传输曲线上连接实际数字代码 0x1 和 0xfff 的线为端点相关线。
总未调整的误差
总未调整误差(tue)为实际和理想传输曲线间的最大偏离。此参数指定可能发生的会导致理想数字输出与实际数字输出之间最大偏离的总误差。tue是记录到的任何输入电压的理想预期值与从adc获得的实际值之间的最大偏离。在下图中,用et表示tue。tue不是eo、eg、el与ed之和。偏移误差影响较低电压的数字结果,而增益误差影响较高电压的数字输出。 
示例
如果vref+ = 3.3 v且vain = 2 v,则理想结果为0x9b2。但是,如果得到的转换结果为0x9b4, 由于dle和ile同时发生,因此偏离可能源于偏移。 
tue = 绝对(实际值 – 理想情况值) 
= 0x9b4 – 0x9b2 = 0x2 = 2 lsb


豪威集团在AutoSens展会上首次推出人工智能专用集成电路OAX4600
产5万吨高档电解铜箔项目 6月底将投入试生产
狂热已成泡影 小米每股17-22港元 IPO融资47亿美元
共探家电IC技术 电子变压器望资源共享
晶圆代工产能供应仍将继续吃紧
影响单片机ADC转换精度的主要误差
[图文]BA1404立体声调频发射电路
简单介绍一下工业视觉测量系统中的组成结构
一种新型直流电源监控系统的设计-安科瑞贾林杨
PicoScope中滞后量参数的作用及其在实际应用中的重要性
2016汽车照明最新技术、产业及市场趋势
怎样去解决三相空调漏电跳闸的问题呢
雷曼将入局万亿级C端家用显示市场 重塑LED显示应用新格局
影响音叉式密度计测量误差的因素有哪些
发力在华电动出行业务 戴姆勒收购北汽新能源3.9%股份
通过自然运动遥控器导航数字融合
首批在医疗保健领域成功商用的M2M解决方案之一是由CardioNet所提供的
深圳汽车电子产业链以及市场分析
晶振可以在工作温度范围之外工作吗?
iOS11正式版今晨推送:iOS11正式版新功能汇总,这些问题不解决就升级你会后悔的