【问题标题】:Right formula for calculating temperature sensor using STMF401RE Nucleo?使用 STMF401RE Nucleo 计算温度传感器的正确公式?
【发布时间】:2017-06-17 00:50:02
【问题描述】:

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

方法一: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板时应该应用哪个公式?

【问题讨论】:

  • 出于好奇,你用这两种方法测量什么,你用什么作为参考温度?
  • 第二个等式不正确,应该是“80”或“110 - 30”。
  • 您好,第二个等式中有错字(现已更正)。我有一个可以控制温度的烤箱。我使用室温 (20oC)、-10oC、60oC 作为参考温度。我从方程 2 得到的结果对参考温度更合理。

标签: microcontroller stm32 stm32f4discovery stm32f4 stm32f0


【解决方案1】:

方法 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 讲述了“平均斜率”。 如果您想要更高的精度,您可以获取多个校准点并在它们之间进行插值。

【讨论】:

  • 感谢@linuxfan,现在我对温度传感器的计算有了更好的了解。
  • @bienle 不客气。正如本网站的帮助中所说,您应该接受答案而不是感谢... :-)
  • @bienle,有一个重要说明。 STM32F0xx 附带校准的温度传感器:每个 MCU 都有 TS_CAL1 和 TS_CAL2 值,存储在闪存的固定地址。使用此 MCU,您只需从 ADC 读取值、从闪存读取值并计算准确的温度。你的MCU没有校准,所以你需要在常用之前进行校准。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-14
    • 1970-01-01
    • 2014-03-31
    • 1970-01-01
    • 2023-01-21
    • 1970-01-01
    • 1970-01-01
    • 2021-09-08
    相关资源
    最近更新 更多