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.

[参考译文] ADS1018-Q1:ads1018-Q1

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1019712/ads1018-q1-ads1018-q1

器件型号:ADS1018-Q1
主题中讨论的其他部件:ADS1018ADS1118

当我们在 ADC 模式下配置 ADS1018时,我想了解如何根据 ADC 计数计算温度。

此外、我还想了解 ADC 计数与 ADC 计数有何共同关系。

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

    大家好、TI、在论坛上看不到我的主题帖的任何回复。 请您提供输入、以便我继续。 这是优先级之一。 如果我能找到一些方向、这将非常有用

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

    您好、Varsha、

    感谢您在数据转换器论坛上发帖!  

    不幸的是、这个问题有点模糊、因此我将做出一些假设、以便彻底回答您的问题。

    假设为:

    • 您有一个传感器、用于测量连接到器件输入端的温度
      • 我只提到这一点、因为 ADS1018具有内部温度传感器。 在此提醒、当 TS_MODE = 0b (ADC 模式)时、无法使用内部温度传感器。 当 TS_MODE = 1b 时、可访问内部温度传感器
      • 如果您确实对内部温度传感器有疑问、请参阅"将数字代码转换为温度"部分、该部分将介绍其自己的公式、因为它不依赖于 PGA[2:0]设置
    • 当您说"了解 ADC 计数如何与 ADC 计数相关联"时、我假设您需要更多有关如何确定输出 ADC 计数的信息

    我想说、了解从温度到代码的整个转换链需要两个部分:传感器的温度到电压公式以及电压到代码的转换。

    温度到电压:

    温度到传感器的电压不取决于器件、因此您需要 来自传感器数据表的此信息。 因此、您可能会在传感器数据表中找到一个公式或表格、其中显示了传感器输出的最小差分和共模电压。  

    使用此信息、我们可以参考数据表中的表1并选择 PGA 设置:

    通常、满量程范围(FSR)由一个包含 PGA 增益和基准电压的公式确定、但由于基准是固定的且 PGA 是内部的、因此数据表尝试使用户更容易理解。 如果您有兴趣、可以在这篇文章中找到更多相关信息: https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/907372/ads1018-q1-ads1018-q1 因此、用户只需使用 包含需要感测的电压范围(以及温度范围)的最小 FSR 值。  

    我需要强调的一点是、如果选择较高的 FSR 值、则仍需要观察 VDD 和绝对最大规格。 正如表中所示、6.144V 并不意味着可以向输入施加6.144V 电压、因为 VDD 不能达到6.144V。 它适用于传感器可达到5V 电压的情况、其中无法达到6.144V 、但使用4.096V FSR 设置无法感测到5V 电压。

    我还会注意到、使用 LSB = FSR / 2^12来推导 LSB 大小 列可能会导致一些混淆。 如果您从未使用过 ADC 代码上下文中的负数、我建议您继续阅读、稍后将对此进行解释。

    电压至代码:

    数据表中的表3为我们提供了一个从电压到代码的等式、但需要事先了解两个关键思想。

    第一个是每次只能从器件中以2或4字节(8或16位)的速度提取代码。 这意味着最终代码将具有16位或8+8位。 请注意、这是一个12位的 ADC、这意味着最后4位(或最后一个字节)毫无价值、始终为0b、并且不传送真实数据。 换句话说、0x7FF 可能是利用全部12位的等效最大正代码、但控制器必须接收0x7FF0、因为数据包长度必须为16位。

    第二个想法是代码采用二进制补码左对齐格式。 这意味着、AIN_P - AIN_N 可能会导致负数、为了表示该负数、我们将 MSB 指定为符号、其中0b =正数、1b 表示负数。 因此、使用二进制补码转换、您可以了解真实值并在之后添加符号。 以下是我们在下面的公式中使用2^11以及 LSB 计算值是表1中预期值的两倍的原因。

    表和图试图说明的是 、从电压到代码的顺序是  V_input = n_code*(FSR/2^11)-> 2的补码(如果为负)->将0x0添加到 END ->获取要发送到控制器的最终代码。

    在一个示例中、让我们使用 FSR =+/-1.024、其中 LSB 为0.5mV、输入或 AINP - AINN 将为-0.5mV。

    n_code =(-0.5mV)*(2^11/(-1.024))

    • 请注意、我在公式周围移动并使用负满量程值、因为输入为负

    n_code = 1 = 0b0000 0000 0001

    • 现在需要执行二进制补码、因为它是负的。 或翻转位、然后添加1

    n_code_2s = 0b1111 1111 1111 = 0xFFF

    • 在末尾添加0x0

    n_code_final = 0xFFF0

    它等于表中的值。

    有关错误和其他事项的最终注释

    该表不会考虑由脚注确定的错误。 如果 您需要查看错误是如何添加到最终结果中的、 然后、请查看有关错误和噪声的 TIPL ADC 系列、并查看 TI 参考设计 《使用 ADS1118进行精密热电偶测量》(与 ADS1018-Q1类似、但具有16位、温度范围较低) https://www.ti.com/lit/ug/slau509/slau509.pdf 的设计部分 

    最棒的

    Cole

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

    您好 Cole

    感谢您的回复。

    请务必考虑以下要点

    我已在 ADC 模式下配置 ADS1018。

    2.我已完成以下配置

    MODE = ADC

    010 = FSR 为±2.048V (默认值)

    上拉使能

    数据速率= 2400

    ADS1018的电源电压为5V

    我正在执行32位 SPI 通信、并低于配置写入0x44AB 44AB 的响应

    0x64E0 44AA

    MSB 为0x64E0 (16位 ADC 计数) LSB 44AA,配置寄存器回读。

    我的问题是如何将 ADC 计数0x64E0转换为温度值。

    我知道它的16位结果缓冲器和12位结果将仅为结果、因此实际的12位结果为0x64E

    如果我将其转换为十进制数、它将是1614

    0.125* 1614 = 210.75度 (无效)

    请指导我如何将 ADC 计数0x64E0计算为温度值。

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

    您好、Varsha、

    以下是我的数学计算:

    0x64e0

    • 删掉最后的0

    0x64e

    • 二进制文件

    0110 0100 1110b

    • 正数,所以没有二进制补码。 现在转换为十进制

    1614.

    • 看起来您在这里、是时候计算方程了

    V_INPUT = n_CODE*(FSR/2^11)

    V_INPUT =(1614)*(2.048/2^11)

    V_INPUT = 1.614V

    您没有为我提供温度方程(您也没有指定哪种度、尽管 C 是行业标准)。  

    我想我们现在停止了度电压转换。 您能否探测适当的输入引脚并查看 AINP - AINN 的电压是否约为1.614V? 我只想确保我们的公式正确。

    最棒的

    Cole

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

    谢谢 Cole

    这将有所帮助。 还有一个问题。

    我正在为 ADS1018提供5V 电源,默认值为±2.048V。这是否正常?

    同样、如上面的公式所示、如果我提供5V 电压、那么我将获得0x7FF0

    如果我使用上述公式反转

    然后

    我将得到结果

    0x7FF = 2047 (十进制)

    V_INPUT = 2047 *(2.048 / 2048)= 2.047V

    这是由于 FSR 范围造成的吗?

    对于5V 输入电源、建议使用哪种 FSR?

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

    我的意思是说、如果我给 ADs1018提供5V 作为输入电压、那么我得到0x7FF0、因为计数是有效的? 根据上述公式、它将为2.047V。

    那么、这意味着我选择了不正确的 FSR 吗? 为 ADS1018提供5V 输入电源

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

    您好、Varsha、

    这里有两个位。 第一个是 ADS1018-Q1具有真差分输入、V_INPUT_INPUT_INP - AINN 计算。 因此、要特别清楚、当您施加5V 电压时、我假设您说的是 AINP = 5V、AINN = 0V 或 GND。  

    第二个是该输入超过正 FSR。 如果我们再次查看表3。 当 V_INPUT >+FS (2^11-1)/2^11时、或超出正 FSR (即 V_INPUT > 2.048V)时、我们期望代码为0x7FF0。 这正是我们看到的、因为5V > 2.048V。  

    这有什么问题吗? 从器件损坏的角度来看、不是 您的 VDD 为5V、对 AINP 施加5V 电压不会导致器件损坏。 但很明显、在该配置中、器件无法测量5V、因为您需要大于5V 的正 FSR 来测量 AINP = 5V 和 AINN = 0V。  

    因此、如果您想测量 AINP = 5V 和 AINN = 0V 情况、则需要将 FSR 范围更改为+/-6.144V。 如下所示:

    或者、如果您确信 AINP 仅从0V 变为5V、AINN 可保持恒定、则可以设置 AINN = 2.5V 并使用+/-4.096 FSR、并在控制器侧 AINN = 2.5V 和 AINP = 0V (或 V_INPin =-2.5V)时计算出数学结果。 如下所示:

    但是、这并不是大多数实际温度传感器的工作方式。 大多数温度传感器都是差分传感器、因此 AINN 不能保持恒定。 如下所示:

      

    因此、请考虑温度传感器的实际需求。

    顺便说一下、这些图片直接取自 ADC TI 高精度实验室系列。 观看这些视频似乎会让您受益匪浅、因此我将为您提供一个链接、供您浏览:

    https://training.ti.com/ti-precision-labs-adcs-sar-adc-input-types?context=1139747-1140267-1128375-1139103-1128659 

    最棒的

    Cole

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

    感谢 Cole 的详细解释。 这真的很有帮助。 谢谢!