You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派通过MCP3008读取KY-013温度传感器数值转换异常求助

KY-013温度传感器搭配MCP3008温度转换异常问题

问题说明

实际室温为21.7℃,但通过转换公式得到的温度结果为34℃或其他与实际不符的数值。使用KY-013温度传感器搭配MCP3008驱动模块,传感器连接至驱动的1通道,接线方式参考常规树莓派MCP3008模拟输入教程。土壤湿度传感器搭配该驱动可正常工作,但MCP3008通道1返回值为0-1之间的数值,无法正确转换为摄氏度。

已尝试的转换方案

  • 数据手册公式
    原公式(C语言版本):

    Temp = math.log(10000.0 * ((1024.0 / RawADC - 1)));
    Temp = 1 /(0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp)) * Temp);
    Temp = Temp - 273.15; // 开尔文转摄氏度
    return Temp;
    

    因树莓派通道无输入时返回值为1,将公式中的RawADC替换为1 - RawADC,结果返回约34℃,与实际室温不符。

  • 线性转换公式1

    voltage = 5 * (1 - RawADC)
    temp = (voltage / 1024 - 0.5) * 100
    # -55为传感器最低可测温度,125为最高可测温度
    return temp - 55
    
  • 线性转换公式2

    delta_temp = 125 - (-55)
    delta_v = 5 - 0
    m = delta_temp / delta_v
    b = -55 # 0V对应-55℃
    T = (1 - RawADC) * 5 * m + b
    

    此外还尝试过比例法,结果均不符合预期。

当前运行代码

from gpiozero import MCP3008 
from time import sleep
import math


while True:
    # 创建temp对象,对应MCP3008的1通道
    temp = MCP3008(1) 
    print(temp.value) # 输出值约为0.49或0.53
    sleep(0.1)
    voltage = (1 - temp.value) * 5
    Temp = math.log(10000.0 * (1024.0 / voltage - 1))
    Temp = 1 /(0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp)) * Temp)
    Temp = Temp - 273.15 # 开尔文转摄氏度(原注释错误已修正)
    print(Temp) # 输出值低于-74

参考资料

  • 转换系数示意图
  • 转换函数示意图
  • 主程序示意图

内容的提问来源于stack exchange,提问作者AnonimF

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 10:05:16