首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将传感器的温度值转换成温度值?

如何将传感器的温度值转换成温度值?
EN

Stack Overflow用户
提问于 2014-09-01 11:54:53
回答 1查看 3.2K关注 0票数 0

我的工作是ST温度传感器( hts221 ),我使用I2C命令与传感器通信。我是新来的..。

我有参考的HTS221数据表,也得到了传感器的价值。但我不知道如何把这个值转换成实际温度。

从传感器获得的值如下所示:

代码语言:javascript
运行
复制
Read HTS221 TEMP_OUT_L: 0x2a value is 0x15
Read HTS221 TEMP_OUT_H: 0x2b value is 0xFF
Read HTS221 T0_degC_x8: 0x32 value is 0xBF
Read HTS221 T1_degC_x8: 0x33 value is 0xBF
Read HTS221 T1/T0 msb: 0x35 value is 0x4
Read HTS221 T0_OUT-3C: 0x3C value is 0x0
Read HTS221 T0_OUT-3D: 0x3D value is 0x0
Read HTS221 T1_OUT-3E: 0x3E value is 0x0
Read HTS221 T1_OUT-3F: 0x3F value is 0x0

温度寄存器的描述如下图所示。

和它给出了校准系数和温度转换的例子,如下图所示,但我仍然理解它的含义。

,有人能教我如何从传感器把上面的值转换成温度吗?,我不知道。提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2014-09-01 12:25:07

您需要阅读下列校准寄存器:

代码语言:javascript
运行
复制
T0_degC_x8  (Calibration register 32)
T1_degC_x8  (Calibration register 33)
T1_T0msb    (Calibration register 35)
T0_OUT      (Calibration register 3C and 3D)
T1_OUT      (Calibration register 3E and 3F)

T0_degC_x8和T1_degC_x8是10位值,所以您需要从寄存器35中获得最后2位。

只需简单的插值就可以得到测量到的温度:

代码语言:javascript
运行
复制
double T_DegC;
double T0_degC = (T0_degC_x8 + (1 << 8) * (T1_T0msb & 0x03)) / 8.0; 
double T1_degC = (T1_degC_x8 + (1 << 6) * (T1_T0msb & 0x0C)) / 8.0; // Value is in 3rd and fourth bit, so we only need to shift this value 6 more bits.
T_DegC = (T0_degC + (T_OUT - T0_OUT) * (T1_degC - T0_degC) / (T1_OUT - T0_OUT)); 

注:

寄存器编号为十六进制,因此寄存器32、33和35实际上是寄存器0x32、0x33和0x35。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25605318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档