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

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

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

    geleos27 Гик

    Да в любом удобном варианте. Обработчик для нажатий только надо будет дописать, чтобы он не путался в кнопках. Но в вашем скетче этой проблемы нету я так понимаю
    А какое там принципиальное отличие? Делитель коэфициентов ПИД? У меня НИ быстрый (спирали под стеклом), а ВИ относительно медленный (керамика 250w). (да, пардон, я повторяюсь. но помнить у кого на чем собрано рехнешься) Столкнулся у себя при калибровке температур НИ и ВИ что не хватало точности для коэфициентов ПИД, пришлось P и D дополнительно делить на 10.

    В итоге коэфициенты при стандартных для скетчей делителях:
    ВИ: kP=3.1; kI=2.3; kD=37;
    НИ: kP=0.6; kI=2.3; kD=8;

    График ВИ
    03.PNG

    График НИ
    (болтанку +\- 15 градусов пока так и не получилось победить, но в целом при температуре 250+ градусов это около 6% ошибки, что не так критично. Скорее всего связано с тем что большую часть времени мощность всего 10-20% и каждый % дает приличный пинок температуры спиралей)

    08.PNG

    Смотреть на нижнюю зеленую полоску - это отклонение температуры платы от графика (ака термопрофиля).
    0 отклонения = -50
    Точность на этапе пайки в районе 2-3 градуса. Перелет в конце, т.к. тормознул с поднятием ВИ.
    Пид платы еще нуждается в настройке, но уже можно работать.

    08-Пошатал-GPU.png
     
    Последнее редактирование: 27 июн 2020
  2. SOLOway

    SOLOway Гуру

    Если сделать акцент на слово
    :)
    Если не делать, то как "малой кровью", т.е. без необходимости перезаливать в плату разные скетчи, можно добиться единого для всех типов излучателей варианта?
     
  3. geleos27

    geleos27 Гик

    Добавить еще один пункт в меню? =) Переключение типа нагревателя. Который будет подставлять правильный алгоритм пид \ правильный множитель.

    Глянул оба скетча. Вы решили оставить мой вариат пид в варианте С.
    Там по хорошему тогда добавлять еще пункты в меню для настройки kF, и buff_depth.

    Я не на 100% уверен что его проще настроить чем обычный PID.
     
    Последнее редактирование: 27 июн 2020
  4. SOLOway

    SOLOway Гуру

    У меня такая мысль, да. Но я не смогу самостоятельно это написать, там и классическая версия ПИД, возможно, должна быть - по величине ошибки, и измененная - ПИД по измерению t°C. И еще я тоже думал, после перечитывания постов @SNMar4enko на форуме у Александра, что может быть нехватка разрешения при задании коэффициентов, в том числе и процентов мощности.
     
    Последнее редактирование: 17 июл 2020
  5. geleos27

    geleos27 Гик

    Ммм... надо погуглить про ООП) Так то ПИД просто функция. А управление мощностью ВИ и НИ 2 разных объекта, которые можно обрабатывать одной и тойже функцией. (т.е. не будет жетских Pid1, Pid2, ...) а будет Pid_dE (по ошибке), Pid_dT(по изменению температуры). Тогда и переключать можно будет без проблем.

    Какие есть варианты увеличить разрешение выдаваемой мощности, кроме как фазового управления?
     
  6. Dmitrysh

    Dmitrysh Гуру

    Зачем одна функция? У нас такое уже было. ООП для микроконтроллера это плохо, много времени тратится впустую.
     
  7. geleos27

    geleos27 Гик

    Вероятно потому что я далёк от программирования и не вижу проблемы почему это НЕ заработает))

    Если у нас вместо 2х функций будет одна. Вероятно в неё придется передать чуть больше параметров (ограничения выхода + сохранение ed, integra между вызовами)
    Если нагреватели одинаковые - обрабатываем оба одной функцией, если разные, переключаем необходимый на другой вариант Pid.

    Не вижу проблемы. Мы один фиг храним состояние (значения для I, D , ...) между вызовами ПИД, только сейчас обработка объектов (ВИ и НИ) захардкожена.

    Можно хотябы ключевые слова по которым поискать?
     
  8. Dmitrysh

    Dmitrysh Гуру

    Для димера вариантов увеличения разрешения нет, по крайней мере програмно
     
    SOLOway нравится это.
  9. frost37rus

    frost37rus Нерд

    Нашёл трансформаторный блок питания с регулировкой тока, есть такие характеристики 4,5в 800мА и 7,5в 700мА
    700мА хватит при 7,5в если им запитать ардуино и брать 5в с самой ардуино?
    Или подскажите примерное потребление самой ардуинки + вся обвязка
     
    Последнее редактирование: 27 июн 2020
  10. geleos27

    geleos27 Гик

    Можно еще немного наброшу на вентилятор?

    Курю видео по матлабу, там есть обучалки по теории управления.

    Фактически PID в нашем случае - это управляющая функция.
    Чисто технически внутри скетчей ничего не мешает заменить её на любой другой алгоритм управления: нечеткую логику, PIDE.
    (я не говорю что надо прямщас менять на чтото, я про то, что это возможно)
    Соответственно над PID можно изголяться как хотим, нет смысла держаться за его исходную форму.
    Он может перестать быть пид, но останется управляющей функцией.

    В чем @Dmitrysh прав - что извращенные версии кушают больше памяти \ сложнее в настройке \ не всегда работают лучше.
    Но блин, без экспериментов и сравнения результатов - не найти лучшего варианта)

    Основная проблема которая остается у ПИД - перелёт при продолжительном недогреве за счет инерции системы Плата - Нагреваель.
    Я все еще пытаюсь построить какую-то более-менее адекватную модель станции чтобы можно было хоть как-то предсказывать температуры платы, но результаты пока не очень. (+\- 50 градусов=) )

    ВОПРОСЫ:

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

    Собственно какие есть варианты Предсказать поведение системы Нагреватель - плата, кроме модели?
     
  11. SOLOway

    SOLOway Гуру

    Если каждым излучателем управляет свой ПИД по датчикам на самих излучателях, решается проблема длинной петли обратной связи. Какая есть функция (например, у термопрошников), которая будет подсовывать некие (какие?) аргументы в соответствующий ПИД, для ведения профиля по датчику у чипа (единственная длинная петля)?
     
  12. geleos27

    geleos27 Гик

    Собственно над этим я мозговал некоторое время.
    Исходя из того как у них построены профили и что говорил Директор в обучающих видео у них на сайте:
    (собственно я это писал ранее)
    Есть графики температур для НИ и ВИ, по ним идет управление мощностью ВИ и НИ. (т.к. температуру проще отстраивать нежели мощность напрямую)

    Исходя из показаний датчика Платы, к температуре по графику прибавляется или убавляется некоторое значение. (оно естественно ограничено сверху и снизу чтобы не делать попкорн)

    Если в графическом представлении то так:
    PID-Logic.png

    В моем случае максимальная коррекция температуры: +\- 70 градусов для НИ, и +\- 30 для ВИ.
    На практике ПИД платы можно заменить на какой-то другой алгоритм, исходя из скорости реакции нагревателей скорее всего это будет PI

    В коде выглядит так:
    Сначала вычисляем ПИД платы, (Output3)
    Потом вычисляем температуру на сколько корректировать ВИ и НИ, проверяем не превышает ли ограничения.
    Вычесланное значение прибавляем \ убавляем к температуре которая должна была быть по графику ВИ \ НИ.
    Передаем это значение в соотвествующий PID. (temp_correction_bottom + SetPoint_Bottom)

    Код (C++):
              temp_correction_top = Output3 * profile.participation_rate_top / (uint8_t)100;                          // вычисляем на сколько градусов скорректировать значние по графику
              temp_correction_top = (temp_correction_top < profile.max_correction_top) ? temp_correction_top : profile.max_correction_top; // проверяем не превышает ли макс значение коррекции

              temp_correction_bottom = Output3 * ParticipationRateBottom / (uint8_t)100;                              // ParticipationRateBottom без profile.
              temp_correction_bottom = (temp_correction_bottom < profile.max_correction_bottom) ? temp_correction_bottom : profile.max_correction_bottom; // проверяем не превышает ли макс значение коррекции

              Output2 = PidTEST2(Input2,temp_correction_bottom + SetPoint_Bottom,profile.kp2,profile.ki2,profile.kd2);

    Ссылка на скетч в подписи. Там комментарии на каждый чих, т.к. память у меня короткая.
    Основной прикол в том, что коррекция по темп платы при правильно настроенных коэфициентах ПИД ВИ и НИ, позволяет использовать чужие профили. Я например вбил родные профили от про мини, и они с 1го раза выполнились.

     
    Последнее редактирование: 27 июн 2020
    SOLOway нравится это.
  13. frost37rus

    frost37rus Нерд

    А подскажите, 7805 ставили на радиатор или нет?
     
  14. hacjka

    hacjka Гик

    да и 7809 и 7805 ставил на небольшие радиаторы от тюнеров спутниковых.
     
  15. frost37rus

    frost37rus Нерд

    @hacjka а примерное потребление в пике какое у всей станции можете сказать
     
  16. Wzor

    Wzor Нерд

    Скажите, а зачем Вам станция? Вы такие вопросы задаете что начинаешь думать что от нечего делать.
     
    hacjka нравится это.
  17. hacjka

    hacjka Гик

    на то времени нету.
    все собирается на работе,как говорится хаотично,когда есть полчасика..... работает,и ладно.меня более конструктив,настройка и работа станции интересуют...а не замеры потребления.
     
  18. virs

    virs Нерд

    может кому нужно
     

    Вложения:

    hacjka и SOLOway нравится это.
  19. virs

    virs Нерд

    2
     

    Вложения:

    • IMG_4171.JPG
      IMG_4171.JPG
      Размер файла:
      152,3 КБ
      Просмотров:
      305
    • IMG_4175.JPG
      IMG_4175.JPG
      Размер файла:
      114,3 КБ
      Просмотров:
      314
    • IMG_417666.jpg
      IMG_417666.jpg
      Размер файла:
      35,5 КБ
      Просмотров:
      299
    SOLOway нравится это.
  20. virs

    virs Нерд

    термопро
     

    Вложения:

    SOLOway нравится это.
Статус темы:
Закрыта.