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

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

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

    geleos27 Гик

    Имхо вам проще не мучать @Dmitrysh по этому вопросу, а подключить станцию к ПК и отправлять настройки оттуда. (Благо программа от Dmitrysh это умеет) Один фиг это нужно только на этапе настройки, который вы через 2-3 недели победите.

    Все как вы говорите, но до этого EEPROM единицами забили же...

    Под спойлером было "Если до чтения по адресу начала уже сделана запись этого-же объекта (переменной \ структуры), то прочитается без проблем."

    Если поменять формат профиля не перезаписав данные в EEPROM - то прочитается каша, да.
     
    Последнее редактирование: 21 июл 2020
    hacjka нравится это.
  2. Dmitrysh

    Dmitrysh Гуру

    Да, но другие пользователи об этом не вспомнят. И мы рассматриваем самый худший сценарий.
    Там станция на mega328+1602 экран, она не умеет через ПК настраиваться.
     
  3. SOLOway

    SOLOway Гуру

    Примерно так я и думал. Но сдаваться не хочу. Мы применяем деление/умножение на 10,100,1000 для скорости роста t°C и составляющих ПИД. И при этом пишем их в EEPROM в размерности byte. Возможно такое деление на 10 провести для уставки НИ? - Т.е. в меню, на дисплее 1, а для контроллера это 10, соответственно 33 для ПИД =330. Шаг задания уменьшить с 10 до 1, а максиму задания ограничить 33.
     
    Последнее редактирование: 22 июл 2020
    Dmitrysh нравится это.
  4. Dmitrysh

    Dmitrysh Гуру

    Кстати связка mega328+1602 по работе мне нравиться больше чем mega2560+TFT, меньше лагов вылазит и стабильнее работает.
     
    SOLOway и Wzor нравится это.
  5. geleos27

    geleos27 Гик

    Блин, надо в правило ввести в подпись добавлять ссылку на используемый скетч)

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

    Вот как мне его искать? Пересматривать все сообщения от Dmitrysh?
     
    Последнее редактирование: 21 июл 2020
    hacjka, Dmitrysh и SOLOway нравится это.
  6. Dmitrysh

    Dmitrysh Гуру

    это можно.
    а зачем
    если можно выводить через десятку 10, 20, 30.. 330
    или через пятерку 5, 10, 15 и тд
    или через двойку 2, 4, 6 и тд.
     
    hacjka нравится это.
  7. Watashi

    Watashi Гуру

    Есть вариант записать в EEPROM не с 0 адреса, например с 2000. В моем скетче профиль занимает 87 байт, умножаем на 10 это меньше килобайта, а EEPROM имеет 4К. так что места хватит.
    У меня адрес начинается с 1000
     
    geleos27 нравится это.
  8. Dmitrysh

    Dmitrysh Гуру

    А что нам даст такой вариант? Мы всё равно теряем профили. И не надо забывать, что мы в данном контексте говорим об станции на mega328, а там 1к памяти EEPROM и 14 профилей. Даже если профиль 50 байт нам всё равно не хватит на второй набор.
     
    SOLOway нравится это.
  9. SOLOway

    SOLOway Гуру

    Я тоже добавил в подпись.
     

    Вложения:

  10. Dmitrysh

    Dmitrysh Гуру

    Есть ещё один "извращённый" способ увеличения задания температуры НИ без увеличения размерности хранимых в EEPROM переменных профиля.
    Заключается этот способ в "воровстве" пару бит у переменной profileSteps. У неё на данный момент 8 бит или число 255, обычно столько не надо. Можно "украсть" у этой переменной 1 или 2 бита и у неё останется 5-6 бит(63-127 значений) а нам прибавится несколько сотен к заданию НИ.
    Способ непростой, но если очень нужно, то можно сделать.
     
  11. SOLOway

    SOLOway Гуру

    Попробовал делить и множить, не всё понял пока. В предыдущем посте скетч с изменениями, в этом посте "скетч" - блокнот изменений.
    Setpoint2 задаю с шагом 1 от 8 до 35. Для вывода на дисплей есть SP2, при выводе я её множу на 10 везде, где есть её вывод. В основном цикле Setpoint2=SP2, не знаю, что с ними надо делать. В секции включения грелок Setpoint2 множу на 10 (... Output2 = Pid2TEST2(Input2, profile.Setpoint2 * 10, ...). В функции PID2 есть int ust, не знаю, что с ней делать. В общем, подробнее в приложенном э-мм, "скетче" :)

     

    Вложения:

    • proba.ino
      Размер файла:
      6,2 КБ
      Просмотров:
      163
    Последнее редактирование: 21 июл 2020
    Dmitrysh нравится это.
  12. Foxweld

    Foxweld Нерд

    Извиняюсь скетч качал давно называется sketch_TFT-320x480_dimer_PC_revolver_Dmitrysh_v4_EX он с поста #3009
     
    Последнее редактирование: 21 июл 2020
  13. Dmitrysh

    Dmitrysh Гуру

    Посмотрите как бы я это всё реализовал.
     

    Вложения:

    • proba.ino
      Размер файла:
      6,1 КБ
      Просмотров:
      155
    SOLOway и geleos27 нравится это.
  14. LessNICCKoff

    LessNICCKoff Гик

    Здравствуйте Dmitrysh. Есть предложения по изменениям:
    1. Сделать циклическую прокрутку в настройках.
    2. Запоминать последнюю позицию в настройках.
     
    hacjka нравится это.
  15. Dmitrysh

    Dmitrysh Гуру

    Для таких изменений будет правильнее использовать энкодер, а на клавиатуре это будет только код усложнять. Я работаю над энкодерной версией, уже написан обработчик энкодера и небольшой обработчик кнопки. Но на всё, как обычно, не хватает времени. Версий под разное железо много, есть много идей и есть много подводных камней. Плюс я не всё могу испытать, потому как нет подходящего "железа". Поэтому необходимо выразить огромную благодарность тем участникам которые тестируют на своих станциях наши разработки и высказывают хорошие идеи по улучшению работы.
     
    Последнее редактирование: 22 июл 2020
    SOLOway и hacjka нравится это.
  16. Dmitrysh

    Dmitrysh Гуру

    вот вариант с преднагревом.
    задаём температуру до которой будет преднагрев вот здесь
    Код (C++):
    #define inert_heater 50   //Раскоментировать, если нужен преднарев для инерционного НИ
     
    а в ветке REFLOW_STATE_PRE_HEATER в строке
    Код (C++):
    #else  
          Output2 = 60;
     
    задаём мощность с которой будем преднагревать(в данном случае 60%).
     

    Вложения:

    hacjka, tssergej и Foxweld нравится это.
  17. tssergej

    tssergej Нерд

    Зарание извеняюсь за много букв.
    Может быть кому то мой опыт пригодится.
    Последние пару дней с подачи Geleos27, эксперементировал со скетчем, в котором реализован старт профиля верха, по термопаре верхнего нагревателя, при этом профиль НИ идёт по ТП установленной на нижней стороне стеклокерамической панели. В результате этих тестов, окончательно убедился что PIDом такие инерционные грелки не укротить. Перелёты от 30 до 50г. в зависимости от скорости роста температуры. Если учесть что температура снимается непосредственно с НИ, то на самой плате перелёт 15-25г. обеспечен.
    Для решения этой проблемы пошёл следующим путём- температуру НИ ставлю 255 (к сожалению это максимум в скетчах Dmitrish и Watashi для мега2560)

    При этом преднагрев низа установлен на 200г. с максимальной мощностью. При достижении 200г. стартует основной профиль НИ под управлением ПИД, но ограниченной максимальной мощностью 20%. В результате этих извращений, температура НИ от 200 до 255 доходит очень плавно и без перелетов.

    Профиль ВИ, как уже писал выше, стартует по своей ТП – 1 шаг от 135г. (с преднагревом за 20г. до уставки 1го шага), 2 шаг.180 и 3-й 225. Длительность профиля, не считая преднагрева, низа около 7 минут. Всё было бы хорошо и можно было бы на этом остановиться, НО в ходе тестов выяснилось что при достижении температуры самого НИ 255г., на плате сверху вне зоны пайки, выше 135г. не поднимается, что немного недотягивает до оптимальной 155-165. То есть для прогрева платы до оптимальной температуры, НИ должен быть нагрет примерно до 280-290г., а это невозможно из-за ограничений в самом скетче.

    Во время тестов, для контроля температуры платы, использовал второй контроллер с двумя термопарами и выводом графиков в IRSP. Одна термопара в зоне пайки непосредственно у чипа, вторая вне зоны пайки сверху платы. Сам профиль отрабатывался контроллером станции, с выводом графиков нагрева самого НИ и зоны пайки в SerialPlotter. Графики обеих программ приклеил к посту, также если кому интересно выложу видео с последним тестом на ютуб.

    Тесты проводил со скетчем от Watashi отсюда #2971, адаптированным тов. Geleos27 для вывода данных в SP и со стартом по ТП ВИ. Графики в в IRSP выводил крайний скетч от Dmitrish (на тот момент ещё без преднагрева НИ).


     

    Вложения:

    • 4.jpg
      4.jpg
      Размер файла:
      74,8 КБ
      Просмотров:
      327
    • 3.jpg
      3.jpg
      Размер файла:
      107,6 КБ
      Просмотров:
      327
    Sema и SOLOway нравится это.
  18. frost37rus

    frost37rus Нерд

    Ребят, а есть возможность калибровки термопары на MAXах? Подключаю любые дешёвые термопары, температура комнатная показывает все отлично, подключаю Omega комнатную показывает 32 градуса а если пальцем зажать то аж 43,что-то можно сделать?
     
  19. Dmitrysh

    Dmitrysh Гуру

    Нету калибровки у мах6675. Основные проблемы при получении температуры:
    1. Контрафактные мах6675(мне ни разу не попадались, но на форуме народ утверждает, что бывает).
    2. Плохое питание мах6675(очень часто встречается).
    3. Плохие термопары либо не тот тип термопар(лично имел дело с таким явлением, причём на дорогих вариантах).
     
    SOLOway и frost37rus нравится это.
  20. frost37rus

    frost37rus Нерд

    Суть в общем такая, термопара в другом приборе работает отлично, как втыкаю в мах то врет в большую сторону, другие термопары работают и там и там отлично, хотя термопары К типа все, и те что Omega, питание с 7805 ровно 5 вольт)
     
Статус темы:
Закрыта.