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):

#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

Теперь максимальные температуры можно указывать в более понятном виде:

#define HEATER_0_MAXTEMP (260+HOTEND_OVERSHOOT)

#define BED_MAXTEMP (110+BED_OVERSHOOT)

Рекомендации остаются в силе.

 

За помощь надо благода₽ить

Если эта заметка оказалась полезна (внезапно) для вас, для вашего хобби или даже для вашего бизнеса, то вы можете сказать мне «Спастибо!» за проделанную для вас работу, поделившись любой необременительной для вас суммой перейдя по ссылке.