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

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

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

    Dmitrysh Гуру

    Я с него начинал. В принципе работает, но пид крайне сложно настроить было.
     
  2. revolover

    revolover Гик

    Библиотеку ПИД уже перебрал в большей степени. Вывел три составляющие ПИД на экран.
    Глюки с eeprom решились возвратом частей кода из другой модификации скетча.
    Уже работает достойно, но нужно еще проработать ряд фишек, как и когда будет выполняться переход на ПИД, ручная подстройка И составляющей в процессе пайки. итп
     
  3. revolover

    revolover Гик

    Еще появилась идея аварийной остановки на случай отвала термопары от платы и чипа...

    И еще... О скорости роста:
    Скорость в секундах это хорошо, но не нравится мне такой вариант, там и пид не совсем корректно будет работать.
    Так вот, есть же у нас Д составляющая, она при росте температуры тем больше по модулю, чем выше скорость роста, значение прямо пропорционально kI соответственно, и при стандартном вычитании из выходной мощности ПИДа мы имеем снижение мощности тем сильнее, чем выше скорость роста температуры. Так мы можем держать скорость в определенных рамках.
    Но если делать включение ПИДа за n градусов до выхода на уставку, то необходимо добавить алгоритм с Д составляющей для остального температурного промежутка. Но проще на время основного роста температуры Фиксировать ПИ составляющие на определенном значении или их коэффициенты менять.
     
  4. SOLOway

    SOLOway Гуру

    Можно включать подачей питания сигналом от контроллера ВИ, при нажатии "Старт пайки". Выключаться будет при окончании процесса пайки снятием этого сигнала.
    Передавать задания можно таким извратом: Настраиваем коэффициенты на 3-х видах плат ( а) MXM, б) miniATX, в) ATX, г) Pb+ с меньшей температурой подогрева платы, - настроить на плате формата miniATX - этого хватит. ) под свой конкретный нижний подогрев, и сохранить 4 скетча с соответствующими названиями. Мы все равно ПК используем, а залить скетч займет 30сек. Хотя, по личному опыту помню, что коэффициенты ставил только один раз на все платы, а менял только температуру преднагрева Pb- / Pb+. Немного на разных платах менялось время разогрева до заданной температуры.
    Можно для экономии ног использовать способ как здесь: http://mysku.me/blog/china-stores/39793.html
    Можно этой кнопкой менять режим преднагрева Pb- / Pb+.
    На время подгонки коэффициентов можно смотреть график преднагрева, используя хоть наш контроллер, используя его датчик, хоть любой иной, что есть под рукой.
     
  5. SOLOway

    SOLOway Гуру

  6. revolover

    revolover Гик

    Я ранее уже писал, что тоже на своих проектах коэффициенты подстраивал для разных температур. Но вводил пару на разных температурах, и их них рассчитывались для каждой уставки промежуточные линейно. Это дельный подход. Также можно сделать под разные платы. Оценив на глаз или вес итп, вводить условное значение и коррекция рассчитается. Но тут опыт нужен, чтоб определить какой подарок больше тепла нужно.
    Пока себе в проект поставлю ручную коррекцию интеграла на лету. Очень спасает в случае отклонений или не правильных параметров
     
  7. SOLOway

    SOLOway Гуру

    На Гитхабе нашел код PID для digispark attiny85:https://github.com/macckk/attiny85
    На ютубе есть этого года видео немца, который сделал аж двухканальный ПИД на этой крохе:


    Только как получить код... Немец приглашает по всем вопросам писАть ему на е-мейл. На его страничке нет описаний, только фото из его жизни...
     
  8. revolover

    revolover Гик

    Я так понимаю, что многие тут с опытом в ардуине. Подскажите, какие есть средства отладки помимо записи в порт? На МК когда писал прошивочки - эмулировал все в протеусе и мог наблюдать все значения переменных оп именам там же, включая переменные в eeprom. А тут какая-то безвыходность в этом плане.
     
  9. revolover

    revolover Гик

    Если сложные задумки реализовывать - косяки отслеживать будет сверхнеудобно((((
     
  10. revolover

    revolover Гик

    А к чему? Хотите разгрузить МК в ардуине? Выигрыша не будет. Ардуинка не такая уж слабая, и пид ей почти незаметен. Всё ограничение ложится на пробегание по loop() а там много всего. Если очень хочется ПИД растормозить - кидайте его в прерывание по детектору. Счётчиком можно организовать период выполнения. Из библиотеки пида тогда успешно выкидывается код условия / замера периода, еще ряд плюшек можно убрать, думаю, что будет летать. Кстати на меги всегда паял кварцы 16 MHz. Даже там где не нужно. Просто у меня их мешок из Китая, а это +30% производительности относительно ардуинки.
    Может кто тут в курсе... у бабули кондишка накрылась, в БП греется ШИМ TNY277PN, секунд через 20-30 вырубается по перегреву видимо. Транс холодный. думается что микрушка DIP7 шима приказала долго жить. Обвязку смотрел.
    Так вот нет у нас их в городе. Есть самые слабые из линейки. Может кто в курсе аналогов?
     
    Последнее редактирование: 9 июл 2018
  11. Dmitrysh

    Dmitrysh Гуру

    Не все так плохо, но и не все так просто. Ставьте в протеус модели ардуино. Ищите временную папку, куда ардуино IDE скидывает временные файлы и ищите файл имя_скетча.elf. Этот файл используйте в качестве прошивки в протеусе. Сможете посмотреть глобальные переменные, eeprom переменные, таймеры. По программе пройтись не удастся, если только вы не умеете компилировать скетч в avr-gcc. Я пробовал один раз не без помощи хороших людей, это полный ппц. У меня в протеусе это выглядит так:
    proteus.jpg
     
  12. Dmitrysh

    Dmitrysh Гуру

    Не в loop дело, а в медленном экране tft. Вот такая конструкция:
    Код (C++):
    if (isnan(Input1)) {
           myGLCD.setFont(BigFont);
           myGLCD.setColor(VGA_RED);
           myGLCD.print("ERORR",360, 140);
         } else {
           myGLCD.setFont(SevenSegNumFont);
           myGLCD.setColor(VGA_RED);
           myGLCD.printNumI(tc1,345, 120,3,'0');
       
         }
        if (isnan(Input2)) {
           myGLCD.setFont(BigFont);
           myGLCD.setColor(VGA_RED);
           myGLCD.print("ERORR",360, 250);
         } else {
           myGLCD.setFont(SevenSegNumFont);
           myGLCD.setColor(VGA_RED);
           myGLCD.printNumI(tc2,345, 232,3,'0');
       
         }
    выполняется 115-120 милисекунд.
    Не советую в прерывании математику решать.
    Я уже давно переписал и даже выкладывал не так давно.
    На сколько я помню во всех ардуинах на 16МГц кварцы стоят.
     
  13. Dmitrysh

    Dmitrysh Гуру

    Боюсь что вы правы.
     
  14. revolover

    revolover Гик

    На моей китайской 12...
     
  15. SOLOway

    SOLOway Гуру

    У техноальянса ИК станция это 2 самостоятельных устройства со своими блоками управления. Совместную их работу (а также возможна работа по отдельности) обеспечивает ПО для ПК.Также каждое устройство может работать без подключения к ПК - управляется кнопками на собственном блоке управления.
    Я не экономить ресурсы ардуинки хочу - пусть контроллер ВИ будет хоть нафарширован "по-полной", пусть обеспечивает отработку термопрофиля, следит за температурой в нескольких местах (напр. внутри ВИ, у чипа, на поверхности платы), обеспечивает защиты, выводит логи и данные для графиков на ПК и еще выдает сигналы для управления автономным самодостаточным преднагревателем плат с ПИД регулятором,
    Ну, это я размечтался, конечно :).
     
  16. revolover

    revolover Гик

    Так а цель? Я так понимаю, что производители разносят на блоки для модульности, чтоб собрать устройство по нуждам и бюджету. По этой причине они независимые.
     
  17. Dmitrysh

    Dmitrysh Гуру

    Вы не на тот кварц смотрите
     
  18. revolover

    revolover Гик

    Возможно)
     
  19. SOLOway

    SOLOway Гуру

    Это было-бы верным утверждением, если контроллер универсальный. У них не так.
    А вот автономный НИ - удобная штука :) , да и если он ещё может вести термопрофиль для, например, оплавления паяльной пасты (групповая запайка смд или LED) - вообще восторг! Мне же достаточно, чтоб автономный НИ умел прогреть плату до уставки, при этом не превышая рекомендованную скорость прироста температуры, а также не затягивая сей процесс. А еще на маленьком столике очень удобно доноров разбирать, его где угодно можно поставить, в отличии от станции :) .
     
  20. Dmitrysh

    Dmitrysh Гуру

    Я бы для такой цели использовал arduino pro micro на atmega32u4. Там сразу usb и выводов очень даже не мало. Ну или тогда отдельный микроконтроллер mega8, tiny24, tiny2313 и др что подешевле.
     
    SOLOway нравится это.
Статус темы:
Закрыта.