Автонастройка ПИД регуляторов 3D принтера

Добавлено в закладки: 5

На днях столкнулся с необходимостью перепрошивки платы MKS Gen_L. Необходимо было перенастроить прошивку. Как всегда, после прошивки необходимо было подобрать параметры ПИД регуляторов (ну влом мне их прописывать каждый раз в прошивку или в EEPROM). В моем принтере настроены на ПИД регулирование и стол, и хотэнд. Как обычно, т.к. делаю это далеко не каждый день, необходимо было вспомнить какие команды и ее параметры за это отвечают. На официальном сайте Marlinfw всегда есть подсказка.

М303 – запуск автонастройки

С – количество циклов автонастройки, минимум 3, по умолчанию 5.

Е – номер хотэнда (-1 для стола)

S – целевая температура.

В принципе ничего сложного, вводим в командной строке M303 C8 E0 (или -1 для стола) S<желаемая температура>, ждем завершения цикла, смотрим подобранные коэффициенты и вносим их либо в прошивку (компилируем и заливаем на плату), либо сразу в EEPROM. Ни то ни другое не очень удобно. Конечно после окончания цикла, можно ввести М500 для записи параметров в EEPROM, но дело в том, что изменений нет, эти вновь подобранные параметры просто выведены в консоль. Чтобы они прописались в EEPROM их необходимо каким-то образом применить. Сделать это кроме как в ручную нельзя, т.к. ни одна команда не сможет их считать из консоли.

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

If EEPROM_SETTINGS is enabled, all PID values are saved with M500, loaded with M501, and reset with M502.

U<flag>  Use PID result. (Otherwise just print it out.)

Т.е. параметр U – использовать результат настройки??? А если проверить?

M303 C8 E0 S210 U???

M303 C8 E-1 S70 U???

После завершения цикла вбиваем в консоль М503 и видим текущие коэффициенты, отличные от дефолтных!!! Да и принтер греет уже как надо

Автонастройка ПИД регуляторов 3D принтера

Все, до полной автоматизации подбора коэффициентов ПИД регуляторов остается один шаг!

Теперь просто создаем один  раз в жизни текстовый файл, имя даем ему, например, PIDCalibr, но обязательно меняем расширение на *.gcode и вписываем туда такие строки

M303 C8 E0 S210 U

M303 C8 E-1 S70 U

M500

Чтобы это сработало, в прошивке обязательно необходимо расскомментировать строку #define EEPROM_SETTINGS.

В принципе, все. Теперь привычным способом просто запускаем этот файл на печать. После окончания циклов, все подобранные коэффициенты будут прописаны в EEPROM!

При желании знать об окончании калибровки коэффициентов можно вставить звуковое оповещение, само собой в прошивке строка #define SPEAKER должна быть расскоментирована:

M303 C8 E0 S210 U

M303 C8 E-1 S70 U

M500

m300 s2000 p1000

Естественно, файл можно отредактировать именно под свой принтер.

Данный способ 100% работает на прошивке Marlin 2.0.x на 8 битных микроконтроллерах. На 32 битных платах на основе STM32, LPC1768 и им подобных, вышеописанный способ требует проверки, т.к. в этих контроллерах физически отсутствует EEPROM, возможно потребуются дополнительные настройки. На прошивках 1.1.х все это не тестировалось, надо проверять. Так же у меня нет информации о работе на других прошивках.

15

   2020-12-04      Раздел: Новичку, Секреты и лайфхаки 3D печати  
Автор: Просмотров: 7 254   9 комментариев



9 комментариев на «Автонастройка ПИД регуляторов 3D принтера»

  1. На 32-битных происходит то же самое, #define EEPROM_SETTINGS отрезает кусок флеша и использует его как EEPROM.

    1
    1. Я в курсе что там используется флэш память программ, вопрос в том, работает ли так запись коэффициентов, лично я не проверял.

      0
      1. Вас устроит, если я скажу, что написал это (выше) как практик, а не как теоретик? :)

        0
        1. Так вы ровным счетом ничего и не написали :) Если проверяли этот метод на 32 битных платах на STM32 или LPC176x, то так и напишите, “да, проверил, плата такая то, прошивка такая то, версия такая то, работает да/нет”

          0
          1. Да у всех, кого знаю (включая и меня, конечно) это работает на 32-битках. На втором Марлине. Лишь бы объёма флеша в самом процессоре хватало (от 256К и выше будет нормально – см. ТТХ конкретной платы). Вот эти бесконечные вопросы про пруфы, если честно, вгоняют в ступор и отбивают желание вообще что-либо писать.

            0
  2. Супер-метод! Один микро-файл – и 100% результат быстро и качественно.
    Спасибо!

    0
    1. Не за что *OK* На чем, кстати, проверяли?

      0
      1. На классике – Mega2560 + RAMPS.

        0
  3. Проверил только что на sBase на LPC1768 с прошивкой Marlin 2.0.9.3, коэффициенты подобрались после запуска файла, применились и вывелись в консоль. НО! Когда дошло дело до М500 она не сработала, печать на этой команде зависла *WALL* Почему не знаю, не разбирался. Просто вбил М500 в консоль и отправил. После этого все сохранилось и работает.

    0

Добавить комментарий




     
Авторизация
*
*
Генерация пароля
Яндекс.Метрика