Marlin PID Калибровка. Если у вас проблемы с удержанием температуры - вам сюда

PID (ПИД, Пропорционально-интегрально-дифференцирующий регулятор) - регулятор, использующий сумму трех значения входного сигнала (Kp, Ki, Kd) для задания и поддержки температуры стола\хотенда в установленных пределах. Данные значения будут разными в зависимости от используемого железа, наличия обдува, силиконового носка и множества других факторов, поэтому калибровку необходимо производить как после первого запуска принтера, так и после изменения конфигурации хотенда\стола. Так же данную процедуру необходимо проводить при скачкообразных изменениях температуры и большом разбросе при удержании заданного значения.


*графики взяты из данной анимации - https://upload.wikimedia.org/wikipedia/commons/3/33/PID_Compensation_Animated.gif

Калибровка
В прошивку Marlin встроены инструменты для автоматической калибровки PID как для хотенда, так и для стола. Для управления нагревом стола с помощью PID необходимо предварительно активировать в прошивке параметр “PIDTEMPBED” (подробнее в разделе Прошивка -> Стол, данную процедуру необходимо провести перед калибровкой стола и прошить принтер, по умолчанию параметр выключен). Процедуру калибровки желательно проводить на максимально приближенных к печатным условиям, если у вас закрытый корпус - необходимо закрыть дверцу и надеть кожух\колпак, при калибровке хотенда стол должен находиться в непосредственной близости к соплу и обдув должен быть включен на максимум (либо значение, которое вы используете чаще всего). Внимание, во время проведения калибровки вам может показаться, что принтер завис, но это не так - тест довольно длительный и время его проведения зависит от количества установленных повторений.
Для ввода команд и получения результатов можно использовать, к примеру, ПО PrintRun (www.pronterface.com/) или любой другой софт, который может общаться с принтером посредством последовательного порта (OctoPrint, Repetier-Host и т.п.)

Экструдер
Переместите хотэнд к центру стола, подведите стол как можно ближе к соплу и включите обдув хотенда. Калибровка проводится для конкретной температуры; это не значит, что если вы провели ее на температуре 230°, то на 250°\210° работать она не будет, это лишь значит, что чем больше разница рабочей температуры от заданной при калибровке - тем больше будет погрешность, поэтому необходимо устанавливать ту величину, что чаще всего используется.

Терминал принтера:
    M303 E<hotend_num> S<temp> C<count> ;Запуск автоматической калибровки хотэнда
        E<hotend_num> - Порядковый номер хотенда (если у вас один хотэнд - 0)
        S<temp> - Температура проведения теста
        C<count> - Количество повторений теста, чем их больше - тем точнее (минимум 3, по умолчанию 5)
        Пример: M303 E0 S240 C7
Результаты выполнения команды:
    >>> M303 E0 S240 C7
    <<< PID Autotune start
    *тестирование*
    <<< PID Autotune finished! Put the last Kp, Ki and Kd constants from below into Configuration.h
    <<< #define DEFAULT_Kp 10.71
    <<< #define DEFAULT_Ki 0.61
    <<< #define DEFAULT_Kd 47.22

Полученные значения можно внести в прошивку или сохранить в EEPROM, данная процедура описана в разделе “Прошивка”. Также для калибровки хотенда можно воспользоваться готовым GCod’ом который проведет калибровку за вас и сохранит значения в EEPROM. Для этого необходимо скопировать код, описанный ниже (установив в нем свои значения номера экструдера, температуры, а также количество повторений) в текстовый файл, сохранить его с расширением “.gcode” и запустить на исполнение на вашем принтере; результаты тестирования будут автоматически сохранены. После завершения в терминал будут выведены текущие значения EEPROM для проверки, значения PID для экструдера находятся в строке с командой “M301”.

;HotEnd_PID_calibration.gcode
G28 ;Вернуться в начало координат
G1 Y100.0 X100.0 Z5.00 F1500 ;Переместить хотэнд на координаты X100 Y100 Z5
M106 S255 ; включить обдув модели на 100%
;
M303 E0 S240 C7 U ;E0<номер экструдера> S<температура> C<циклы> U<применить полученные значения>
M106 S0 ; выключить обдув модели
M500 ;Сохранить полученные значения в EEPROM
;
M503 ;Вывести текущие значения EEPROM для проверки

Стол
(необходимо активировать параметр PIDTEMPBED в прошивке)
Процедура калибровки PID для стола практически не отличается от калибровки хотенда. При наличии корпуса закройте дверцу и установите крышку принтера, чтобы создать закрытый объем внутри принтера. Обратите внимание, что команды для калибровки стола и хотенда совпадают, отличается лишь параметр номера экструдера, для стола это всегда будет “-1”

Терминал принтера:
    M303 E-1 S<temp> C<count> ;Запуск автоматической калибровки стола
        E-1 - Калибровка стола
        S<temp> - Температура проведения теста
        C<count> - Количество повторений теста, чем их больше - тем точнее (минимум 3, по умолчанию 5)
        Пример: M303 E-1 S80 C7
Результаты выполнения команды:
    >>> M303 E-1 S80 C7
    <<< PID Autotune start
    *тестирование*
    <<< PID Autotune finished! Put the last Kp, Ki and Kd constants from below into Configuration.h
    <<< #define DEFAULT_bedKp 52.60
    <<< #define DEFAULT_bedKi 6.63
    <<< #define DEFAULT_bedKd 277.98

Полученные значения также вносятся в прошивку или сохраняются в EEPROM. Для тестирования стола также можно использовать GCode, указанный ниже, сохранив его в файл с расширением “.gcode” и запустив на принтере; он проведет тестирование и автоматически сохранит значения в EEPROM. После завершения в терминал будут выведены текущие значения EEPROM для проверки, значения PID для стола находятся в строке с командой “M304”.

;Bed_PID_calibration.gcode
G28 ;Вернуться в начало координат
G1 Y100.0 X100.0 Z5.00 F1500 ;Переместить хотэнд на координаты X100 Y100 Z5
M106 S255 ; включить обдув модели на 100%
;
M303 E-1 S80 C7 U ;E-1<стол> S<температура> C<циклы> U<применить полученные значения>
M106 S0 ; выключить обдув модели
M500 ;Сохранить полученные значения в EEPROM
;
M503 ;Вывести текущие значения EEPROM для проверки


*Графики температуры во время проведения тестирования

Прошивка
Экструдер
Значения, полученные после PID калибровки, записываются в разделе “PID Settings” в файле “Configuration.h” по порядку (без кавычек):

\Marlin\Configuration.h
    //===========================================================================
    //============================= PID Settings ================================
    //===========================================================================
    ***
    ***
    ***
      #define DEFAULT_Kp <Kp value>
      #define DEFAULT_Ki <Ki value>
      #define DEFAULT_Kd <Kd value>

Стол

Для управления нагревом стола через PID необходимо раскомментировать параметр “PIDTEMPBED” (убрать “//”), после чего можно по порядку ввести значения Kp, Ki, Kd в разделе “PID > Bed Temperature Control” в файле “Configuration.h”:

\Marlin\Configuration.h
    //===========================================================================
    //====================== PID > Bed Temperature Control ======================
    //===========================================================================
    ***
    #define PIDTEMPBED
    ***
      #define DEFAULT_bedKp <Kp bed value>
      #define DEFAULT_bedKi <Ki bed value>
      #define DEFAULT_bedKd <Kd bed value>

После прошивки принтера необходимо стереть EEPROM и загрузить в него значения, установленные нами в прошивке, для этого в терминале принтера нужно ввести две команды по порядку (до точки с запятой):

Терминал принтера
    M502 ; Загрузить значения указанные в прошивке
    M500 ; Сохранить значения в EEPROM

EEPROM
Не стоит забывать, что значения PID хранятся в энергонезависимой памяти контроллера и после перепрошивки вам необходимо либо восстановить в EEPROM значения, указанные нами в прошивке, либо, если вы не хотите перепрошивать свой принтер, вы можете сохранить значения напрямую в EEPROM, но не забывайте, что при использовании команды “M502” (записать значения из прошивки в EEPROM) придется повторно записать PID значения в EEPROM, так как они будут заменены теми, что указаны в прошивке. Для хранения данных значений предпочтительнее указывать их в прошивке - это убережет вас от множества проблем.

Терминал принтера:
    M301 P<Kp value> I<Ki value> D<Kd value> ;Установить значения PID для хотенда
    M304 P<Kp bed value> I<Ki bed value> D<Kd bed value> ;Установить значения PID для стола
    M500 ; Сохранить значения в EEPROM

image
*Результаты удержания температуры после правильной калибровки

@LiS92
Спасибо всем, надеюсь данный гайд оказался для вас полезным. Правки и пожелания направлять в telegramна одноименный аккаунт.
Так же хотел бы сказать что завел канал в telegram где данный гайд есть в формате PDF документа с более удобным форматированием текста: @LiS92Live

4 Симпатий