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。
/ The End /
文档来源:how-to-get-the-best-adc-accuracy-in-stm32-microcontrollers-stmicroelectronics.pdf
推荐阅读
STM32 ADC内部原理
STM32 时钟分析
扫码关注我们
看更多嵌入式案例
喜欢本篇内容请给我们点赞、在看
免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!