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

使用Arduino Nano读取100K Semitec 104GT2 NTC温度异常求助

问题:Arduino Nano读取E3D-v6热端NTC热敏电阻始终显示368.80℃

我是论坛新用户,若话题发布位置有误敬请谅解。我使用Arduino Nano控制3D打印机的E3D-v6 HotEnd,该热端采用100K Semitec 104GT2 NTC热敏电阻(β系数4267K),通过4.7kΩ电阻连接至A0引脚,运行以下代码后,测得的温度始终为368.80℃,求排查及解决方法。

#define THERMISTOR_PIN A0
#define SERIES_RESISTOR 4700  // 4.7 kohm resistor

// Steinhart-Hart coefficients for Semitec 104GT2 NTC Thermistor
#define A 0.001129148
#define B 0.0004267
#define C 0.0000000876741

void setup() {
  Serial.begin(9600);
}

void loop() {
  // Measure the thermistor resistance
  int rawValue = analogRead(THERMISTOR_PIN);

  // Calculate the thermistor resistance
  float resistance = SERIES_RESISTOR / (1023.0 / rawValue - 1.0);

  // Calculate temperature using the Steinhart-Hart equation
  float steinhart;
  steinhart = resistance / 100000.0;     // (R/Ro)
  steinhart = log(steinhart);            // ln(R/Ro)
  steinhart /= B;                        // 1/B * ln(R/Ro)
  steinhart += 1.0 / (25 + 273.15);       // + (1/To)
  steinhart = 1.0 / steinhart;            // Invert
  steinhart -= 273.15;                    // Convert to Celsius

  // Print the obtained temperature value to the Serial Monitor
  Serial.print("Temperature: ");
  Serial.println(steinhart);

  delay(1000);
}
排查与解决方案
  • 优先排查硬件连接
    固定368.80℃通常是因为rawValue读取到0或极小值,导致电阻计算逻辑异常:

    • 检查A0引脚与热敏电阻、分压电阻的接线,确认无虚焊、断线;
    • 确认接线逻辑:NTC一端接5V,另一端接A0和4.7kΩ电阻,电阻另一端接GND,顺序不能错;
    • 用万用表测A0引脚电压,室温下应在2V左右,若接近0,说明电路短路或接线错误。
  • 修正代码计算逻辑
    你误用了Steinhart-Hart公式,正确公式为1/T = A + B*ln(R) + C*(ln(R))^3,修正后的温度计算代码如下:

    // 正确的Steinhart-Hart计算逻辑
    float steinhart;
    steinhart = log(resistance); // 取电阻的自然对数
    steinhart = A + B*steinhart + C*steinhart*steinhart*steinhart; // 计算1/T(开尔文)
    steinhart = 1.0 / steinhart; // 转换为开尔文温度
    steinhart -= 273.15; // 转换为摄氏度
    

    建议先打印rawValue确认读取是否正常:

    Serial.print("Raw Value: ");
    Serial.println(rawValue);
    

    若rawValue为0,优先解决硬件问题;若数值正常,说明是公式错误导致计算异常。

  • 可选:用β系数公式验证
    若硬件确认正常,也可尝试β系数公式计算温度(适用于温度范围不大的场景):

    float beta = 4267.0;
    float tempK = 1.0 / (1.0/(25+273.15) + log(resistance/100000.0)/beta);
    float tempC = tempK - 273.15;
    

内容的提问来源于stack exchange,提问作者ertuğrul Kandemir

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 21:05:01