树莓派通过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
相关产品推荐
相关产品推荐

