Contents

Identifying Hotend Thermistor

A method to identify an unknown thermistor

As a recent owner of a second-hand Voron 2.4, I’ve been exploring how it works and optimizing its performance (someone may affectionately call “calibration hell”). Early on, I noticed an issue with the hotend temperature readings: when I powered on the machine, the hotend temperature was consistently reported as 12 degrees Celsius below room temperature. This immediately told me something was off and confirmed why my prints “could have been better”.

Setup analysis

My first step was to check the cables on the EBB42 toolboard (a common toolboard by BigTreeTech for Voron printers), its documentation from BTT, and my Klipper configuration files. What I discovered was a clear misconfiguration: The hotend thermistor was connected to the TH0 port on the EBB42.

While this port can be used for some thermistors, the EBB42 also features a dedicated MAX31865 sensor, which is specifically designed for PT100/PT1000 RTD sensors and offers significantly more accurate and reliable temperature readings. My suspicion grew that the previous owner was just happy with the initial wiring instead of aiming to the optimal setup.

Before changing the connections, I had to make sure about the kind of thermistor the printer had.

Empirical testing

Before looking at the results, here’s a reference of the possibilities I was expecting:

Feature PT100 PT1000 NTC Thermistor
Change with temperature Resistance increases Resistance increases Resistance decreases
Resistance at 0°C 100 Ohm 1000 Ohm Very high (the exact value depends on the model)
Resistance at 25° ~110 Ohm ~1100 Ohm ~100KOhm

Here are my measurements of the sensor’s resistance using a digital multimeter:

  1. The first one at room temperature and got 1098 Ohm
  2. The second one after heating the sensor with my hands and got 1103 Ohm

As the resistance was increasing with the heat and the reading were in the range of the PT1000 expected values, I can confirm this is a PT1000 sensor.

Updating the configuration

My previous Klipper configuration was reading raw measurements from the thermistor on port TH0, showing fluctuating values too:

1
2
3
4
5
6
[extruder]
...
sensor_type: PT1000
sensor_pin: EBBCan: PA3
pullup_resistor: 4700
...

So I disconnected the PT1000 wires from the TH0 on the EBB42 board, recrimped them into the appropriate connector and connected on the port using MAX31865. Last but not least, I updated the DIP Switch positions according to the BTT Docs

After that, my Klipper config looked like this:

1
2
3
4
5
6
7
8
9
[extruder]
...
sensor_type: MAX31865
sensor_pin: EBBCan: PA4
spi_bus: spi1
rtd_nominal_r: 1000       # Nominal resistance of PT1000 at 0°C
rtd_reference_r: 4300     # Reference resistor that the MAX31865 uses to read the sensor
rtd_num_of_wires: 2       # Number of wires in the sensor
...

The Solution and Key Takeaways

When I powered on the printer again, I noticed the hotend temperature reported a value very similar to room temperature, and it perfectly matched the bed temperature reading. That’s a definite win! Seeing those accurate numbers after all the troubleshooting is a huge relief.

With the sensor correctly identified and configured, the next crucial step was to run a PID Tune, as this process allows Klipper to precisely learn how to maintain a stable hotend temperature, optimizing its heating cycles. After completing the PID tune, I printed a test object, and showed how my print settings were off.

This whole process made me dive deeper into how different thermistors work, which was a valuable learning experience. It also reinforced a critical lesson: even with complex machines like 3D printers, breaking down an issue into smaller, testable steps is often the most effective path to a solution.