使用STMF401RE Nucleo计算温度传感器的正确公式?

时间:2017-01-31 14:27:20

标签: microcontroller stm32 stm32f4discovery stm32f4 stm32f0

我正在使用STM32F401RE Nucleo板来测量环境温度。在采样过程之后,我从ADC_CHANNEL_TEMPERATURE接收数字值,我想将此数字值转换为C°。我在互联网上搜索了这个,我发现了两种不同的方法:

方法1:http://www.st.com/content/ccc/resource/technical/document

中的第226页
Temp(degree) = (V_sense - V_25)/Avg_slope + 25

方法2:http://www.st.com/content/ccc/resource/technical/document

中的第251页
Temp(degree) = ( ( (110 - 30)*(TS_DATA - TS_CAL1) ) / (TS_CAL_2 - TS_CAL_1) ) + 30
Where:
    - TS_CAL2: temperature sensor calibration value at 110 C°
    - TS_CAL1: temperature sensor calibration value at 30 C°
    - TS_DATA: temperature sensor output from ADC

让我感到困惑的是哪一个是以C°计算温度的正确公式。 虽然方法1来自STM32F401的参考手册,但温度结果看起来不正确。虽然STM32F0系列参考手册中的方法2看起来更合理。

使用STM32F401RE Nucleo板时,我仍然不知道应该采用哪种公式?

2 个答案:

答案 0 :(得分:3)

方法1 Temp(degree) = (V_sense - V_25)/Avg_slope + 25是一个简化版本,其中校准可能是通过预先测量25°的值并将其分配给V_25来完成的。在这种情况下,Avg_slope可能来自数据表 - 但它也可能是一些校准的结果。

方法2 Temp(degree) = ( ( (110 - 30)*(TS_DATA - TS_CAL1) ) / (TS_CAL_2 - TS_CAL_1) ) + 30使用两个校准点,30°和110°,更正确。注意,方法1也可以使用两个校准点(用于计算平均斜率)。此外,方法2可让您在任何地方(可能在您更感兴趣的范围内)获取校准点。

然而,这两种方法都受到传感器的非线性(如果有的话)的影响。我认为存在一些非线性,因为方法1讲述了“平均斜率”。 如果想要更高的精度,可以采用多个校准点并在它们之间进行插值。

答案 1 :(得分:0)

我目前正在使用微控制器stm32 f030 c8t6 :问题:当温度传感器通道被激活时,TS_DATA =(ADC值)*(Vdd / Vref)或TS_DATA =(ADC值)是温度传感器的adc值吗?