This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[FAQ] [参考译文] [常见问题解答] ADS129x:如何将 ADC 输出代码转换为电压?

Guru**** 1129500 points
Other Parts Discussed in Thread: ADS1298
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/772488/faq-ads129x-how-do-i-convert-adc-output-codes-to-volts

主题中讨论的其他器件:ADS1298

我可以成功地将数据时钟输出到器件、但如何将这些输出代码转换回电压?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    问得好! 我将在本示例中使用 ADS1298、但理论可应用于任何器件!

    要将输出代码转换为电压、必须首先计算最低有效位大小或 LSB。 一个 LSB 表示一个代码的电压权重。 换句话说、为了增加/减少 ADC 输出、输入电压必须改变一个 LSB 大小。 ADC 的满量程范围(FSR)除以总数代码、得到 LSB 大小:

    LSB = FSR /(2^n - 1)、其中"n"为 ADC 分辨率。

    在 ADS1298中、每个 ADC 的差分输入电压范围为-VREF 至+VREF、因此满量程范围= 2 x VREF。 请记住、每个 ADC 前面还有一个 PGA、因此每个通道的差分输入必须限制在(- VREF/增益)到(+VREF/增益)之间。 然后、LSB 大小的计算公式如下:

    LSB =(2 x VREF)/增益/(2^24 - 1)

    接下来、您必须了解 ADC 的输出数据格式。 ADS1298以二进制补码输出数据、其中0x7FFFFF 表示正满量程、0x800000表示负满量程。

    图1:ADS1298理想传递函数

    将输出代码转换回输入电压的最简单方法是使用0x800000和数据、并测试 MSB (最高有效位)。 如果 MSB 等于0、只需将等效的十进制数乘以 LSB 大小。 如果 MSB = 1、必须首先从等效的十进制数中减去2^n、然后乘以 LSB 大小。  

    例如、使用 VREF = 2.5V、N = 24位、增益= 4、我们可以计算出 LSB 大小为74.506nV。 输出代码0x147AE1对应于+100mV 的输入电压。 同时、输出代码0xD70A3D 将对应于-200mV 的输入电压。

    希望这有助于回答您的问题。

    指向 BIOFAQ 主页的链接

    本文适用于 ADS1191、 ADS1192、 ADS1291、 ADS1292、 ADS1292R、  ADS1294、 ADS1294R、 ADS1296、 ADS1296R、 ADS1298、  ADS1298R、 ADS1299-4、 ADS1299-6和 ADS1299