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

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

Статус темы:
Закрыта.
  1. Watashi

    Watashi Гуру

    Если посмотреть классическую схему ПИД регулятора
    212.jpg
    то у нас обьектом управления является нагреватель, с датчика берется сигнал обратной связи, а Туст это желаемая функция.
    А поскольку в станции только два нагревателя, то и ПИДа три, четыре и тд быть не может.
    Термодатчиков может быть много, тогда возникает вопрос как это все должно работать в кружочке на входе.
     
    hacjka нравится это.
  2. geleos27

    geleos27 Гик

    Так оно именно там и есть. Выход с ПИД платы регулирует Туст нагревателей. Нарисую схему минут через 30
     
    hacjka нравится это.
  3. Watashi

    Watashi Гуру

    Неправильно. выход ПИД это сигнал Y по картинке, а в нашем варианте это мощность нагрева в процентах.
     
    Последнее редактирование: 28 апр 2020
    hacjka нравится это.
  4. Aquacomp

    Aquacomp Нуб

    Ребята! Уплыл мой вопрос про детектор нуля. Сильно не пинайте. В общем вопрос в том, что при проверке, в мониторинге Ардуино бегут цифры 49 и 50. А автор скетча проверки ДН, говорит, что там должно быть 9 и 10. Будет этот детектор работать или нет?
     
  5. Dmitrysh

    Dmitrysh Гуру

    Должно быть 9 или 10, эти цифры соответствуют длине полупериода по времени в миллисекундах.
     
    SOLOway нравится это.
  6. freebsdmax

    freebsdmax Нерд

    нашол глюк в версии 1.3.4 при выставлении температуры от 260 до 300(300 включительно) низ не включаеться от слова совсем ставиш 310 включает и ниже 250 тоже
     
    SOLOway и Sema нравится это.
  7. geleos27

    geleos27 Гик

    Объект управления для ПИД платы - Температура ВИ и НИ
    Объект управления для ПИД ВИ и НИ - мощность ВИ и НИ

    PID-Logic.png



    Объект управления для ПИД платы - Температура ВИ и НИ -
    эксперимент поясняющий это:
    У нас одна и та-же плата, один и тот-же нижний нагреватель, делаем несколько тестов.
    Ставим плату на уже НИ. Начальная температура платы всегда 20 градусов.

    1. Температура НИ 100 градусов. Плата нагревается до 70 за 5 минут.
    2. Температура НИ 200 градусов. Плата нагревается до 150 за 5 минут.
    3. Температура НИ 300 градусов. Плата нагревается до 230 за 5 минут.
    После 5 минут температура на плате стабильна. Возможно время нагрева платы будет отличаться, но это не критично. нам важен факт -> Чем сильнее нагрет НИ - тем быстрее греется плата.

    Соответственно мы заранее экспериментально построили графики нагрева для ВИ и НИ такие, которые нашу стандартную плату всегда проводят по Термопрофилю. От ПИД платы не требуется полностью управлять температурой Нагревателей. Он только вносит коррективы при отклонении температуры платы от её термопрофиля.

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

    Экспериментально получить графики температур для ВИ и НИ просто - пишем Лог температур ВИ и НИ при выполнении профиля по любому алгоритму, который вас устраивает. После прогона корректируем там где температура плату недогревало \ перегревало.

    Зачем тогда прикручивать третью термопару, если есть алгоритм, который и по 2м профиль выполнит?
    График температур позволит вручную внести корректировки на инерционность нагревателей. Уменьшить влияние на управление фактора "теплоемкость платы" при смене платы.
     
    Последнее редактирование: 28 апр 2020
  8. Dmitrysh

    Dmitrysh Гуру

    Хорошо, а если вам нужно нагреть до 150 со скоростью 1.5 градуса в секунду, какую температуру низа вы поставите?
     
    Последнее редактирование: 28 апр 2020
  9. Watashi

    Watashi Гуру

    Надеюсь у вас получится воплотить ваши мысли в скетче.
    пысы: два предложения противоречащие друг другу.
     
  10. geleos27

    geleos27 Гик

    Температура низа очевидно будет изменяться во времени. Прямо сейчас я вам не скажу точно, какая она будет, нужно сделать пару прогонов на реально собраном железе. Но общий принцип на картинке ниже
    График температур.png

    Проблемы с выражением мыслей присуствуют, согласен. Имелось ввиду что пид Верха не может изменять мощность ВИ и НИ от 0 до 100%, он вносит небольшую итоговую корректировку приблизительно от -10 до +10% мощности.
     
    Последнее редактирование: 28 апр 2020
  11. Watashi

    Watashi Гуру

    Небольшой эксперимент

     
    geleos27 нравится это.
  12. Dmitrysh

    Dmitrysh Гуру

    Для низкоинерционных нагревателей профиль мощности вообще не нужен, а графики я бы поменял местами, так реальнее будет
     
  13. geleos27

    geleos27 Гик

    Вопрос к @Dmitrysh по реализации ПИД

    Код (C++):
    byte Pid1(double temp, byte ust, byte kP, byte kI, byte kd)
    {
            byte out = 0;
            static float ed = 0;
            e1 = (ust - temp); //ошибка регулирования
            p1 =  (kP * e1); //П составляющая
            integra = (integra < i_min) ? i_min : (integra > i_max) ? i_max : integra + (kI * e1)/1000.0; //И составляющая
            d1 = kd * (temp - ed); //Д составляющая
            ed = temp;
            out = (p1 + integra - d1 < profile.min_pwr_TOPStep[currentStep - 1]) ? profile.min_pwr_TOPStep[currentStep - 1] : (p1 + integra - d1 > profile.max_pwr_TOPStep[currentStep - 1]) ? profile.max_pwr_TOPStep[currentStep - 1] : p1 + integra - d1;
            return out;
    }
    Почему ed = temp; а не ed = e1 писали ранее: чтобы не было выброса мощности, при смене уставки, это я понял.
    Но вот почему out = (p1 + integra - d1 ... ? (минус Д составляющая)
     
  14. Dmitrysh

    Dmitrysh Гуру

    это реализация ПИД по температуре, а не по ошибке. Т.к. у нас работают рампы, то в момент смены уставки происходит скачкообразное изменение температуры, на что мгновенно реагирует ПИД выбросом мощности. Нам такое не нужно, поэтому я переписал логику работы регулятора, при которой Д составляющая компенсирует выброс мощности.
    А чего вы здесь ждали? d1 это дифференциальная составляющая, которая компенсирует выброс выходного значения ПИД при скачке температуры. Входит со знаком минус, всё правильно, всё по теории.
     
    SOLOway, hacjka и geleos27 нравится это.
  15. Dmitrysh

    Dmitrysh Гуру

    Вот немного графиков с участием термопары К-типа и термосопротивления PT100.
    Собственно РТ100:
    pt100.jpg
    РТ100 и термопара на одном графике(синяя линия термопара)
    tck_pt100.jpg
    время считывания 250мс. Видим, что термопара заметно шумнее термосопротивления. Но это сравнение не совсем верное, ибо считывание термопары происходит на максимальной скорости а термосопротивления значительно медленнее его максимальной скорости. Поэтому следующий график сравнивает участников на максимальных их скоростях, а именно PT100 - 21мс, термопара - около 220мс.
    tck_pt100_1.jpg
    вот сейчас видно реальную ситуацию. Теперь "подфильтруем" термопару
    tck_pt100_2.jpg
    уже лучше, фильтр 0,75-0,25
    Теперь нагреем немного
    tck_pt100_3.jpg
    видим, что термопара, за счёт фильтра, как бы притормаживает на росте температуры, но при этом быстрее ведёт себя на сбросе.
    А вот на следующем графике видно что РТ100 всё-таки достаточно инерционный
    tck_pt100_4.jpg
    Обратите внимание, что термопара набрала большую температуру, чем РТ100. Это говорит о том, что теплоёмкость у термосопротивления значительно выше чем у термопары.
    Также стоит отметить, что даже с патченной мной библиотекой, время получения температуры от РТ100 - 3мс, а от термопары около 250мкс.
     
    SOLOway нравится это.
  16. geleos27

    geleos27 Гик

    У меня не совсем состыковалось. Т.е. время обновления показаний термопары - 220мс, но считывание 250мКс?
     
  17. Sinad

    Sinad Нуб

    А нет возможности написать apk для планшета или телефона и не использовать дисплей Ардуино. Останется только 5 кнопок на корпусе станции и всё. Или это ни к чему? Просто мысли вслух
     
  18. Dmitrysh

    Dmitrysh Гуру

    Это время за которое мах6675 делает преобразование напряжения с термопары в код.
    Да, это время необходимое микроконтроллеру для чтения результата из мах6675 и преобразования полученного кода в температуру.
     
  19. Dmitrysh

    Dmitrysh Гуру

    медленно и не эффективно, хотя приложение для получения графиков было бы не плохо. Но это надо чтобы кто-нибудь писал под андроид.
     
  20. Sinad

    Sinad Нуб

    В чем медленность (куда торопимся? Сверхбыстродействие здесь ни к чему. Не та система). И в чем неэффективность? (Экономия в дисплее. Покупка только bluetooth модуля. Зато можно смотреть графики хоть на 5, хоть на 10 дюймах - у кого что под рукой. Ну и управление с планшета)
     
Статус темы:
Закрыта.