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.

[参考译文] HDC1080:只能看到10位分辨率、而不是11或14位分辨率

Guru**** 2582405 points
Other Parts Discussed in Thread: HDC1080

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/616450/hdc1080-only-10bit-resolution-to-see-instead-of-11-or-14bit

器件型号:HDC1080

根据数据表、HDC1080对于温度和湿度测量具有高达14位的分辨率。 遗憾的是、我在尝试14位或11位时仅看到10位分辨率-不再显示。

数据表中未提供有关这一点的提示。 有所需的电容器。 电源电压大约为4.2V -由一个小电容器旁路。

我正在获得值。 有些是相同的、那么这会变为另一个值-但并不是那么近。 新值大约相差0.1%。 这根本不是14位分辨率。

这是已知问题吗?

我的器件是否损坏? 我应该尝试另一个吗?

非常感谢您的聆听和帮助!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    TI 支持团队将很快与您联系。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、user84788

    您是否正确读取了输出寄存器中的所有16位?

    -温度输出寄存器0x00 [15:00]-> 16位、其中[01:00]='00'
    -湿度输出寄存器0x01 [15:00]-> 16位、其中[01:00]="00"

    采样率是多少(湿度+温度转换的频率是多少)?

    此致
    Massimo
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是-我通过 I2C 读取两个字节。 我将右移低字节的2位、并将高字节的左移6位。 两个字节都基于无符号16位值。

    我得到的湿度值是合理的。 它们似乎是相当正确的。 采样率不同。 根据数据表、7ms 应该正常工作。 因此、我触发了一个测量、等待了7ms 或更多、并得到了该值。 然后、我开始了新的测量。

    我没有执行组合模式(温度+湿度)、而只是湿度或温度。 温度和湿度也存在同样的问题。 仅10位分辨率-不是11位或更多位。

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

    您用于转换 RH 和温度输出的过程似乎不正确。

    读取温度寄存器后、您有一个16字节的字符串、让我将其称为 temperature _LSB[15:00]。

    1、转换整数为 temperature 的 temperature _LSB[15:00]-> temperature
    2.执行以下计算以获取温度、单位为摄氏度。

    温度(degC)=(温度/ 2^16)* 165 C-40°C

    ----------------------------------------------------
    示例:
    TEMPED-LSB[15:00]= 0x645E (采用十六进制格式使其更具可读性)

    温度= 25694

    温度(degC)=(25694/2^16)*165-40=24.67°C
    ----------------------------------------------------

    湿度必须遵循相同的过程、转换公式如 HDC1080数据表第14页所述

    ----------------------------------------------------
    示例

    Humide_LSB[15:00]= 0x42DC

    湿度= 17116

    湿度(%RH)=(17116/2^16)*100 = 26.11%RH
    ----------------------------------------------------

    我还建议在两次测量之间等待20ms 的采样时间稍微增加一点

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

    遗憾的是、这似乎无法解决问题。

    问题是原始数据不稳定、跳得非常远。 因此、计算值也会大幅跳跃、这一点不足为奇。 当原始字节中没有分辨率时、计算值中也不存在分辨率。

    "湿度(%RH)=(17116/2^16)*100 = 26.11%RH"

    遗憾的是、这在我的案例中没有太大帮助、因为它需要在微控制器上使用浮点数学运算。 因此、我没有使用该函数、而是尝试使用整数数学。 17116/2^16的计算结果为0.26117。 使用整数数学运算、结果将为零。 因此、不能在那里使用。 相反、首先必须执行乘法以获得更高的值。 必须确保它不会溢出。 然后、可以使用无符号长整型数据类型。 我就是这样做的。 这是可行的-但不幸的是、分辨率是10位、而不是我上面说的11或14位。

    原始数据是问题所在。

    此致
    Matthias
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    "我还建议在两次测量之间稍微增加采样时间20ms 的等待时间"

    感谢您的观看。 我还尝试了更长的时间、例如70ms。 但不幸的是、这并没有解决问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Matthias

    你是对的。 如果先执行乘法、避免溢出、然后除以2^16即可正常工作。

    关于原始数据的不稳定性:

    -如果您看到整数数字发生变化,则很可能您的设置不稳定,或者还有其他需要修复的问题。

    -如果您在逗号更改后看到第二个数字,请考虑在10位分辨率下,可能被辨别的温度(分辨率)为0.16摄氏度。 如果您希望看到稳定的值、则环境设置必须在0.08摄氏度以下保持稳定。

    我建议对温度和湿度输出执行一些平均值计算。

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

    谢谢你 Massimo!

    "如果您看到整数数字发生变化,则很可能您的设置不稳定,或者还有其他需要修复的问题。"

    似乎没有太多的事情可以我在这里做。
    芯片似乎被正确旁路。
    它可以用作3.3V 的额外稳压器。
    但也必须使用电压转换器。

    "如果您希望看到稳定的值、则环境设置必须在0.08摄氏度以下保持稳定。"

    应确保使用非常短的测量时间
    在测量之间的这段时间内、湿度和温度变化不大。
    我确实使用了尽可能短的测量时间来确保。
    通常仅需10ms 左右、温度和湿度也是如此
    变化不大。 我无法投资于受控湿度箱。  

    "我建议对温度和湿度输出进行一些平均值计算。"

    如果这些值是稳定的、则取平均值没有多大意义
    但仅显示10位分辨率。

    可能是芯片本身有问题。 以确保另一个
    一个可以进行测试。 我目前没有第二个
    进行测试。

    此致、
    Matthias