Custom thermistors: probing resistance

My hotend thermistor has died and I’m wondering about using this random thermistor that I have in my parts box.
I have no idea what it is, but I think I don’t need to: Klipper has provision for custom thermistors: you just need to tell it the resistance at three or more temperatures, and it can work it out.

My question is of whether we can use Klipper to probe the resistance at the given temperatures, and if so, how?

I dont think so.
And you would need a way to accurately heat the thermistor to the given temp anyways.
What I would do is(or what I normally do to calibrate a thermistor): heat up some water to a specified temp, check it with a precise and calibrater thermometer(preferably an analog one), then put the thermistor in and measure the resistance with a multimeter

It’s easy enough to heat: just fit it to the hotend. The problem is measuring the temperature of the hotend.
My first thought was that room temperature gives us one pair, then to stick the thermistor to the bed, and wind that up to get the second pair, leaving only the problem of a third pair.
We could of course use the bed to get all three pairs, but I expect it is more accurate if we use a pair near the working temperature.

But does it actually need to be accurate, as long as it is precise?
It helps, of course, but we’re looking for the temperature that this given plastic melts at, and as long as we determine that consistently, it doesn’t really matter what number is assigned to it.

But the point is moot now: I found a spare thermistor of the normal type.

I still think it would be helpful to be able to get a reading off the thing, but I just found this thread, where Kevin says:

That is everything but accurate, the temp on top of your bed is most probably not the temp the thermistor is reading

I think there is a lot superficial knowledge and myths floating around this topic. Some theory:

Accuracy

Accuracy is defined as:

The ability of a measurement to match the actual value of the quantity being measured

  • If in reality it is 30.0 °C outside and a temperature sensor reads 30.0 °C, then this sensor is accurate
  • Accuracy can be improved by calibrating, i.e. correcting / offsetting against a known good source

Precision

Precision is defined as

  1. The ability of a measurement to be consistently reproduced
  2. The number of significant digits to which a value has been reliably measured
  • If on several tests, the temperature sensor matches the actual temperature while the actual temperature is held constant, then the temperature sensor is precise.
  • Improving precision is difficult, as most time inherent to the system, e.g. ADC resolution, noise, used probes etc.

Meaning for 3D printing

  • You are basically not interested in the temperature that your probe measures, but in the temperature at which the molten filament leaves the nozzle
  • The temperatures at which the filament leaves the nozzle compared to the measurement of the probe depends on:
    • Design of the hotend, i.e. thermal mass, location of the probe relative to the nozzle, length of the “hot zone”, material and associated thermal conductivity / capacity of the heat-block
    • The filament itself
    • Power of the heating element
    • Printing speed
    • External influences, like fans, heated chamber etc.

Summary

  • Accuracy is nice to have but Precision (especially No. 1) is more important
  • Best practice: Tune your printing temperature depending on filament (even same filament with a different color can have an impact) and printer design and printing speed
  • With the tuning you basically take Accuracy out of the calculation
  • If you change any of a.m. parameters then retune

Of course if you have a print-farm with N identical printers you want to have a (very) high accuracy as well but this is a different discussion then.

2 Likes

Thank you. That was what I thought.

You should be able to declare the thermistor as a temperature_sensor ( Configuration reference - Klipper documentation ) temporarily using something like a “Generic 3950” thermistor definition. Then heat the sensor to a set temperature and run the QUERY_ADC command (see the docs for details - G-Codes - Klipper documentation ). That can report a resistance, which you can then use in configuring an actual custom thermistor for the sensor ( Configuration reference - Klipper documentation ).

-Kevin

1 Like

I’ve ticked that as a solution, but I haven’t tried it yet. Looks like what I was asking for.

Thank you.

Remind me to make an extras module for macros to query pins. Might be useful for say load cells or the genaric pins on some fysec boards.