ИК паяльная станция на Arduino Mega 2560. Доработка скетча "ARS_v2_Lilium_JSN"

Тема в разделе "Глядите, что я сделал", создана пользователем Jalnin, 2 ноя 2012.

  1. LessNICCKoff

    LessNICCKoff Нерд

    D не хватает. Уменьшить P. Как будет не добор поднимать I.
     
  2. SOLOway

    SOLOway Гуру

    И, наверное, надо учесть коэффициент деления, в одних версиях это 100, в других 1000 ...
     
    Sema нравится это.
  3. geleos27

    geleos27 Гик

    Смысл гадать? Выведите P, I, D в график порт плоттера - все сразу станет понятно.


    Вопрос к @SOLOway: Rex хорошо держит температуру плиты?
     
    Последнее редактирование: 7 авг 2020
  4. tssergej

    tssergej Нерд

    У меня таже проблема что и у @vik56 и также получалось что верх начинал отрабатывать профиль не дожидаясь выхода низа на уставку и как следствие, так как плата была недогрета, до необходимой температуры, ВИ жарил на полной мощности чтобы уложится в профиль.
    Инертность и перелёты низа удалось кое как победить, после того как вы сделали преднагрев низа . грею преднагревом до уставки-температура перелёта, затем оставшиеся 30-40гр. PIDом с ограничением мощности (хотя это уже несовсем пид)
    Но это не решает проблему полностью, так как отстроив станцию на одной плате, получим на другой более/или менее теплоёмкой, другие результаты.
     
  5. LessNICCKoff

    LessNICCKoff Нерд

    Свинец свинец.jpg
     
  6. geleos27

    geleos27 Гик

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

    Нашел на каком-то из форумов описание алгоритма предсказания. (настоящего, а не то, что делет D)

    Сглаживание температуры на 1-5 секунд - убираем шум термопары
    (Тнаст - Тпред) \ время = Vdt (скорость изменения температуры) // используем кольцевой буфер для храниения N последних измерений Тпред

    Считаем Т_будущ на N шагов вперед, (N - время инерционности) = Тнаст + Vdt * N

    Смотрим Т_уставки на N шагов вперед, (N - время инерционности) = Т_уставки_будущ // смотрим значение уставки которое должно быть по графику через N времени

    Сравниваем Т_будущ и Т_уставки и вкл или выкл нагреватель.

    P составляющая считается по значениям Т_будущ и Т_уставки_будущ.
    I и D составляюшие считаются по значению Тнаст и Т_уставки_наст


    Из всех скетчей что я смотрел - проще всего его реализовать поверх скетча @Watashi, т.к. у него график нагрева уже предрассчитан в памяти. //поправьте если ошибся
     
    Последнее редактирование: 7 авг 2020
  7. tssergej

    tssergej Нерд

    "Голая" картинка - неочень информативно. Чтобы было понятно, как вы добились такого результата нужно видеть профиль- температуру/время шата.
    Так как к примеру на инерционном верхе, по графику неясно когда он начал профиль и когда ТП "увидела" рост температуры.
    Можно только предположить - что ВИ и НИ начали отрабатывать профиль после стадии преднагрева до 110-115 и затем ВИ после достижения температуры уставки первого шага 150 и некоторой полки (температура по инерции росла дальше) начал второй шаг до 205 и по инерции дотянул почти до 210
     
    Watashi, LessNICCKoff и SOLOway нравится это.
  8. LessNICCKoff

    LessNICCKoff Нерд

    Скетч из подписи:
    Профили.jpg

    byte out = 0;
    static float ed = 0;
    e1 = (ust - temp); //ошибка регулирования
    p1 = (kP * e1) / 10.0; //П составляющая
    integra = (integra < i_min) ? i_min : (integra > i_max) ? i_max : integra + (kI * e1) / 100.0; //И составляющая
    d1 = kd / 10.0 * (temp - ed); //Д составляющая
    ed = temp;
    out = (p1 + integra - d1 < 0) ? 0 : (p1 + integra - d1 > profile.pwr_TOP) ? profile.pwr_TOP : p1 + integra - d1;
    if (Output1>=100 && e1>0 &&integra>0) integra -= e1;
    return out;
    }
     
    Последнее редактирование: 7 авг 2020
    tssergej нравится это.
  9. tssergej

    tssergej Нерд

    Честно говоря, в ходе последних тестов я достестировался до полной каши в голове. После 10 рабочего часового дня и последующих 2-3 часов тестов, голова совсем перестаёт соображать, особенно если "повезёт" с клиентами типа случая.
    Именно с полочками я и игрался и в экстремальных случаях, профиль верха у меня заканчивался ещё до выхода НИ на температуру удержания.
    Путём подбора полочек и мощности на разных этапах нагрева/преднагрева удалось добиться адекватного профиля, но как уже писал выше, для данной конкретной платы. Для другой платы, нужно опять подбирать время, мощность, температуру. Таким образом проблему можно решить, но хочется же полной универсальности, то есть чтобы вместо долгих и мучительных тестов, контроллер сам "решал" как долго и с какой мощностью греть ту или иную плату.:)
     
  10. SOLOway

    SOLOway Гуру

    А кто-нибудь пробовал вернуть в скетч библиотеку PID, переписанную @revolover?
    Или эта замена ничего хорошего не даст в принципе? Там диапазон значений значительно шире размерности byte.
     
  11. geleos27

    geleos27 Гик

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


    Интересно проанализоровать параметры такого профиля.
     
    Последнее редактирование: 7 авг 2020
  12. LessNICCKoff

    LessNICCKoff Нерд

    Верным будет в настройках реализовать выбор: лампы - керамика. И от этого исходить с коэфициэнтами пид.
     
    Beto нравится это.
  13. Alex_Taran

    Alex_Taran Нуб

    У меня вопрос подойдет ли этот ЛСД под наш проект, https://a.aliexpress.com/_B0CnGn или прийдется подправлять скетч?
     
  14. tssergej

    tssergej Нерд

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

    Watashi Гик

    подойдет.
    про подключение ТУТ
     
    LessNICCKoff нравится это.
  16. SOLOway

    SOLOway Гуру

    Пост #1363

    Я про подобное постил ранее, предлагал в виде пресетов реализовать с подключением через основное меню. Но пока действительно отлаженных пресетов нет. Хотя, можно заложить функцию переключения в меню, а использовать пока один и тот же пресет на время, пока остальные не будут написаны.
    У него есть настройки, недоступные в используемой нами функции ПИД. Например, можно задать точность поддержания уставки в 1, или другое число градусов. Ну, и ещё некоторые, которые я не разбирал, но можно ознакомиться с мануалами оригинала:
    Рексы умеют показывать при определенных настройках, скажем, уставку и достигнутую температуру = 200°С (его датчик в центре плиты снизу), и при этом внешний термометр по датчику, прижатому сверху к плите в центре, может регистрировать "гуляния" реальной температуры в пределах +/- 5-10°С. Настройки живут в трёх (Ё!) меню, мало кто с ними полностью разбирался, в основном используют по дефолту, меняя лишь алармы и значения ПИД.
     
  17. geleos27

    geleos27 Гик

    Глянул. Вычисление самого ПИД 1-в-1 как у нас в скетчах, за исключением что в наших вариантах используются "облегченные вычисления"
    Смысла в рассчетах с бОльшей размерностью не вижу, т.к. почти во всех скетчах используется всего 100 уровней мощности.
     
  18. SOLOway

    SOLOway Гуру

    А вот так мы не можем? - http://radioservice.at.ua/forum/23-27-3201-16-1525979239
    А вот эта цитата @SNMar4enko нам ничего не подскажет?:
    Кстати, mon, используя в своём контроллере внешний АЦП AD7705 для опроса двух РТ100 пишет - http://radioservice.at.ua/forum/22-24-2147-16-1482738320
     
  19. vik56

    vik56 Нерд

    D=240 Уменьшал P до того момента, пока плата стала не долетать до уставки примерно 2-4°, ставлю I=1, сразу перелет на 10°. Поставил I=0 P=4 D=250, держит температуру нормально, но по графику скорость нагрева упала, пришлось время включения верхнего нагревателя увеличить.
     
    Sema нравится это.
  20. djzakdell

    djzakdell Нуб

    День добрый давно слежу за темой потихоньку скуплял что нужно и вот начал розбераться со всем и прешол в тупик.
    Дисплей такой. http://www.lcdwiki.com/3.95inch_Arduino_Display-Mega2560#Reference_Materials

    Проект делал От@Watashi :
    MEGA2560 + TFT 3.5" 480x320 + 2*MAX6675 + PC(опция) + энкодер + сенсор + RTC

    Читая тему вроде все понятно но не могу понять как откалибровать сенсор и куда параметры калибровки вписать.У кого такой дисплей подскажите как привязать сенсор к дисплею.Вот видео как сейчас ведёт себя