转自deyisupport这个情景真的令人很沮丧:你终于将模数转换器 (ADC) 搭建起来并开始运行,不过事情看起来有点儿不太正常。你输入了一个电压,不过ADC的输出有所不同。 出了什么问题?
看起来所有的设置都没有什么问题。有可能是通信问题,或者是你的ADC没有正确地测量模拟输入。 调试测量问题的最好工具是低噪声电压源和精密万用表,如图1所示。使用这个电压源作为ADC的输入信号,而高精度万用表测量ADC的输入和基准,你可以将预计的结果与ADC报告值相比较。只需确保输入电压以输入范围内的一个DC电压为基准。
图1:一个低噪声电压源和高精度万用表是2个很不错的模拟调试工具
需牢记的一点是,ADC测量输入,并且输出一个转换代码,这个代码与输入和基准的比成比例。如果你使用的是一个具有±VREF两级范围的24位ADC,输出数据由方程式1确定:
你可以在满量程范围内获得数个模拟输入测量值,并且比较预计输出代码与ADC的报告值。通过使用这些数据,你可以计算结果值的偏离程度。你还可以确定这个误差是增益误差还是偏移误差。只要确保直接在器件的输入引脚上测量信号,获得一个准确的万用表读数。
如果差异比较小,那么ADC也许只需校准一下就可以了。高精度ADC通常需要一个校准命令来消除偏移和增益误差。
也许你尝试增加输入电压,但是ADC代码并没有移动。由于输入缓冲器限制了信号,有可能运行范围在输入范围之外。例如,24位,30kSPS ADS1255内的输入缓冲器在底端扩展至GND,在顶端扩展至AVDD -2V。 对于其它器件(比如说24位、2kSPS ADS1220),缓冲器是一个完全模拟可编程增益放大器 (PGA)。在这些情况下,你需要考虑PGA增益,输入和输出共模范围,或者PGA也许会限制你的测量。 图2显示的是,ADS1220数据表内描述这些限制的PGA共模电压要求部分的PGA图。 另外一个潜在的误差源有可能位于输入滤波内,大输入串联电阻会与输入偏置电流相互作用,增加测量值中的电压误差。此外,使用截止频率过低的输入滤波会干扰ADC的采样属性。对于每个模块化时钟,用一个输入电容器对输入和基准进行采样。这个采样必须在模块时钟周期内完成。由于输入被定期采样和放电,输入路径中的电感会由于定期采样而导致电压误差。
与模拟输入相类似,你需要对基准输入采取相似的操作。大输入阻抗将导致相似误差。
验证基准是否正确运行也很重要。例如,24位,2kSPS ADS1248的内部基准需要1μF和47μF之间的负载电容。此外,VREFCOM引脚到AC接地节点路径的电阻必须小于10W。如果不满足这两个条件,基准会变得不稳定。外部基准会有相似的稳定性问题。这些不常见的误差也许用万用表无法检测出来,有可能需要示波器才能追踪到。 在高集成器件中,比如说ADS1248,很多功能是在特定情况下使用的。如果使用这些选项不当,它们会干扰测量值。 图3显示的是ADS1248的方框图。红圈内的功能块在接通但未使用时有可能干扰测量值。 模拟与数字部分的不当接地会导致电路中的接地环路电压。这会干扰输入信号以及基准电压。良好的布局布线能够减少测量值中的这些误差。ADC周围的其它电路,诸如泄露的静电放电 (ESD) 二极管或外部缓冲器,也会引入误差。
当ADC的测量值不太对时,良好的调试可以帮助你确定到底是哪里出了问题。等下次你的ADC无法给出正确结果时,就试试在本文中所谈到的常见误差源吧。