© 2023 DiyTronic

Первые косяки с новым Marlin-ом

После успешного обновления прошивки для Prusa i4 на свежий Marlin-1.1.1 я получил ряд сообщений от людей использовавших эту прошивку о невозможности разогреть heatbed до нужной температуры. В какой-то момент выскакивало сообщение Heating failed и принтер повисал. Давайте разберёмся в чём тут было быть дело.

Инцидент довольно неожиданный и неприятный. У себя я такого не наблюдал и это осложняло дело (позже, когда разобрался в чём дело смог симитировать такую ситуацию). Однако поковырявшись в прошивке проблему я нашёл довольно быстро.

Кто виноват?

Виновником оказалась срабатывание защиты от перегрева. Как оказалось в старой оригинальной прошивке ничего подобного не было в принципе и такая проблема возникнуть не могла просто по определению. Что же это за защита такая? Суть защиты в том, что если температура перестаёт нарастать система предполагает, что сломался датчик температуры, а нагреватель по прежнему работает, что теоретически может привести к пожару. Но в прошивке на мой взгляд с тим делом сильно перемудрили и защита реагирует не только на отсутствие изменения температуры, но и на скорость нагрева.

К сожалению в Prusa i4 нагреватель стола работает на пределе и лично на моём экземпляре стол вообще не разогревается выше 90-95 градусов. Человек с которым мы решали проблему со срабатыванием защиты сообщил, что у него стол греется до 110 градусов, но он делал дополнительную термоизоляцию стола.

Ну и соответственно т. к. стол нагревается фактически до максимума своих возможностей, то вполне логично, что чем ближе к максимум тем скорость нарастания температуры будет ниже и в итоге как показала практика она оказывается ниже скорости указанной в marlin-е по умолчанию (2 градуса в минуту), что в итоге и приводит к срабатыванию защиты.

Что делать?

По счастью в прошивке имеются настройки, позволяющие подкрутить требуемые параметры.

Отключить к чёрту эту защиту

С учётом того, что такой защиты не было как таковой в предыдущих версиях прошивки это вполне себе вараинт. Вырубить и забыть.

1
2
#define THERMAL_PROTECTION_HOTENDS // Защита hotend-а
#define THERMAL_PROTECTION_BED // Защита кровати

Соответственно нужно закомментировать данные строчки в файле Configuration.h, чтобы добиться требуемого эффекта.

Настроить параметры защиты

Это уже вариант для настоящих гурманов. Если уж разработчики предоставили нам возможность использовать защиту видимо стоит ей воспользоваться. Нужно лишь разобраться что к чему. Мы же не ищем лёгких путей — только жесть — только хардкор.

Итак заветные настройки лежат в файле Configuration_adv.h.

Для hotend-а:

1
2
#define WATCH_TEMP_PERIOD 20       // За сколько секунд
#define WATCH_TEMP_INCREASE 2 // И на сколько градусов должна вырасти температура

И соответственно для кровати:

1
2
#define WATCH_BED_TEMP_PERIOD 60   // За сколько секунд
#define WATCH_BED_TEMP_INCREASE 2 // И на сколько градусов должна вырасти температура

В моём случае человеку (который и обратился за помощью с этой проблемой) помогло увеличение WATCH_BED_TEMP_PERIOD в 2 раза. Но сам я потом в ходе экспериментов просто засекал скорость изменения температуры ближе к максимумальной температуре кровати и прописывал соответствующее значение в прошивку. Но у меня и стандартное значение работало и в итоге его и оставил.

Итого проблема решена. Может быть пригодится кому-то ещё.

Комментарии