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

控制/MCU

1876人已加入

描述

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的模拟输入电压生成第一次转换时,偏移误差为正。如下图:

STM32

当小于0.5 LSB的模拟输入电压生成第一次转换时,偏移误差为负。如下图:

STM32

增益误差

增益误差是最后一次实际转换和最后一次理想转换之间的偏离。增益误差用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),则增益误差为正。

正增益误差的表示方法:

STM32

负增益误差的表示方法:

STM32

微分线性误差

微分线性误差(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所对应的电压。

STM32

如果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的积分。

STM32

示例 

如果从 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

STM32

审核编辑:汤梓红

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分