Marlin: защита хотэнда и стола от перегрева
Все прошивки ограничивают температуры нагрева хотэнда и стола. Однако в августе 2020 года, в процессе печати, мне пришлось столкнуться с тем, что Marlin ограничивает температуры нагрева как-то по-своему. Например, на хотэнд из g-кода приходит 255, но Marlin ограничивает температуру на уровне 245 градусов. При этом в настройках Marlin'а было задано ограничение 260. Так что пришлось с этим разбираться.
Как оказалось, в файле menu-temperature.cpp используются явным образом заданные числовые константы (так называемые magic numbers/hard codes): 15 для хотэнда и 10 для стола. На эту величину и уменьшаются соответствующие параметры:
#define HEATER_0_MAXTEMP
#define BED_MAXTEMP
Вероятнее всего, это добавленная когда-то давно защита от перерегулирования, так и оставщаяся в этой неприглядной реализации. Чтобы автоматически учитывать в настройках эту топорно сделанную защиту, максимальные температуры удобно указывать в виде выражений, а не констант. Например:
#define HEATER_0_MAXTEMP (260+15)
#define BED_MAXTEMP (110+10)
Дополнение от июля 2022 года
Мантайнеры Marlin'а исправились и сделали свою защиту явной, для чего вынесли данные поправки в раздел настроек Thermal Overshoot (вероятно, начиная с версии 2.0.8):
/** * Thermal Overshoot
* During heatup (and printing) the temperature can often "overshoot" the target by many degrees
* (especially before PID tuning). Setting the target temperature too close to MAXTEMP guarantees
* a MAXTEMP shutdown! Use these values to forbid temperatures being set too close to MAXTEMP.
*/
#define HOTEND_OVERSHOOT 15 // (°C) Forbid temperatures over MAXTEMP - OVERSHOOT
#define BED_OVERSHOOT 10 // (°C) Forbid temperatures over MAXTEMP - OVERSHOOT
#define COOLER_OVERSHOOT 2 // (°C) Forbid temperatures closer than OVERSHOOT
Рекомендации остаются в силе.
Сказать спасибо
Если эта информация оказалась для вас полезна, то вы можете отблагодарить меня любой суммой на своё усмотрение, перейдя по этой ссылке.