# Scaling temperature readings

**URL:** https://klipper.discourse.group/t/scaling-temperature-readings/6954
**Category:** General Discussion
**Created:** [March 1, 2023, 1:34pm UTC](https://klipper.discourse.group/t/scaling-temperature-readings/6954 "2023-03-01T13:34:50Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![olhev](https://avatars.discourse-cdn.com/v4/letter/o/54ee81/32.png) [@olhev](https://klipper.discourse.group/u/olhev)
#### Post date: [March 1, 2023, 1:34pm UTC](https://klipper.discourse.group/t/scaling-temperature-readings/6954/1 "2023-03-01T13:34:50Z")

</div>

I measured the offset between bed thermistor and print surface at various temperatures so I can define a linear or parabolic formula to scale the readings to obtain the “real” temperature.

Clearly the goal is to have the set temperature to also be the real one, without having to remember the offset, even more so when multiple printers are in use and each one has a different offset.

However, it’s not clear to me, after reading the docs about thermistors, how to do it, if it’s even possible.

Can anyone provide help? thanks

---

<div class="post-metadata">

### Author: ![Sineos](https://yyz2.discourse-cdn.com/free1/user_avatar/klipper.discourse.group/sineos/32/18_2.png) [@Sineos](https://klipper.discourse.group/u/Sineos)
#### Post date: [March 1, 2023, 2:07pm UTC](https://klipper.discourse.group/t/scaling-temperature-readings/6954/2 "2023-03-01T14:07:52Z")

</div>

Not possible as of today. For a discussion that goes into this direction refer to:

> <https://github.com/Klipper3d/klipper/pull/5972>
>
> The idea behind the following PR is to have a more accurate bed surface temperat…ure
> 
> Usually users who have big and thick beds have an offset between the bed surface and the thermistor temperature located on the heater, also they usually need to wait some time for the bed surface to reach the thermal equilibrium with the heater.
> 
> This PR allow the user set a new control algo that uses two sensors, one for the bed surface and one for the heater.
> 
> This new algorithm uses two PID loops, one for controlling the heater and one for controlling the bed surface, it works using the minimum control values beetwen the both PID loops.
> The main target for the heater will be always the bed surface, the maximum heater temperature is set on the heater section.
> 
> Here we can see a more detailed simulation:
> !\[image\](https://user-images.githubusercontent.com/8016520/210602894-7b46de66-232a-46f7-9092-ece7895230dd.png)
>  
> The temperature on the heater (orange curve) was set to not exceed 100ºC while the bed surface target was on 60ºC
> 
> And here we can see a practical situation on my printer, which have a bed size 350mmx350mmx8mm. In this situation the same parameters was set as in the simulation
> 
> !\[curva\_dualpid\](https://user-images.githubusercontent.com/8016520/210603312-886870d3-d8e4-467a-a085-ffb5107e226f.png)
> !\[curva\_dualpid2\](https://user-images.githubusercontent.com/8016520/210603770-66df2f42-e569-4733-92e1-dc3d890819c6.png)
> !\[image\](https://user-images.githubusercontent.com/8016520/210603894-e06de353-0e38-4772-9da9-5fd004683f7c.png)
> 
> Here is how I setup the sensors in my bed:
> !\[image\](https://user-images.githubusercontent.com/8016520/210604491-f759b54c-3d27-4708-8051-d1663e356f7a.png)
> 
> and here how my configuration looks like now:
> !\[image\](https://user-images.githubusercontent.com/8016520/210604697-07ef86d0-91f3-4f9e-ae80-5b70f69a4f3e.png)

and

> [@Dual Loop PID, a accurate bed surface temperature](https://klipper.discourse.group/t/dual-loop-pid-a-accurate-bed-surface-temperature/6268):
>
> Usually users who have big and thick beds have an offset between the bed surface and the thermistor temperature located on the heater, also they usually need to wait some time for the bed surface to reach the thermal equilibrium with the heater. I opened a pull request with a dual loop PID. This new algorithm uses two PID loops, one for controlling the heater and one for controlling the bed surface, it works using the minimum control values beetwen the both PID loops. The main target for the …

---

<div class="post-metadata">

### Author: ![olhev](https://avatars.discourse-cdn.com/v4/letter/o/54ee81/32.png) [@olhev](https://klipper.discourse.group/u/olhev)
#### Post date: [March 1, 2023, 3:01pm UTC](https://klipper.discourse.group/t/scaling-temperature-readings/6954/3 "2023-03-01T15:01:22Z")

</div>

I am aware of the Dual loop PID, but that’s a new feature based on two thermistors and which won’t likely make into mainline, the pull req has been closed already.

I hoped there was a way correct a single thermistor.

I remember from maybe 3 years ago that Octoprint offered some offset correction (I think), so I was looking for the same feature.  
I guess I will have to manually calculate new thermistor coefficients to be put into a new custom thermistor, which in theory should work.

---

<div class="post-metadata">

### Author: ![Sineos](https://yyz2.discourse-cdn.com/free1/user_avatar/klipper.discourse.group/sineos/32/18_2.png) [@Sineos](https://klipper.discourse.group/u/Sineos)
#### Post date: [March 1, 2023, 3:26pm UTC](https://klipper.discourse.group/t/scaling-temperature-readings/6954/4 "2023-03-01T15:26:26Z")

</div>

I would not mutilate the characteristic of the sensor.  
Typically the offset is stable at a given bed temperature. E.g. on one of my printers, the offset is 13°C at 80°C → Need 93°C to reach 80°C on the bed surface, so I just work with this offset.

Personally I do not use a lot of different bed temperatures since the relevant bed mesh is also taken at the given temperature, so it was quite easy to define these static offsets.

---

<div class="post-metadata">

### Author: ![EddyMI3D](https://yyz2.discourse-cdn.com/free1/user_avatar/klipper.discourse.group/eddymi3d/32/1981_2.png) [@EddyMI3D](https://klipper.discourse.group/u/EddyMI3D)
#### Post date: [October 1, 2025, 5:47am UTC](https://klipper.discourse.group/t/scaling-temperature-readings/6954/5 "2025-10-01T05:47:56Z")

</div>


