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.

[参考译文] ADS124S08:三线 PT100配置中的引线电阻测量错误

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1410190/ads124s08-wrong-lead-resistance-measurement-in-three-wire-pt100-configuration

器件型号:ADS124S08

工具与软件:

您好!

我们尝试读取具有三线配置的 PT100 RTD。

OU 电路与应用手册 https://www.ti.com/lit/an/sbaa334b/sbaa334b.pdf 中显示的电路相同

我们在两个阶段执行测量:

  1. 通过激活 IDAC1 (1mA)并读取 AIN1-AIN2来测量 RTD 电阻
  2. 通过激活 IDAC1 (1mA)并读取 AIN2-AIN3来测量引线电阻(Rlead2+Rlead3)

第一个点(1)给出合理的输出(接地100Ohms)、而第(2)步给出了一个无效的结果:我们看到大约6mV 的压降、它对应于6欧姆的电阻、这至少比引线电阻高一个数量级。

进行进一步检查:

  • 引线电阻实际上约为0.6欧姆
  • 尽管存在很大的噪声、但使用示波器读取时的偏置电流和电压是正确的
  • 通过使用外部偏置源、问题将消失、我们可以获得正确的读数(约600uV)。

您能为我们提供帮助吗?

谢谢!

Marco

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

    尊敬的 Marco Barbetta:

    您似乎正在执行正确的顺序。 当您更改输入多路复用器时、您是在更改增益或基准源?

    我假设您也一直在离开 IDAC、对吗? 换句话说、 我假设您在 两次测量之间并不是先关闭 IDAC、然后再打开 IDAC?

    如果您只是多次尝试读回引线电阻(因此不要切换到主 RTD 测量通道)、您是否可以得到正确的结果? 可能需要100个样本(或10秒、以先到者为准、具体取决于您的数据速率)、然后在此处报告

    -Bryan

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

    尊敬的 Bryan:

    感谢您的建议! 请参阅下面的内联答案。

    Marco

    当您更改输入多路复用器时、您是在更改增益或基准源?

    >>不是的,我们不是。

    我假设您也一直在离开 IDAC、对吗? 换句话说、 我假设您在 两次测量之间并不是先关闭 IDAC、然后再打开 IDAC?

    >>我们实际上不能这样做、器件会处理所有事情、以便在测量之间打开和关闭 IDAC (使用示波器进行验证)

    如果您只是多次尝试读回引线电阻(因此不要切换到主 RTD 测量通道)、您是否可以得到正确的结果? 可能需要100个样本(或10秒、以先到者为准、具体取决于您的数据速率)、然后在此处报告

    >>我们尝试过,但结果是相同的100个测量。 您可以从附件中看到 IDAC 产生的重复偏置电压。

    谢谢!

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

    尊敬的 Marco Barbetta:

    我在 EVM 上尝试过此操作、但没有看到您提到的错误。 我使用500欧姆电阻作为 RTD、使用100欧姆电阻作为引线电阻。 施加750uA 电流、I 会在"RTD"上读取大约375mV 的电压、在"引线电阻"上读取大约75mV 的电压。 在下面的逻辑分析仪图中、您可以看到左侧的数据是 RTD 测量值(50个样本)、然后我更改了多路复用器(首先是 AINP = AIN2、然后是 AINN = AIN0)、然后再进行50倍采样。

    我也没有看到电流源"骤降"、如您所示。 我本来不希望发生这种情况、因为在我假定的初始化例程之后您不会更改 IDAC 寄存器。 下图中显示了标记为"VRTD"的信号。 请注意、我将500欧姆 RTD 与100欧姆电阻串联、然后是另一个1k 欧姆电阻器、因此此时相对于接地的电压应该约为750uA (500 + 100 + 1000)= 1.2V

    您能否发送:

    • 您用于初始化的寄存器设置
    • RTD 和引线电阻测量之间的寄存器变化
    • 原理图

    -Bryan

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

    尊敬的 Bryan:

    我在 EVM 上尝试过此操作、但没有看到您提到的错误。 我使用500欧姆电阻作为 RTD、使用100欧姆电阻作为引线电阻。 施加750uA 电流、I 会在"RTD"上读取大约375mV 的电压、在"引线电阻"上读取大约75mV 的电压。 在下面的逻辑分析仪图中、您可以看到左侧的数据是 RTD 测量值(50个样本)、然后我更改了多路复用器(首先是 AINP = AIN2、然后是 AINN = AIN0)、然后再进行50倍采样。

    >>测试条件略有不同。 我们在这里尝试使用小于1欧姆的引线测量 RTD = 100欧姆、请在这些条件下重复测试、看看您是否找到正确的测量结果?

    我也没有看到电流源"骤降"、如您所示。 我本来不希望发生这种情况、因为在我假定的初始化例程之后您不会更改 IDAC 寄存器。 下图中显示了标记为"VRTD"的信号。 请注意、我将500欧姆 RTD 与100欧姆电阻串联、然后是另一个1k 欧姆电阻器、因此此时相对于接地的电压应该约为750uA (500 + 100 + 1000)= 1.2V

    >>我们不了解您如何能够保持 IDAC 在两次测量之间。 在本例中、器件在执行测量后自动关闭 IDAC。 我们不清楚这是器件配置还是其他配置。

    这是我们的测量配置:

    const struct ads124s08_regs_conf adc_regs_conf = {
        .inpmux = {
            .addr = ADS124S08_REG_INPMUX,
            .val.inpmux.muxp = RTD_ADC_LEAD_PIN0,
            .val.inpmux.muxn = RTD_ADC_PT100_PIN0,
        },
        .pga = {
            .addr = ADS124S08_REG_PGA,
            .val.pga.pga_en = false,
            .val.pga.gain = 1,
        },
        .datarate = {
            .addr = ADS124S08_REG_DATARATE,
            .val.datarate.mode = ADS124S08_MEASURE_MODE_CONTINUOUS,
            .val.datarate.filter = true,
            .val.datarate.dr = ADS124S08_DR_20,
        },
        .ref = { 
            .addr = ADS124S08_REG_REF,
            .val.ref.refp_buf_neg = false,
            .val.ref.refn_buf_neg = true,
            .val.ref.refsel = ADS124S08_REFSEL_P0_N0,
            .val.ref.refcon = ADS124S08_REFCON_ON_AUTO,
    
        },
        .idacmag = {
            .addr = ADS124S08_REG_IDACMAG,
            .val.idacmag.imag = ADS124S08_IMAG_1000_UA,
        },
        .idacmux = {
            .addr = ADS124S08_REG_IDACMUX,
            .val.idacmux.i1mux = ADS124S08_OUTPUT_AIN0,
            .val.idacmux.i2mux = ADS124S08_OUTPUT_DISCONNECTED__,
        },
    };

    这是引线(0.6欧姆)电阻测量的测量日志、给出大约7mV 的结果等于7欧姆。

    [00:00:25.827,819] <dbg> ads124s08: ads124s08_cmd_send: Sending command 0x02
    [00:00:25.830,230] <dbg> ads124s08: ads124s08_cmd_send: Sending command 0x06
    [00:00:25.832,611] <dbg> ads124s08: ads124s08_reg_write_sequence: Writing to register 0x02 value 0x01
    [00:00:25.832,641] <dbg> ads124s08: ads124s08_reg_write_sequence: Writing to register 0x03 value 0x08
    [00:00:25.832,641] <dbg> ads124s08: ads124s08_reg_write_sequence: Writing to register 0x04 value 0x14
    [00:00:25.832,672] <dbg> ads124s08: ads124s08_reg_write_sequence: Writing to register 0x05 value 0x11
    [00:00:25.832,702] <dbg> ads124s08: ads124s08_reg_write_sequence: Writing to register 0x06 value 0x07
    [00:00:25.832,702] <dbg> ads124s08: ads124s08_reg_write_sequence: Writing to register 0x07 value 0xF0
    [00:00:25.833,007] <dbg> ads124s08: ads124s08_reg_read_sequence: Read from register 0x02 value 0x01
    [00:00:25.833,007] <dbg> ads124s08: ads124s08_reg_read_sequence: Read from register 0x03 value 0x08
    [00:00:25.833,038] <dbg> ads124s08: ads124s08_reg_read_sequence: Read from register 0x04 value 0x14
    [00:00:25.833,068] <dbg> ads124s08: ads124s08_reg_read_sequence: Read from register 0x05 value 0x11
    [00:00:25.833,068] <dbg> ads124s08: ads124s08_reg_read_sequence: Read from register 0x06 value 0x07
    [00:00:25.833,099] <dbg> ads124s08: ads124s08_reg_read_sequence: Read from register 0x07 value 0xF0
    [00:00:25.833,129] <dbg> ads124s08: ads124s08_cmd_send: Sending command 0x08
    [00:00:25.939,910] <inf> ads124s08: buffer1: 008dbb
    [00:00:25.939,941] <dbg> ads124s08: ads124s08_read_measure: reading measure with value 36283
    [00:00:25.939,971] <dbg> ads124s08: ads124s08_cmd_send: Sending command 0x0A
    [00:00:25.940,032] <dbg> ads124s08: ads124s08_cmd_send: Sending command 0x04
    [00:00:25.940,124] <inf> rtd: lead0 uv 7006

    这是原理图

    感谢您提供的任何帮助。

    Marco

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

    尊敬的 Marco Barbetta:

    我运行的测试只是为了模仿你在做什么、而不是完全重新创建它。 我只是希望能够展示 ADC 可以在两次测量之间来回切换、使用内部 IDAC 正确读取它们、并且 IDAC 不会在两次测量之间关闭。

    • 您的代码会显示"正在写入寄存器0x02值0x01"、这会设置 MUXP = AIN0和 MUXN = AIN1。 但是、您的原理图显示这不是引线电阻测量的位置。 我缺少什么吗?
    • 您的代码将显示"写入寄存器0x03值0x08"、这会开启 PGA 并将增益设置为1。 但初始化例程设置 PGA_EN = false、我假设 PGA 关闭。 为什么要改变这一点?
    • 我不确定您为什么要重写 IDAC 测量来测量引线电阻(同样、我无法看到您的完整代码流程、因此您可能只需执行一次?) 但您已经在初始设置了此寄存器、不确定为什么需要再次发送它(我猜是因为您发出了重置命令、也知道原因吗?)
    • 您提到了一个具有两次测量的3线 RTD、但您在原理图中显示的是一个4线 RTD。 我只是想清楚你正在测量什么
    • "AMP_OUT"转到哪里? 你在代码中将 IDAC 输出分配给 AIN0、但我看不到此网络的位置。
    • 您正在发出 POWERDOWN 命令(0x04)、其中将解释 IDAC 关闭的原因。 由于我看不到您的代码流程、因此不清楚您发出此命令的时间/频率。 如果您将 REFCON 位更改为10b、VREF (以及因此 IDAC)将在 PWDN 模式下保持开启状态

    -Bryan

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

    尊敬的 Bryan:

    谢谢。

    请参阅下面的内联答案。

    • 您的代码会显示"正在写入寄存器0x02值0x01"、这会设置 MUXP = AIN0和 MUXN = AIN1。 但是、您的原理图显示这不是引线电阻测量的位置。 我缺少什么吗?

    >>抱歉、原理图是指尚未进行原型设计的板的更新版本。 请在此处找到正确的选项。

    • 您的代码将显示"写入寄存器0x03值0x08"、这会开启 PGA 并将增益设置为1。 但初始化例程设置 PGA_EN = false、我假设 PGA 关闭。 为什么要改变这一点?

     你是对的。 因此我们将 PGA 始终关闭。

    • 我不确定您为什么要重写 IDAC 测量来测量引线电阻(同样、我无法看到您的完整代码流程、因此您可能只需执行一次?) 但您已经在初始设置了此寄存器、不确定为什么需要再次发送它(我猜是因为您发出了重置命令、也知道原因吗?)

    >>我们移除了此部件、只需保持 IDAC 始终开启、而无需更改设置。 我们使用示波器进行了验证、现在我们看到两次测量之间的偏置电压没有下降。

    • 您提到了一个具有两次测量的3线 RTD、但您在原理图中显示的是一个4线 RTD。 我只是想清楚你正在测量什么

    >>您也是对的,更新的原理图描述了我们测试的真实案例。

    • "AMP_OUT"转到哪里? 你在代码中将 IDAC 输出分配给 AIN0、但我看不到此网络的位置。

    >>这只是一个用于其他目的的辅助输入。

    • 您正在发出 POWERDOWN 命令(0x04)、其中将解释 IDAC 关闭的原因。 由于我看不到您的代码流程、因此不清楚您发出此命令的时间/频率。 如果您将 REFCON 位更改为10b、VREF (以及因此 IDAC)将在 PWDN 模式下保持开启状态

    >> 我们移除了此器件、将 IDAC 和 VREF 始终保持开启状态、无需更改设置。 我们使用示波器进行了验证、现在我们看到两次测量之间的偏置电压没有下降。

    请查找 导致 工头更改的更新日志。

    ads124s08: ads124s08_cmd_send: Sending command 0x02
    ads124s08: ads124s08_cmd_send: Sending command 0x06
    ads124s08: ads124s08_reg_write_sequence: Writing to register 0x02 value 0x01
    ads124s08: ads124s08_reg_write_sequence: Writing to register 0x03 value 0x00
    ads124s08: ads124s08_reg_write_sequence: Writing to register 0x04 value 0x14
    ads124s08: ads124s08_reg_write_sequence: Writing to register 0x05 value 0x12
    ads124s08: ads124s08_reg_write_sequence: Writing to register 0x06 value 0x07
    ads124s08: ads124s08_reg_write_sequence: Writing to register 0x07 value 0xF0
    ads124s08: ads124s08_reg_read_sequence: Read from register 0x02 value 0x01
    ads124s08: ads124s08_reg_read_sequence: Read from register 0x03 value 0x00
    ads124s08: ads124s08_reg_read_sequence: Read from register 0x04 value 0x14
    ads124s08: ads124s08_reg_read_sequence: Read from register 0x05 value 0x12
    ads124s08: ads124s08_reg_read_sequence: Read from register 0x06 value 0x07
    ads124s08: ads124s08_reg_read_sequence: Read from register 0x07 value 0xF0
    ads124s08: ads124s08_cmd_send: Sending command 0x08
    ads124s08: buffer1: 00c670
    ads124s08: ads124s08_read_measure: reading measure with value 50800
    ads124s08: buffer1: 00c670
    ads124s08: ads124s08_read_measure: reading measure with value 50800
    ads124s08: buffer1: 00c63b
    ads124s08: ads124s08_read_measure: reading measure with value 50747
    ads124s08: buffer1: 00c63b
    ads124s08: ads124s08_read_measure: reading measure with value 50747
    ads124s08: buffer1: 00c63b
    ads124s08: ads124s08_read_measure: reading measure with value 50747

    问题仍然存在、我们测量到几毫伏、我们应该在该处测量纯短路。 您是否有机会用完全短路测试您的设置?

    谢谢!

    Marco

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

    尊敬的 Marco Barbetta:

    使用 ADS124S08EVM (原理图如下所示)、我在 J7-1和 J7-2之间连接了一个100 Ω 电阻器、然后在 J7-2和 J7-4之间连接了一条短导线、如图所示。 然后、我使用1mA 电流源在 AIN1/AIN2 ("RTD")和 AIN2/AIN0 ("引线电阻")之间进行了单独的测量。

    您可以在下面看到我的结果、其中"RTD"测量了~100mV、"引线电阻"测量了~0V。 因此、是的、通过使用您拥有的配置、ADS124S08肯定可以实现这一点。 我不确定还有什么可能会出问题、这是一个相对简单的电路

    您是否能尝试:

    1. 移除1M Ω 上拉/下拉电阻器、查看情况是否有所改善
    2. 使用内部基准而不是基准电阻作为基准源
    3. 拆下 RTD 并在其位置使用一个固定值电阻器、例如100 Ω、就像我所做的那样。 用导线短接。
    4. 断开 J2的所有连接、并用一根导线将引线电阻通道短接在一起(在您的系统中看是 J2-3和 J2-4)。 看看您是否可以测量~0V

    请报告这些实验的结果

    "RTD"

    "引线电阻"

    -Bryan

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

    尊敬的 Bryan:

    感谢您的进一步建议。

    1. 移除1M Ω 上拉/下拉电阻器、查看情况是否有所改善
    2. 使用内部基准而不是基准电阻作为基准源
    3. 拆下 RTD 并在其位置使用一个固定值电阻器、例如100 Ω、就像我所做的那样。 用导线短接。
    4. 断开 J2的所有连接、并用一根导线将引线电阻通道短接在一起(在您的系统中看是 J2-3和 J2-4)。 看看您是否可以测量~0V

    不幸的是、这些都没有解决这个问题。 另外、我们尝试测量已知的阻抗值、看到一些欧姆/mV 的误差。

    我们尝试了 SELFOCAL、但通道之间的8mV 至10mV 差值仍然存在。

    所以我的结论是单元一定有故障。 可能是因为原型设计期间焊接温度过高。

    我们将构建一个新的原型、并且会重新测试、并在这里进行更新。

    谢谢

    Marco

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

    尊敬的 Marco Barbetta:

    这些功能中是否有任何一项实际可行? 它们并非都旨在解决问题、有些仅仅是为了查看 ADC 的响应方式。 例如、#4只是用来测量 ADC 噪声并查看它是否与数据表噪声相关(这可能是应该有的、因为如果您在至少一个通道上获得正确的结果、ADC 和 PGA 看起来是可以的)。 这至少可以告诉您多路复用器工作正常

    查看这些测试的结果会有所帮助、以防获得新设备无法解决问题

    -Bryan

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

    尊敬的 Bryan:

    我想我们终于找到了。

    我们更换了该器件、测得引线2和引线3之间的电压几乎为零。 这是正确的。 另一个 肯定已 损坏。

    然后、我们尝试了另一个测量:IDAC 开启时 AIN0和 AIN1之间。 仍然是9mV。

    于是我们关闭了 IDAC 并为引线1提供了固定的外部偏置。 现在为零 mV。

    我的结论是不允许在同一输入端同时使用 IDAC 和 ADC 输入、因为多路复用器电阻会导致压降。 换句话说、我们将测量端口串联电阻。

    您能否确认这一点?

    谢谢!

    Marco

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

    尊敬的 Marco Barbetta:

    我对您刚才提供的图纸感到困惑。 该图像中的引线电阻测量值介于 AIN2和 AIN3之间、而不是 AIN0和 AIN1之间。 测量 AIN0和 AIN1之间的电阻将测量布线/多路复用器电阻(如您已确定的那样)、以及 AIN0与连接到引线1的端子块之间的任何其他电阻

    我相信我在上一篇文章中提到了这一点:

    您的代码显示"正在写入寄存器0x02值0x01"、这设置了 MUXP = AIN0和 MUXN = AIN1。 但是、您的原理图显示这不是引线电阻测量的位置。 我缺少什么吗?

    根据您最新的原理图、由于您不能使用 REFP0作为模拟输入(不过、您可以使用 REFP1)、因此您似乎无法测量引线电阻。 我用红色突出显示了引线电阻测量路径

    -Bryan