2、温度传感器基础:热敏电阻原理、热电偶原理、Marlin支持的传感器类型、传感器配置宏定义

温度传感器,说白了就是3D打印机的「体温计」。没有它,热端就是一颗定时炸弹,热床也只是一块冰冷的铝板。我刚开始玩Marlin时,最头疼的就是传感器配置——明明接好了线,温度读数却乱跳,甚至直接显示-14℃。后来才发现,是宏定义配错了型号。

这一章,咱们就把传感器这件事彻底讲透。

2.1 热敏电阻:最常用的温度探头

热敏电阻,英文叫Thermistor。Marlin里90%的机器都在用这东西。它便宜、响应快、精度也够用。

原理其实很简单:温度变了,电阻值跟着变。但要注意,热敏电阻是负温度系数(NTC)的——温度越高,电阻越小。嗯,这跟直觉刚好相反。

关键公式:Steinhart-Hart方程

Marlin内部用这个方程把电阻值换算成温度:

1/T = A + B·ln(R) + C·[ln(R)]³

其中T是开尔文温度,R是当前电阻,A、B、C是热敏电阻的特性系数。Marlin的查表法就是基于这个方程预计算的。

我在项目中遇到过一个问题:某批热敏电阻的B值偏差了2%,结果打印出来的零件尺寸全偏了。后来我学乖了,每次换新批次的热敏电阻,都会用万用表测一下室温下的阻值,跟规格书对一对。

2.2 热电偶:高温场景的硬汉

热敏电阻有个致命弱点——超过300℃就不太靠谱了。这时候,热电偶就派上用场了。

热电偶的原理基于塞贝克效应:两种不同金属的接点受热时,会产生微小的电压信号。温度越高,电压越大。你想想看,这玩意儿能测到1000℃以上,工业级热端和特殊材料打印全靠它。

注意:热电偶不是即插即用的

热电偶输出的电压信号非常微弱,只有几十微伏每摄氏度。必须搭配MAX31855或AD8495这类专用放大器,把信号放大后再送给主板的ADC引脚。我曾经直接跳过放大器,把热电偶接到主板上,结果读数一直在-273℃和+999℃之间疯狂跳变——那画面太美我不敢看。

2.3 Marlin支持的传感器类型

Marlin的传感器支持列表,说实话,是我见过最全的。从几毛钱的普通热敏电阻,到几百块的高精度PT100铂电阻,再到工业级热电偶,全都有。

我整理了一张表,把常用的列出来:

传感器类型 宏定义值 测温范围 典型应用
EPCOS 100K B57560G104F 1 -40~300℃ 热端、热床
NTC 100K 3950 5 -40~300℃ 通用热端
PT100 (MAX31865) 20 -200~850℃ 高精度热床
K型热电偶 (MAX31855) 50 -200~1350℃ 高温热端
AD595 K型热电偶 51 -200~1350℃ 工业级热端

为什么有这么多型号?说白了,不同厂商的热敏电阻,B值和标称阻值都不一样。Marlin为每种传感器都内置了查表数据,你只需要告诉它「我用的是哪种」,它就能准确换算温度。

2.4 传感器配置宏定义

在Marlin的Configuration.h里,传感器配置是最容易出错的地方。我见过有人把热床的传感器类型写成了热电偶,结果热床加热到50℃就报错停机。

核心宏定义就这几个:

// 热端传感器类型
#define TEMP_SENSOR_0 5    // 使用NTC 100K 3950

// 热床传感器类型
#define TEMP_SENSOR_BED 1  // 使用EPCOS 100K

// 第二个热端(如果有双头)
#define TEMP_SENSOR_1 0    // 0表示未安装

每个数字对应一种传感器型号。你可以在Marlin源码的temperature.cpp里找到完整的对照表。我个人习惯是,先把传感器型号记下来,然后去对照表里找对应的数字,最后再填到宏定义里。这样不容易出错。

避坑指南:

我曾经把TEMP_SENSOR_0和TEMP_SENSOR_BED写反了,结果热端温度一直上不去,热床却烧到了200℃。还好我人在旁边,及时断电。从那以后,我每次改配置都会用M105指令检查一下两个通道的温度读数是否合理。

2.5 传感器类型选择流程图

下面这张图,是我自己总结的传感器选型逻辑。每次做新机器,我都会走一遍这个流程:

选择温度传感器 最高温度 是否超过300℃? 是 否 热敏电阻 热电偶 是否需要 高精度? 是 否 普通NTC 100K PT100 + MAX31865 是否超过 800℃? 是 否 K型 + MAX31855 B型/R型专用 配置 TEMP_SENSOR_x 宏定义 完成配置

这张图的核心逻辑就一句话:温度范围决定传感器类型,精度要求决定具体型号。普通玩家用NTC 100K就够了,玩高温材料的才需要上热电偶。

2.6 写在最后

传感器配置这件事,说难不难,说简单也不简单。我见过有人用错了传感器类型,打印出来的零件表面全是疙瘩——温度不准,材料流动性就不对。也见过有人把热敏电阻的线接反了,读数一直往下掉。

嗯,记住一点:M105是你最好的朋友。每次改完传感器配置,先发一条M105看看温度读数是否正常。如果室温下显示25℃左右,那就对了。如果显示-14℃或者999℃,赶紧检查接线和宏定义。