Сравнение работы PID на прошивках Repetier и Marlin

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

Для общего понимания принципов работы PID…

Р – это сила воздействия, без D она всегда будет на максимум т.к. D определяет какую часть этой силы надо приложить в конкретный момент времени.

I – корректирует PD на основе сбора информации за определенный промежуток времени.

Т.к. I – переменная определяющая время, то в тру PID контроллерах чем МЕНЬШЕ значение I, тем быстрее реагирует контроллер. Это надо понять и осознать. Если значение I слишком велико, это приведет к осцилляциям (в ролике это значится как overdriving – избыточное руление, т.к. контроллер очень долго реагирует на появившееся отклонение от заданного параметра). Если значение I слишком мало, то контроллер не поймет, что произошло отклонение.

Видео иллюстрирующее эти слова https://www.youtube.com/watch?v=4Y7zG48uHRo

Repetier 1.0.0 dev

Repetier PID

Вверху на графике видно, что хот грелся до целевой температуры на полную катушку и…. в итоге перегрелся(

 

Repetier PID

Эта иллюстрация показывает нам, что Репитер использует либо максимальную установленную мощность нагревателя, либо 0. Прошу заметить, что на Репитере уже были откалиброваны PID’ы.

 

Marlin 1.1.0-RC7 – 31 July 2016

Тот же принтер, но с Марлином. БЕЗ калибровки PID’ов. Ситуация похожа

Marlin PID

НО! Теперь видно, что в процессе нагревания участвую не только значения 0 и МАХ, начали появляться и другие.

Скачки на Марлине, без калибровки.

Marlin PID

 

Калибровка – 30 циклов, 230гр

Marlin PID

 

Первый прогрев после калибровки ииии…..

Marlin PID

В течении минуты температура устаканится

Marlin PID

Но уже видно разительное отличие работы PID’ов в Репитере и в Марлине.

 

Выводы

Репитер оперирует только значениями 0 или МАХ – это не PID контроллер. Логика работы Марлина уже больше подходит под это определение

15

Метки: , ,    2016-08-27      Раздел: Настройка, Прошивка  
Автор: Просмотров: 9 947   24 комментария



24 комментария на «Сравнение работы PID на прошивках Repetier и Marlin»

  1. Добавлю пару моментов.
    1. За появление данной статьи в бОльшей степени надо ставить плюсы в карму Алексей AKDZG т.к. именно ОН собрал все мои мысли озвученные в чате в кучу и сформировал их в удобоваримый текст))))
    2. Пусть вас не запутываю значиния 0-255 в репитере и 0-127 в марлине, для ПИДа эти значения трактуются 0-100%. В данном случае градиент будет более размазанным в сторону репитера в соотношении 2 к 1

    0
  2. У меня, как ни странно, график был более стабильным именно с прошивкой Repetier. Но, он, каким то образом, зависит от “настроения” принтера : сегодня – график стабильный ( +\- 0,3 градуса), завтра – чёртзнаетчто :\

    0
    1. проведите те же испытания, все сразу встанет на свои места

      0
  3. Добавлю свои пять копеек, вопрос а вы термо датчик в хотэнде на термо пасту садили ? Очень советую задаться этим вопросом , собственно нагреватель так же на термо пасту бы желательно …

    Репитер и в правде не использует ПИД регулирование , это из прошивки видно …

    0
    1. Вы говорите, что Репитер не использует ПИД, а как быть с тем, что в настройках прошивки 4 режима терморегулятора? Разработчики Репитера врут или, все же, пользователи не разбираются в настройках?

      0
      1. Начнем с PID. Ели отсутствует одна из составляющих – это уже не PID, а PI например.
        Продолжим с 4 режимами работы. Это 4 разных варианта логики поддержания нужной температуры, ОДИН из которых и есть PID. Остальные отношения к PID не имеют.
        Подытожим: разрабы репитера врут, а некоторые пользователи, все же, не разбираются в настройках :D

        0
        1. Зачем вы разбили человеку розовые очки :( вы жестокий …

          Кстати читал что они вроде собираются реализовать пид с авто тюном…

          0
          1. Ребят, вы в каком веке живете? Выдержка из инструкции к репитеру:
            Finding proper PID values is difficult for the unexperienced. To overcome this, the firmware has a autotune function to find good values. Disable the extruder and wait until it is more or less cold. Then start autotune with
            M303 P0 S180
            This assumes you want to find the PID values for your first extruder and your typical target temperature will be 180°C. For your second extruder you would use P1 and for the heated bed use the number of extruders as P-value.
            давно работает автотюн и ПИД работает.
            ЗЫ что касается выбора прошивок, марлин заставил забросить мою дельту в дальний угол ровно на год, достал его и попробовал еще раз откалибровать, перечитал кучу инструкций, перепробовал несколько версий марлина, сделал щуп автолевела, нифига, погрешность плоскости не позволяет печатать, решил сменить прошивку, прошил репитер, прочитал инструкцию к нему и откалибровал за 5 минут, буквально двумя командами, так что…..

            0
      2. Я каждый день иду мимо забора какого то предприятия в гараж, там на заборе огромными буквами балоном выедено Х@Й, я даже заглядывал … там огромная собака …

        Я разработав авторскую технологии регулировки температуры АИТП , в описании так же написал что аналогична “PID” регулятору, но можете мне поверить ничего общего в ней с ним не было …

        Я констатирую факт что уже пол года я печатаю попыток перейти на репитер было 3 суммарно более 40 перепрошивок, так ине вышло сделатьстабильную температуру … прыжки +-2 градуса меня не устраивают и провалы если увеличить скорость на 300% .

        0
        1. Вы так зацепились за ПИД, как буд-то это нечто сверх выдающееся, ПИД регулятор является одним из самых распространенных не по причини его супер мега характеристик, а по причине удовлетворительной работы при простоте реализации. То что в репитере скачки не означает что ПИД не реализован, а лишь говорит о не самой лучшей его реализации и, возможно, не совсем правильной настройке.

          ЗЫ единственное что хочу заметить от себя, в репитере автотюн ПИДов реализован кривенько, у меня скачков никаких нет, но несколько градусов с откалиброванными значениями он не догревает, выходит на плато с температурой чуть ниже заданной, в итоге печать автоматом не стартует, приходится ПИД подкручивать ручками.И странно в статье слышать, ПИД был откалиброван, но хот перегрелся, раз перегрелся, значит либо в настройках был выбран не ПИД, либо ПИД криво откалиброван, более того в репитере по умолчанию ПИД работает в диапазоне +-10 градусов от заданной температуры, за пределами диапазона он греет на полную, но этот параметр можно настраивать, как раз для большой статики измерения, когда термистор показал температуру в диапазоне регулирования ПИД, но на самом деле уже поздно регулировать, получен перегрев…

          0
          1. ” а лишь говорит о не самой лучшей его реализации и” в кабинете бормана штирлец порол Чушь, она повизгивала …

            Давайте так есть математическая реализация PID регулятора ( во всех его проявлениях), я лично делал её на 20 с лишним языках разных включая промышленные FBD и прочие и везде поведение идентично. что значит ваше “не самой лучшей” я не понимаю… просто очень часто в место пида делают всякие дференциальныые/ табличные и прочие регуляторы
            пид работает всегда одинаково … это факт все …

            не стартует, надо подкручивать …. секс с резиновой куклой – меня не устраивает я хочу нажать и получить результат …

            0
  4. А теперь самое смешное, пересмотрел в статье скриншот настроек EEPROM, “Ext.1 heat manager” значение установлено 3, а 3 это ни разу не ПИД, он в этом режиме и должен греть на полную, это: “Dead time control” :D *BRAVO*

    0
    1. Еще смешне то, что конфиг запилен через онлайн конфигуратор и если 3 – это «Dead time control», то тест действительно получился кривой. Это, опять же, косяк репитера. Кроме того, местный “коллега” который глобально переписывал репитера под свои нужды так же подтвердил наличие проблем с PID у репитера.

      з.ы.
      И таки да, у меня тоже ощущение того, что мы Вам про теплое, а Вы нам про мягкое…

      0
      1. Действительно, мне пытаются рассказать что лучше теплое чем мягкое, что я делаю не так, если ПИД в репитере у меня работает, стартовый перегрев на несколько градусов, пара колебаний и выход на плато с точностью +-0.5гр.

        ЗЫ что касаемо конфигуратора репитера, если вы конфу составляли не с первого раза, то при первом запуске настройки прописались в EEPROM, при перепрошивках они автоматом не переписываются, для этого есть дефайн в Configuration.h: #define EEPROM_MODE 1, для загрузки в EEPROM значений из Configuration.h это значение должно отличаться от предыдущего, в противном случае у EEPROM приоритет, все это описано в инструкции, но кто же ее читает… *PARDON*

        1
        1. РУсский не читает инструкцию…

          0
          1. И я не читал, о чем жалею, дельта простояла год без дела, многие вообще разбирают дельты так и не откалибровав, а решилось все 10 минутным прочтением инструкции и 5ю минутами калибровки.

            1
        2. У меня кровать 220 , и ваши +- пол градуса у меня превращаются в прыжки +-5 а то и 10 градусов
          марлин после трех циклов калибровки на кроваеи держит реально 0.5 градуса и то редко

          На голове та же ботва выкручиваешьручку скоростиине че не просидает в отличии отрипитера

          0
  5. В толк не могу взять причем тут дельта и температура ?

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

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

    1
    1. Это имеет отношение к прошивке в целом, у меня дельта на марлине отказалась калиброваться наотрез, ни вручную, ни автолевелом победить кривизну поверхности печати я не смог, а в репитере я откалибровал ее двумя командами, что касается температуры, то ситуация такова, у меня в репитере все стабильно и красиво, как и в марлине, собственно…

      0
      1. Это у “вас”, у меня не возникло не каких проблем в этой стези … все прошло с полтычка.
        чтои нтересно чуть после я убрал само понятие кривизна поверхности как таковое и это для меня стало вообще не актуальным …

        0
  6. И если уж занудничать, математика ПИД в обеих прошивках реализована практически одинаково, только название переменных отличаются, а дальше можете обсуждать насколько крутой график в марлине и насколько паршивый в репитере:
    repetier:
    float pidTerm = act->pidPGain * error;
    act->tempIState = constrain(act->tempIState + error, act->tempIStateLimitMin, act->tempIStateLimitMax);
    pidTerm += act->pidIGain * act->tempIState * 0.1; // 0.1 = 10Hz
    float dgain = act->pidDGain * (act->tempArray[act->tempPointer] – act->currentTemperatureC) * 3.333f;
    pidTerm += dgain;
    output = constrain((int)pidTerm, 0, act->pidMax);

    marlin:
    pTerm[e] = Kp * pid_error[e];
    temp_iState[e] += pid_error[e];
    temp_iState[e] = constrain(temp_iState[e], temp_iState_min[e], temp_iState_max[e]);
    iTerm[e] = Ki * temp_iState[e];

    //K1 defined in Configuration.h in the PID settings
    #define K2 (1.0-K1)
    dTerm[e] = (Kd * (pid_input – temp_dState[e]))*K2 + (K1 * dTerm[e]);
    pid_output = constrain(pTerm[e] + iTerm[e] – dTerm[e], 0, PID_MAX);

    0
    1. Скажите насколько хорошим программистом вы себя считаете ?
      Я даже не стал в думываться в код а увидел сразу различия …

      А еще вы знаете чторабота пида зависит отдискритизации времени чем точнее тем луччше ?

      0
      1. Видя Вашу самоуверенность, процитирую Сократа: «люди обычно полагают, будто они что-то знают, а оказывается, что они не знают ничего. Таким образом получается, что, зная о своем незнании, я знаю больше, чем все остальные.» — если вглядитесь в код поймете что математически он близок.

        ЗЫ что касаемо дискритизации времени, я не утверждал, что ПИД в репитере работает лучше, я лишь утверждаю что он работает, в опровержении автору статьи, который написал что ПИД не работает совсем.

        0
        1. Как программист заявляю вам что о не не близок и не идентичен , он “похож”и на этом всё , вы почитайте о PI и PD и их отличия от PID… цитировать вы можете кого угодно но я разве сказал что я умный ? я то как раз дурак и прекрасно это осознаю.. (с)

          0

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




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