主题中讨论的其他部件:ADS1018、 ADS1118
当我们在 ADC 模式下配置 ADS1018时,我想了解如何根据 ADC 计数计算温度。
此外、我还想了解 ADC 计数与 ADC 计数有何共同关系。
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.
当我们在 ADC 模式下配置 ADS1018时,我想了解如何根据 ADC 计数计算温度。
此外、我还想了解 ADC 计数与 ADC 计数有何共同关系。
您好、Varsha、
感谢您在数据转换器论坛上发帖!
不幸的是、这个问题有点模糊、因此我将做出一些假设、以便彻底回答您的问题。
假设为:
我想说、了解从温度到代码的整个转换链需要两个部分:传感器的温度到电压公式以及电压到代码的转换。
温度到电压:
温度到传感器的电压不取决于器件、因此您需要 来自传感器数据表的此信息。 因此、您可能会在传感器数据表中找到一个公式或表格、其中显示了传感器输出的最小差分和共模电压。
使用此信息、我们可以参考数据表中的表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
n_code_2s = 0b1111 1111 1111 = 0xFFF
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
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?
您好、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 高精度实验室系列。 观看这些视频似乎会让您受益匪浅、因此我将为您提供一个链接、供您浏览:
最棒的
Cole