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

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

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

    Yojiq Гик

    Возьму на себя и попробую ответить -
    Во первых все подобные вопросы возникают пока ты не запаял 10 чипов на разных платах !
    После чего начинаешь понимать что все платы разные и нужно под каждую подстраиваться !
    А после этого начинаешь вручную и без компа вводить температуры и пусть на это тратится лишних 2-3 минуты, есть время взвесить что будет дальше ...
    1. ответ чуть выше.
    2. количество пока можно оставить как есть, иногда хватает и 2х, но можно и 4ре (если кто то предложит лучший функционал чем есть - хвала и поклон)
    3. Я сейчас занимаюсь настройкой своей станции и чем более гибкие настройки тем точнее настраивается профиль - так что ответ да, хорошо.
     
  2. Dmitrysh

    Dmitrysh Гуру

    Для профиля и eeprom хватает, а вот лог пайки записать - да можно.
    Пока трёх хватало, можно и больше, но это на любителя или под специфические чипы.
    Нет, мы просто ограничиваем ему верх и низ регулировки.
    Объясните подробнее что вы имеете в виду.
    Я об этом уже писал, причём очень давно, просмотрите тему там решение есть.
     
  3. Watashi

    Watashi Гуру

    Параметр rampRateStep он, как я понимаю, задает график роста температуры на чипе, и является задающим для ПИДа, а с другой стороны большое отклонение показаний датчика температуры от графика свидетельствует о ненормальной ситуации.
     
  4. Yojiq

    Yojiq Гик

    готов на тестах проверять то что вы сделаете с отчетом.
     
  5. Dmitrysh

    Dmitrysh Гуру

    Параметр rampRateStep это время через которое необходимо подкинуть ПИДу новое задание температуры. Он используется в так называемой рампе. Рампа нужна чтобы обеспечить заданный темп роста температуры на верхнем нагревателе. Если надо расскажу подробнее как это работает.
     
  6. Watashi

    Watashi Гуру

    Dmitrysh, спасибо за предложение, я сначала попробую разобраться в программе и, если будут вопросы, тогда и пообщаемся )
     
  7. Leonid0071

    Leonid0071 Нерд

     
    SOLOway нравится это.
  8. Watashi

    Watashi Гуру

    Всем Привет.
    Предлагаю протестировать вариант скеча станции. Загрузка профилей с SD карты - это скеч DumpFile.
    И доработанный revolover_V3-4 под названием revolover_V3-4_test.
    Используемое адресное пространство начинается с 1000 и поэтому не испортит данные профилей с начальной версии.
    Исправления коснулись только ввода профиля, в остальном все должно работать ) ... наверное).
    Сам пока протестить не могу, еще недособирал это чудо).
     

    Вложения:

    • DumpFile.ino
      Размер файла:
      9,7 КБ
      Просмотров:
      361
    • Proff4.txt
      Размер файла:
      6 КБ
      Просмотров:
      400
    • README.txt
      Размер файла:
      1,1 КБ
      Просмотров:
      402
    • revolover_V3-4_test.ino
      Размер файла:
      75 КБ
      Просмотров:
      387
  9. Yojiq

    Yojiq Гик

    Данный скетч использую - все норм только с доработками из #1794 сообщения.
    Могу протестировать (напиши отдельно), но только с вводом вручную, так как корпус запакован и добраться до флешки не имеется возможным.
     
  10. SOLOway

    SOLOway Гуру

    Подскажите, пожалуйста, по коду:
    Код (C++):
        //устанавливаем скорость нагрева "Верхним Нагревателем"
        case REFLOW_STATE_MENU_STEP_RAMP:

          if (updateScreen) {
            lcd.setCursor(2, 2);
            lcd.print("Step ");
            lcd.print(editStep + 1);
            lcd.print(" Ramp:      ");
            updateScreen = false;
          }
          lcd.setCursor(14, 2);
          lcd.print(rampRateStep[editStep] / 4);
          if (upSwitchState == HIGH && ( millis() - ms_button) > 200)
          {
            ms_button =  millis();
            rampRateStep[editStep] = rampRateStep[editStep] + 1;
            if (rampRateStep[editStep] >= 12)  //(только целые числа) максимальная скорость роста температуры делённая на 4
            {
              rampRateStep[editStep] = 12;  //(только целые числа) максимальная скорость роста температуры делённая на 4
            }
          }
          if (downSwitchState == HIGH && ( millis() - ms_button) > 200)
          {
            ms_button =  millis();
            rampRateStep[editStep] = rampRateStep[editStep] - 1;
            if (rampRateStep[editStep] <= 1)  //(только целые числа) минимальная скорость роста температуры делённая на 4
            {
              rampRateStep[editStep] = 1;  //(только целые числа) минимальная скорость роста температуры делённая на 4
            }
          }
          if (okSwitchState == HIGH && !button_state && ( millis() - ms_button) > 200)
          {
            ms_button =  millis();
            button_state = true;
          }
          if (okSwitchState == LOW && button_state && ( millis() - ms_button) > 200)
          {
            ms_button =  millis();
            button_state = false;
            updateScreen = true;
            if (editStep + 1 == profileSteps) {
              editStep = 0;
              reflowState = REFLOW_STATE_MENU_STEP_TARGET;
            }
            else {
              editStep++;
            }
          }
          if (cancelSwitchState == HIGH && ( millis() - ms_button) > 50)
          {
            ms_button =  millis();
            updateScreen = true;
            editStep = 0;
            lcd.clear();
            reflowState = REFLOW_STATE_IDLE;
          }
          break;
    На дисплее значение можно установить 0, или 1, или 2, или 3. Т.о. можно задать 4 значения скорости... Какая действительная скорость скрывается за этими цифрами? Скорость роста температуры при воздействии ВИ допустима в пределах 0,2-1,0 *С/сек, выше - ахтунг, а ниже незачем...
     
    Последнее редактирование: 6 окт 2018
  11. Yojiq

    Yojiq Гик

    SOLOway по управлению прибором - скорость задается от 0.1 до 3х точно, выше я не пробовал, у меня вообще 0.2 я ставлю, это предустановка программная которая не дает пиду вывалить свои значения в нагреватель, своего рода задержка на разгон, надеюсь правильно ваш вопрос понял, что в скетче написано к сожалению не подскажу.
     
  12. Yurik-o

    Yurik-o Нерд

    Вот эта строчка может пролить свет на проблему
    в алгоритме пайки аналогично
     
  13. Yurik-o

    Yurik-o Нерд

    это все потому, что хранить в памяти дробные числа достаточно неудобно, а в основном накладно, как по объему памяти, так и по быстродействию.
    почитайте как хранятся в памяти дробные числа и быстродействие ардуинки при этом
     
  14. Yurik-o

    Yurik-o Нерд

    шаг изменения rampRateStep[editStep] при этом равна 1/4 = 0,25 градуса/сек
    поменяв "/4" на другое значение можно получить другие скорости, а не только 0,25-0,5-0,75-1,0-и т.д.
    например, при "/5" шаги будут: 0-0,20-0,40-0,60-0,80-1,0- и т.д.

    но менять надо везде, или применить переменную

    искать неохота, но это обсуждалось где-то в начале
     
  15. SOLOway

    SOLOway Гуру

    Это скорость 12/4=3*С/сек? Не пойму никак.... Если в меню 0; 1; 2; 3 соответствуют 0; 0,25; 0,5; 0,75... зачем нужна скорость ноль и недоступна скорость 1,0?...
     
  16. SOLOway

    SOLOway Гуру

    Еще обнаружилось в скетче @Roniks59 из поста #452 (UNO + LCD2004) - невозможно выставить все значения во всех четырех профилях - чУдным образом меняются уже заданные значения соседних профилей во время редактирования любого из четырех :(
    Выставляю, для примера, первый профиль:

    устанавливаем количество шагов профиля
    case REFLOW_STATE_MENU_STEPS: 3

    устанавливаем температуру "Нижнего Нагревателя"
    case REFLOW_STATE_MENU_BOTTOM_HEAT: 100

    устанавливаем максимальную мощность "НИЖНЕГО НАГРЕВАТЕЛЯ"
    case REFLOW_STATE_MENU_BOTTOM_PWR: 65%

    устанавливаем максимальную мощность "ВЕРХНЕГО НАГРЕВАТЕЛЯ"
    case REFLOW_STATE_MENU_TOP_PWR: 82%

    устанавливаем скорость нагрева "Верхним Нагревателем"
    case REFLOW_STATE_MENU_STEP_RAMP: St1 1,0 St2 1.0 St3 0.75

    устанавливаем температуру "Верхнего Нагревателя"
    case REFLOW_STATE_MENU_STEP_TARGET: St1 101, St2 150, St3 200

    устанавливаем время перехода на следующий шаг
    case REFLOW_STATE_MENU_STEP_DWELL: St1 15, St2 10, St3 5

    настройка "ПИД" нижнего нагревателя
    case REFLOW_STATE_MENU_BOTTOM_P: P 100 I 0.4 D 21

    настройка "ПИД" верхнего нагревателя
    case REFLOW_STATE_MENU_TOP_P: P 100 I 0.7 D 16

    Эти же значения задаю во втором профиле. Захожу в редактирование первого профиля и вижу:

    устанавливаем максимальную мощность "НИЖНЕГО НАГРЕВАТЕЛЯ"
    case REFLOW_STATE_MENU_BOTTOM_PWR: 7%

    устанавливаем максимальную мощность "ВЕРХНЕГО НАГРЕВАТЕЛЯ"
    case REFLOW_STATE_MENU_TOP_PWR: 100%

    -------------------------------------------

    настройка "ПИД" верхнего нагревателя
    case REFLOW_STATE_MENU_TOP_P: P 82 I 6.50 D 16

    Вот такая шняга... К тому же коэффициент "I" "обзавёлся" "чужим" нулем правее основного значения - выглядит так: I =0,70 0 .
    Замечу, что перед редактированием профилей я забиваю еепромку единичками.
     
    Последнее редактирование: 6 окт 2019
  17. SOLOway

    SOLOway Гуру

    В общем, непонятно, @Roniks59 на контроллере с этим скетчем работал на станции - видео тестов снял. А у меня при старте пайки (ZCC подключен, он нормальный) светодиод на выходе НИ загорается только на время пока пищалка сигнализирует, собственно, о старте пайки.
    UPD: Выяснил, что такое только у меня происходит.
    UPD /26-10-18/: Просто поменял оптрон и всё стало работать - со зла собрал еще два таких ZCC - и с ними тоже работает!!!
     

    Вложения:

    • forDIM.zip
      Размер файла:
      76,3 КБ
      Просмотров:
      377
    Последнее редактирование: 6 окт 2019
  18. Yurik-o

    Yurik-o Нерд

    скорость 12/4=3*С/сек - ограничение максимального значения.
    минимальное же значение в этом блоке:
    Код (C++):
     if (downSwitchState == HIGH && ( millis() - ms_button) > 200)
          {
            ms_button =  millis();
            rampRateStep[editStep] = rampRateStep[editStep] - 1;
            if (rampRateStep[editStep] <= 1)  //(только целые числа) минимальная скорость роста температуры делённая на 4
            {
              rampRateStep[editStep] = 1;  //(только целые числа) минимальная скорость роста температуры делённая на 4
            }
          }
    меньше чем 1 не устанавливается, т.е. 1/4=0,25 *С/сек
     
  19. SOLOway

    SOLOway Гуру

    А тут какая тогда скорость?:
    20181006_202827.jpg
     
  20. SOLOway

    SOLOway Гуру

    @Dmitrysh помог оптимизировать частично и ужать в размере код, за что ему огромное спасибо. Однако бяка с работой с еепром осталась и в допиленном им скетче, только значения, которые самопроизвольно меняются в соседних профилях получились несколько другими...
    Соединения выполнены по схеме из поста # 1837.
    В постах # 1830 и # 1838 речь о коде из приведенного ниже скетча.
     

    Вложения:

    Последнее редактирование: 6 окт 2019
Статус темы:
Закрыта.