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

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

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

    Profdamg Нерд

    У меня ir6000 нагреватель 450 вт хоть приблизительно модет кто напишет ?
    Или какой параметр за что отвечает ?
     
  2. hacjka

    hacjka Гик

    пробовать начиная от 1-0-0
    и смотреть как ведет себя,каждый раз добавляя...как тольок более менее будет,то добавлять второй параметр.
    у меня верх и низ кварцевые панели и параметры другие будут.
     
    Последнее редактирование: 22 июн 2020
  3. SOLOway

    SOLOway Гуру

    По-моему у @Watashi и у @Dmitrysh такой ВИ, у них спросите и про высоту от чипа до ВИ тоже - это важно.
    по второму вопросу наглядно в посте #3926
    Уважаемые участники, подскажите, пожалуйста, по этому коду из поста #3662 :
    Код (C++):
    if (cancelSwitchState == HIGH && !button_long_state)
          {
            ms_button = millis();
            button_long_state = true;
          }
                //---СЕКЦИЯ ИНИЦИАЛИЗАЦИИ ТЕСТОВОГО ПРОФИЛЯ
          //держим "cancel" 5+ секунды и заходим в инициализацию профиля
          if (cancelSwitchState == HIGH && button_long_state && ( millis() - ms_button) > 5000)
          {
            button_long_state = false;
            reflowState = REFLOW_STATE_PROFILE_INIT;
            updateScreen = true;
          }
    В IDLE длительное 5+ секунд удержание CANCEL должно инициировать запись предустановленного профиля. Этого не происходит, или происходит в случайном порядке, например после короткого нажатия CANCEL, паузы в пару-тройку секунд и новом коротком нажатии CANCEL.
    У @SNMar4enko в 2.1.2 есть похожий код для стирания EEPROM.
    Код (C++):
    //фиксируем момент нажатия кнопки "Cancel" + защита от дребезга
          if (cancelSwitchState == HIGH && !button_state1 && ( millis() - ms_button) > 200)
          {
            ms_button =  millis();
            button_state1 = true;
            button_long_state1 = false;
            D15_Low; //внутренний вентилятор выключить
            D16_Low; //внешний вентилятор выключить
          }

          //держим "Cancel" 10 секунд и стираем память
          if (cancelSwitchState == HIGH && !button_long_state1 && ( millis() - ms_button) > 10000)
          {
            button_long_state1 = true;
            ms_button =  millis();
            button_state1 = false;
            reflowState = REFLOW_STATE_MENU_RESET;
            updateScreen = true;
          }
          if (cancelSwitchState == LOW && button_long_state1) button_long_state1 = false;
    Отличие ещё в том, что он ввел для этого две дополнительные переменные для кнопок:
    Код (C++):
    boolean  button_state1 = false;
    boolean  button_long_state1 = false;
    У меня с резистивной клавиатурой и этот вариант, адаптированный под 1.3.4 не работает.
    UPD. 20/07/2020: Исправлено, пост #4683
     
    Последнее редактирование: 20 июл 2020
  4. LessNICCKoff

    LessNICCKoff Гик

    Версия под экран 1602 не имеет ручного управления
    Версия под экран 2004 имеет ручное управление?
     
  5. hacjka

    hacjka Гик

    Выкладываю свои настройки для кварцевых панелей
    (верх и низ) для скетча sketch_TFT-320x480_dimer_PC_revolver_Dmitrysh_v4_EX
    нагреватели кварцевые панели
    низ 4шт 240*62мм 650ват каждый- паралельно соеденил
    верх кварцевая панель 120*62(такой пока есть) 450ватт
    расстояние до платы около 3см
    низ P-10 I-30 D-180
    верх P-11 i-29 d 161
    настройки не идеальны,так как есть перелет в 10градусов
    но Низ после перелета возвращается к нужной температуре и держит ее более менее стабильно.верх аналогично,при подход к температуре немного перелетает,но потом все стает на свое место.
    но станция еще на стадии настройки и в процессе переделки держателей....и так далее..
    потихоньку уже паяю на станции.
     
    Последнее редактирование: 23 июн 2020
    Sema и SOLOway нравится это.
  6. SOLOway

    SOLOway Гуру

    Я так понимаю, это скетч из поста #3662
    У вас работает инициализация предустановленного профиля по долгому (более 5 сек.) нажатию CANCEL в режиме простоя?
    Поясните, пожалуйста, что вы зовёте ручным управлением?

     
    Последнее редактирование: 23 июн 2020
  7. LessNICCKoff

    LessNICCKoff Гик

    Отдельно включить верх или низ
     
  8. SOLOway

    SOLOway Гуру

    Для использования НИ в качестве отдельного нижнего подогрева - просто не устанавливайте датчик ВИ, пусть висит сбоку от станции. ВИ включится только тогда, когда станет истинным условие в этой строчке:
    Код (C++):
    if (tc1 >= SP2-10 && !TopStart) {TopStart = true; bottomTemp = profile.Setpoint2;}  //если температура низа вышла на уставку включаем верхний нагреватель
          if (TopStart == true){   // включен верхний нагреватель  
    Т.е. когда датчик ВИ почует, что нагрелся до "уставки НИ минус 10°С". Это во всех ветках так, меняется только разница "минус 10" может быть и "минус 20" и "минус 2", кроме
     
    Последнее редактирование: 17 июл 2020
    hacjka нравится это.
  9. hacjka

    hacjka Гик

  10. Dmitrysh

    Dmitrysh Гуру

    а по-подробнее
     
  11. SOLOway

    SOLOway Гуру

    Версия скетча из поста #3009 . А есть более свежая она же в посте #3662
    irsp поправленная в посте #3607
     
    hacjka нравится это.
  12. Dmitrysh

    Dmitrysh Гуру

    Правильно брать модернизированный код от 2.1.2
    Код (C++):
     //фиксируем момент нажатия кнопки "Cancel" + защита от дребезга
          if (cancelSwitchState == HIGH && !button_state1 && ( millis() - ms_button) > 200)
          {
            ms_button =  millis();
            button_state1 = true;
            button_long_state1 = false;
            D15_Low; //внутренний вентилятор выключить
            D16_Low; //внешний вентилятор выключить
          }

          //держим "Cancel" 8 секунд и стираем память
          if (cancelSwitchState == HIGH && button_state1 && !button_long_state1 && ( millis() - ms_button) > 8000)
          {
            button_long_state1 = true;
            ms_button =  millis();
            button_state1 = false;
            reflowState = REFLOW_STATE_MENU_RESET;
            updateScreen = true;
          }
          if (cancelSwitchState == LOW && (button_long_state1 || button_state1)) {button_long_state1 = false; button_state1 = false;}
    ещё нужно добавить в секцию
    Код (C++):
    case REFLOW_STATE_COMPLETE:
    заменить
    Код (C++):
    reflowState = REFLOW_STATE_IDLE;
    на
    Код (C++):
    if (cancelSwitchState == LOW) reflowState = REFLOW_STATE_IDLE;
     
  13. hacjka

    hacjka Гик

    Ув. Гуру, @Dmitrysh,как можно сделать в вашем скетче много профилей?
    я реально в программировании ноль,возможно вы сможете помочь?
    нужно минимум 10 профилей,если позволяет мега, то и более.
    для чего? да очень много всякого-вплоть до сушки платы и так далее.
    спасибо.
    ну и если такое возможно,конечно,то оперативно на ходу с клавиатуры сменить температуру низа.тоесть выбрал профиль,дошло до 160градусов...не хватает например..нужно еще +10..нажал на кнопочку вверх и довел до нужной.
     
    Последнее редактирование: 24 июн 2020
    LessNICCKoff и Wigga нравится это.
  14. hacjka

    hacjka Гик

    видел на ютубе самодельный термостол алюминиевый как в Термопро ИК650,проект называется ТермоБРо,и нашел нагреватели,похожие на те,что использовал автор


    не реклама,канал не мой,с автором не знаком.
    немного цена негуманная https://aliexpress.ru/item/40000678...44.1359566715.1592907114-821080069.1580458127
    а таких нужно 26 штук
    может кто знает какой более дешевый вариант нагревателей для алюминиевого термостола?
     
    Последнее редактирование: 25 июн 2020
  15. Wzor

    Wzor Нерд

    Выше уже писали про это! Зачем повторять?
     
  16. Watashi

    Watashi Гуру

  17. hacjka

    hacjka Гик

    неизвестно как там с равномерностью нагрева
     
  18. SOLOway

    SOLOway Гуру

    Пробовал. Не то, что надо :(. Суть в том, что именно для этих трудно обеспечить равномерный прижим по всей поверхности, из-за чего пятна локального перегрева проявляются. Если зажимать между двух плит - получается очень низкий КПД и гигантская инерция. Основная идея - использовать много нагревательных пластинок, равномерно распределив с малыми зазорами их по всей площади алюминиевой плиты.
     
    Последнее редактирование: 25 июн 2020
    hacjka нравится это.
  19. Dmitrysh

    Dmitrysh Гуру

    Вот немного сырой вариант с 15 профилями и возможностью регулировки температуры НИ после рампы.
    Имена профилей находятся в массиве
    Код (C++):
    String profile_names[15] = {
                                  "СНЯТИЕ БЕССВИНЕЦ ",
                                  " СНЯТИЕ СВИНЕЦ   ",
                                  "УС-ВКА БЕССВИНЕЦ ",
                                  " УС-ВКА СВИНЕЦ   ",
                                  " НИЖНИЙ ПОДОГРЕВ ",
                                  "ПРОФИЛЬ          ",
                                  "ПРОФИЛЬ          ",
                                  "ПРОФИЛЬ          ",
                                  "ПРОФИЛЬ          ",
                                  "ПРОФИЛЬ          ",
                                  "ПРОФИЛЬ          ",
                                  "ПРОФИЛЬ          ",
                                  "ПРОФИЛЬ          ",
                                  "ПРОФИЛЬ          ",
                                  "ПРОФИЛЬ          "
                               };
    Если кому нужно, можете поменять на свои, только длина имени не должна отличатся от той что есть.
     

    Вложения:

    Wigga, LessNICCKoff и hacjka нравится это.
  20. hacjka

    hacjka Гик

    просто отлично!уже есть поле для експериментов.
    попробую щас на стенде.
    что то не могу понять как поднять температуру?
     
Статус темы:
Закрыта.