Heatbed temperature tomfoolery
I've been banging my head against the wall trying to figure out why I was having issues with ABS warping even at fairly high bed temperatures, until I pointed an IR camera at the bed and saw it a full 10-15C cooler than what the software claims. Then I started banging my head against the wall for another reason as I tried to sort out why the thermistor was returning the wrong temperature, until I found out it wasn't. The software is just hardcoded to lie about the temperature. The firmware has this little gem:
// temperature offset adjustment #ifdef BED_OFFSET float _offset = BED_OFFSET; float _offset_center = BED_OFFSET_CENTER; float _offset_start = BED_OFFSET_START; float _first_koef = (_offset / 2) / (_offset_center - _offset_start); float _second_koef = (_offset / 2) / (100 - _offset_center); if (celsius >= _offset_start && celsius <= _offset_center) { celsius = celsius + (_first_koef * (celsius - _offset_start)); } else if (celsius > _offset_center && celsius <= 100) { celsius = celsius + (_first_koef * (_offset_center - _offset_start)) + ( _second_koef * ( celsius - ( 100 - _offset_center ) )) ; } else if (celsius > 100) { celsius = celsius + _offset; } #endif
This seems to be mostly undocumented, but with the default numbers what it's doing is gradually adding 5 degrees Celsius to the temperature when the real reading is increasing from 40 to 50C, and an additional 5 degrees Celsius as it rises from 50 to 99C, for a cumulative 10C offset by the time you hit 100C. Meaning if you set your heated bed to 100C, the highest it will ever reach is 90C, and ultimately the bed you thought was getting to be just too damn hot for ABS is maybe not quite hot enough. What on earth is this code supposed to accomplish? Best I can figure is it's trying to compensate for a thermistor that's hotter than the hottest portion of the bed, but there doesn't seem to be a very large temperature gradient between the thermistor and the hottest part of the bed. There's also little reason to think just tacking on an extra 10C without documenting that anywhere or making it configurable is an effective method of compensation. I've found a few other threads that seemed similarly confused about why the heated bed wasn't reaching the proper temperatures, but usually people just blamed the measurement methods.
Is there any downside to just setting BED_OFFSET to 0 in the firmware? Having the printer lie about the bed temperature isn't a terribly useful feature to me, but I don't want to go inadvertently breaking something else.
RE: Heatbed temperature tomfoolery
I have just come here to explain how I got out of an issue with my bog standard much used Mk3. And saw your post, which was VERY valid!!
I'd been a bit slow to realise that on my new favourite PLA filament, after six months on and off use, the more erractic bed adhesion was likely due to the winter lower temps (17-18C ambient).
Then using a hand held laser temp measurer (for my fish tanks) I discovered that the default supposed bed temp of 60C was actually only a very erratic across the bed 45C, even with preheating.
Experimenting, I have found that a screen temp bed setting of 80C actually gives between 71C and 48C at various points on the bed while actually printing.
However, set to 80C, all my adhesion issues have simply gone away.
Now, I have no idea if this is due to a failing bed, erratic sensing, your discovery, etc, etc, but its clearly not right !!!