发 帖  
原厂入驻New
实战多通道高速精密测温仪的全系列设计教程,以实际项目为依托,提升工程师核心竞争力!→点击立即抢购←
[问答] LIS2HH12加速度计上的温度传感器
240 加速度计 温度传感器
分享
我们正在使用LIS2HH12加速度计,数据表中列出的温度传感器可通过temp_L和temp_H寄存器(16位)访问。
然而,我得到的数字没有任何意义。
数据表提到“温度传感器输出变化与温度的关系”为8位/ C
11位分辨率,-40到80C范围,它使用两个补码,但我找不到一种方法使读数返回任何有意义的值。
这些是什么
temp_L和temp_H数字真的是什么意思?谢谢。

#lis2hh12#temperature-sensor

以上来自于谷歌翻译


以下为原文




We're using the LIS2HH12 accelerometer and there's a temperature sensor listed in the datasheet accessible via the temp_L and temp_H registers (16 bits).
However the numbers I get don't make any sense.
The datasheet mentions 'Temperature sensor output change vs. temperature' of 8 digit/�C
11-bit resolution, -40 to 80C range and that the it uses two's complement, but I can't find a way to make the readings return any meaningful value.
What do these
temp_L and temp_H numbers really mean? Thank you.

#lis2hh12 #temperature-sensor
0
2019-3-12 14:21:00   评论 分享淘帖 邀请回答
11个回答
温度传感器可用于测量温度变化。

以上来自于谷歌翻译


以下为原文





The temperature sensor can be used to measure temperature variations.
2019-3-12 14:38:48 评论

举报

我认为何塞正在要求数据解释。我还希望在数据表中有更详细的描述。
TEMP_H:TEMP_L是原始传感器输出 - 带符号的16位数字,存储为二进制补码。
在25厘米时,输出为0.对于每摄氏度,传感器输出值改变8个LSB,意味着1 LSB是0,125厘米变化(2个LSB 0,25厘米,4个LSB 0,5厘升等)。
所以基本公式是:TEMP_H:TEMP_L + temp_offset_25_centigrades = measured_temperature
(请注意,负TEMP_H:TEMP_L值并不一定意味着负温度。)
我个人在我的应用程序中显示2位小数,但使用整数变量来保持代码快速和干净,所以我读取传感器输出数据如下:
int16_t tempHex =(temp_h<< 8)| temp_l;
然后进行以下计算:将传感器输出值乘以
TEMP_FRACTION_MULTIPLIER =
125并将其除以TEMP_FRACTION_DIVIDER =
10.这样,存储在温度寄存器中的值包含温度值乘以一个数字(12.34厘米存储为1234等)。 TEMP_OFFSET = 2500(25.00厘米)。
int32_t temperature =((tempHex * TEMP_FRACTION_MULTIPLIER)/ TEMP_FRACTION_DIVIDER)+ TEMP_OFFSET;
或者你可以将TEMP_H:TEMP_L除以8(向右移动3个位置),丢弃小数点并仅使用圆形值的厘米。 (您仍然需要添加25厘米的偏移量。)
希望这个对你有帮助。

以上来自于谷歌翻译


以下为原文




I think Jose is asking for the data interpretation. I would also appreciate a more detailed description in the datasheet.
TEMP_H:TEMP_L is the raw sensor output - a signed 16-bit number, stored as two's complement.
At 25 centigrades, the output is 0. For every centigrade, the sensor output value changes for 8 LSBs, meaning 1 LSB is a 0,125 centigrades change (2 LSBs 0,25 centigrades, 4 LSBs 0,5 centigrades etc.).
So the basic formula is: TEMP_H:TEMP_L + temp_offset_25_centigrades = measured_temperature
(Please note that negative TEMP_H:TEMP_L value doesn't necessarily mean a negative temperature.)
I personally display 2 decimal digits in my applications, but use integer variables to keep the code fast and clean, so I read the sensor output data like this:
int16_t tempHex = (temp_h << 8) | temp_l;
and then do the following computation: multiply the sensor output value by
TEMP_FRACTION_MULTIPLIER =
125 and divide it with TEMP_FRACTION_DIVIDER =
10. This way the value stored in the temperature register contains temperature value multiplied by a hunded (12.34 centigrades is stored as 1234 etc.). TEMP_OFFSET = 2500 (for 25.00 centigrades).
int32_t temperature = ((tempHex * TEMP_FRACTION_MULTIPLIER) / TEMP_FRACTION_DIVIDER) + TEMP_OFFSET;
Or you can just divide TEMP_H:TEMP_L by 8 (shift by 3 positions to the right), discard the decimal points and use only the round value of centigrades. (You still need to add the offset of 25 centigrades.)
Hope this helps a bit.
2019-3-12 14:48:39 评论

举报

我想补充一点,TEMP_OFFSET不保证是25
摄氏度。存在一定程度的不确定性,因此请不要期望温度测量的高精度。

以上来自于谷歌翻译


以下为原文




I would like to add that the TEMP_OFFSET is not guaranteed to be 25
centigrades. There is certain level of uncertainty so please don't expect high precision of the temperature measurement.
2019-3-12 15:03:16 评论

举报

另一方面,假设温度值输出在传感器的工作条件下是线性的,TEMP_OFFSET可以使用已知的校准温度计进行测量,并在以后的固件中调整为常数。这种方法可以产生非常可靠的输出(我个人用原型来做)。但是,需要对每个传感器进行,这总是不可能或没有意义。

以上来自于谷歌翻译


以下为原文




On the other hand, assuming that the temperature value output is linear in sensor's working conditions, the TEMP_OFFSET can be measured using a known calibrated thermometer and adjusted as a constant in a firmware later. This approach creates quite a reliable output (I personally do this with prototypes). However, needs to be done with every sensor, which is always not possible or meaningful.
2019-3-12 15:18:49 评论

举报

那么'11位分辨率'在数据表的第2.3章中意味着什么?
因为我根据您的方法接收到奇怪的值(例如TEMP_H:0xFA,TEMP_L:0xA0)。

以上来自于谷歌翻译


以下为原文




So what the '11-bit resolution' means in chapter 2.3 of the datasheet ?
Cause I receive strange values according to your method ( TEMP_H : 0xFA, TEMP_L : 0xA0 for example).
2019-3-12 15:37:47 评论

举报

11位分辨率表示以16位值(TEMP_H,TEMP_L)的最高11位编码的值。
温度传感器输出变化与温度的关系为8位/°C,这意味着1LSB = 0.125
C。
该值被编码为二进制补码。
所以你的例子意味着-11.375°C(相对于参考值的差异)。

以上来自于谷歌翻译


以下为原文




11-bits resolution means the value in encoded in the highest 11 bit of the 16 bit value (TEMP_H, TEMP_L).
Temperature sensor output change vs. temperature is 8 digit/°C which means 1LSB = 0.125
°C.

The value is encoded as two's complement.

So your example means -11.375°C (difference respect to a reference value).
2019-3-12 15:54:04 评论

举报

我不明白你怎么找-11.375°C,对于tempHex,我有1111 1010 1010 0000(FAA0),你怎么办?

以上来自于谷歌翻译


以下为原文




I don't understand how you find -11.375°C, for tempHex, i have 1111 1010 1010 0000 (FAA0), what do you do after ?
2019-3-12 16:00:15 评论

举报

1111 1010 1010 0000(0xFAA0)... 16位值
111 1101 0101 ... 11位值,左边的值被调整
2005 ...转换为十进制值
2005 - 2048 = -43 ...转换自
https://en.wikipedia.org/wiki/Two%27s_complement
-43 / 8 = -5.375
°C ...转换为°C(8位/°C,表示1LSB = 0.125
C)
对不起,我在上一篇文章中的转换错误。

以上来自于谷歌翻译


以下为原文





1111 1010 1010 0000 (0xFAA0) ... 16-bit value

111 1101 0101 ... 11-bit value, the value is left adjusted

2005 ... conversion to decimal value

2005 - 2048 = -43 ... conversion from
https://en.wikipedia.org/wiki/Two%27s_complement

-43 / 8 = -5.375
°C ... conversion to °C (8 digit/°C which means 1LSB = 0.125
°C)


I'm sorry, I did a mistake in conversion in my previous post.
2019-3-12 16:16:27 评论

举报

完整答案的Txs
Batek.Miroslav
â€。从传感器读取温度值并不直观。干杯
 注意:原始帖子包含大量线程对话,只能迁移到第9级

以上来自于谷歌翻译


以下为原文




Txs for the complete answer
Batek.Miroslav
‌ . It was not that intuitive to read the temp value from the sensor. Cheers
Note: the original post contained a large number of threaded conversations and was only able to be migrated to the 9th level
2019-3-12 16:35:00 评论

举报

但是TEMP_OFFSET怎么样?我收到几乎相同的值,我的11位数据是~2025。所以,如果我像你一样,我会收到-2,875。但我的测量是在房间条件下。所以,我必须添加25厘升来获得22,125,看起来更真实吗?
如果是的话,你怎么知道25偏移?它没有写到。

以上来自于谷歌翻译


以下为原文




But what about TEMP_OFFSET? I receive almost the same value, my 11 bits data is ~2025. So if i will count like you, I'll receive −2,875. But my measument was in room conditions. So, must I add 25 centigrades to get 22,125, what looks more real?
And if yes, how do you know about 25 offset? Nowhere is it written.
2019-3-12 16:51:15 评论

举报

温度传感器可用于测量温度变化。
 
偏移可以是~25°C但不保证,偏差可能很大。
要获得准确的值,您必须校准每个设备。

以上来自于谷歌翻译


以下为原文





The temperature sensor can be used to measure temperature variations.

The offset can be ~ 25°C but it is not guaranteed, the deviation can be big.
To get exact value you have to calibrate each device.
2019-3-12 17:04:23 评论

举报

只有小组成员才能发言,加入小组>>

79个成员聚集在这个小组

加入小组

热门话题

创建小组步骤

关闭

站长推荐 上一条 /10 下一条

快速回复 返回顶部 返回列表