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.

[参考译文] TMP117:解读 Raspberry Pi 上的温度读取

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/1239065/tmp117-interpreting-temperature-read-out-on-raspberry-pi

器件型号:TMP117

我们正在使用 Python 中的 smbus2库来读取来自 TMP117传感器的数据。 使用.read_i2c_block_data()方法我们打印了传感器数据。 当我们将块 长度指定为3时,我们观察到以下数组:[12,一些介于170-220,255]之间的数字,任何块长度增加都会产生更多的。 虽然这些数字一定与传感器测得的温度有关、但如何从这些数字辨别实际温度值尚不清楚。 我们已经浏览了数据表、找不到关于如何 解读数据的明确解释。 我们想知道是否有人可以了解如何将此输出转换为 摄氏度的温度。 提前感谢!

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

    尊敬的 Christopher:

    感谢您在传感论坛发帖。

    结果寄存器中的温度数据采用二进制补码格式(请参阅以下数据表中的摘录)、并且每个 LSB 对应于7.8125m°C。 您只需向 TMP117请求两个字节即可检索温度结果。

    您可以参考下面的代码示例、该示例获取温度寄存器结果0x0C40并将其转换为 m°C 和°C。  生成的字节被转换为十进制值并与器件分辨率(0.0078125°C)相乘以转换为°C。

    uint8_t byte1 = 0xC;
    uint8_t byte2 = 0x40;
    float f = ((int8_t) byte1 << 8 | byte2) * 0.0078125f;
    int mC = ((int8_t) byte1 << 8 | byte2) * 1000 >> 7;
    int C = ((int8_t) byte1 << 8 | byte2) >> 7;

    此致、
    妮可

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

    您好、Nicole:

    非常感谢! 最初我并不清楚我只能使用前两个字节并以这种方式将它们组合在一起(测试传感器输出的不同值使我更接近这一点)、但现在回顾一下您提供给我的信息更有意义。 我的问题得到了解决。

    此致、

    克里斯