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

Тема в разделе "Arduino & Shields", создана пользователем vector99, 7 дек 2016.

  1. SOLOway

    SOLOway Гик

    Если стенки трубок не толще 2 мм, а мощности спирали достаточно (500-1000 Вт), нет смысла в дополнительных ухищрениях.
     
  2. Dmitrysh

    Dmitrysh Гик

    У вас проблема с низом была, сейчас она другая. У вас перегрев, а на выходе все равно мощность. Что-то здесь не то. У меня этот же скетч отрабатывает низ как по рельсам.
    Верх не включается, потому что плата холодная, там 65 градусов всего, а для включения верха 145 нужно. Это из-за того, что вы нижнюю термопару на нагреватель поставили, вопрос зачем?
     
    Последнее редактирование: 15 апр 2019
  3. Foxweld

    Foxweld Нуб

    Спасибо за ответ, значит не надо у меня 500 ватт нагреватель.
     
  4. Watashi

    Watashi Гик

    Какие у Вас настройки пида(низ)? и параметры настроек низа?
     
  5. Dmitrysh

    Dmitrysh Гик

    У него термопара низа стоит не на плате, а на нагревателе
     
  6. SOLOway

    SOLOway Гик

    Ещё интереснее даже - вот:
    При таком раскладе, ему может понадобиться по рекомендациям термопрошников поступать: нагреть стол до 250*С и стабилизировать его на сей температуре, затем установить плату и ждать, когда она прогреется. Только после этого запускать пайку. Соответственно это другой алгоритм :) .
    ScreenShot.jpg
     
    Последнее редактирование: 16 апр 2019
  7. Watashi

    Watashi Гик

    Это я увидел, но and-payalnik жалуется что не работает, а какие при этом настройки не понятно. Хотя Kd=1 у него на низу, а на верху 100 вроде.
     
  8. Yojiq

    Yojiq Гик

    это не верх, а плата у вас прогревается всего лишь до 66.
    Выполняйте все что написано выше и давайте результат.
     
  9. Watashi

    Watashi Гик

    Кажется я понял где ошибка зарылась в нижней рампе и, кстати, в верхней тоже сидит.
    код с нижней рампы:
    Код (C++):
          if ((currentMillis - previousMillis) > 1000 / (profile.BottomRampRateStep * 0.1)) //скорость роста температуры от 0.1с. до 3с.
           {
            previousMillis = currentMillis;
            counter = counter + 1;
            setpointRamp = counter + startTemp;
            if (setpointRamp<profile.Setpoint2) bottomTemp = setpointRamp;
             else bottomTemp = profile.Setpoint2;
            myGLCD.setFont(BigFont);
            myGLCD.setColor(250, 180, 000);
            myGLCD.printNumI(bottomTemp,100, 227,3,'0');
           }
     
    в нем setpointRamp имеет тип byte , т.е. максимальное число 255. если происходит переполнение, он становится 0 и поэтому имеем снова отсчет от нуля. Решение - надо ограничить counter , чтобы сумма counter + startTemp была не более 255 или правильнее = profile.Setpoint2.
     
    Последнее редактирование: 16 апр 2019
  10. Dmitrysh

    Dmitrysh Гик

    Нет у него этой болячки, я её исправил ещё вчера и перезалил скетч в пост 2400.
    Теперь рампа выглядит так
    Код (C++):
    //рампа для нижнего нагревателя
        case REFLOW_STATE_BOTTOM_STEP_RAMP:
          if ((currentMillis - previousMillis) > 1000 / (profile.BottomRampRateStep * 0.1)) //скорость роста температуры от 0.1с. до 3с.
           {
            previousMillis = currentMillis;
           
            if (setpointRamp<profile.Setpoint2)
            {
              counter = counter + 1;
              setpointRamp = counter + startTemp;
              bottomTemp = setpointRamp;
            }
            else bottomTemp = profile.Setpoint2;
            myGLCD.setFont(BigFont);
            myGLCD.setColor(250, 180, 000);
            myGLCD.printNumI(bottomTemp,100, 227,3,'0');
           }
           if (Input2 >= profile.Setpoint2 )
           {
            counter = 0;
            updateScreen = true;
            reflowState = REFLOW_STATE_STEP_RAMP;      
           }
           if (cancelSwitchState == HIGH && ( millis() - ms_button)>60)
           {
            ms_button =  millis();
            digitalWrite(P1_PIN, LOW);
            digitalWrite(P2_PIN, LOW);
            digitalWrite(P3_PIN, LOW);
            digitalWrite(P4_PIN, LOW);
            updateScreen = true;
           
            reflowStatus = REFLOW_STATUS_OFF;
            reflowState = REFLOW_STATE_IDLE;
           }
        break;
     
  11. Yojiq

    Yojiq Гик

    * для статистики.
    Я начинал изучение данной темы на ACHI IR-6000, размер низа 180х180, при установленной плате габарита ~ 180х180 она не нагревалась более 120 градусов при расстоянии до НИ ~ 4-5см, НИ керамика с предустановленной t 320-350 град., если у термопро 250 низ то и расстояние до него не более 10мм.
     
  12. Watashi

    Watashi Гик

    И все таки есть! Я видимо плохо рассказал суть проблемы. Она присуща только инерционному низу из керамики. Давайте по порядку.
    Начнем со строки else bottomTemp = profile.Setpoint2; До сих пор все идет нормально: setpointRamp растет и с ним растет bottomTemp. дорастаем до profile.Setpoint2 и ждем условия Input2 >= profile.Setpoint2, когда counter обнулится. Из за инерционности Input2 растет медленно, а counter продолжает расти и когда counter + startTemp превышает 255 вычисляя setpointRamp = counter + startTemp; setpointRamp становится равным 0, так как имеет тип byte. далее начинается bottomTemp = 0, выключается низ и тд короче цикл.

    как вывод - для керамики нужен другой подход.
     
  13. Dmitrysh

    Dmitrysh Гик

    Нет не так, смотрите
    Код (C++):
    if (setpointRamp<profile.Setpoint2)
            {
              counter = counter + 1;
              setpointRamp = counter + startTemp;
              bottomTemp = setpointRamp;
            }
    Считаем до тех пор, пока рампа не дойдёт до profile.Setpoint2, дальше не считаем и ничего не переполняется. Это новый код, он появился только вчера. Я всё проверил, всё работает.
     
  14. Watashi

    Watashi Гик

    Да, согласен. просмотрел.
     
  15. SOLOway

    SOLOway Гик

    Вот тут вы поддаётесь классическому заблуждению :) У них два штатных комплекта стоек: 10мм и 15мм.
    Дело в том, что такую штуку как КПД ещё не отменили! Я неспроста привожу доки и тексты термопрошников - в моей ближайшей доступности не только промышленные и самодельные станции, на которых много лет работают, но и рядом сам офис техноальянса :).
    Не будем рассуждать, сколько денег вложено техноальянсом в исследования, однако фактом сейчас является то, что их термостолы с плитами и прикрученными к ним резистивными (PTC) пластинками обладают заметно более высоким КПД и юзабилити-свойствами, нежели термостолы на керамике, будь она хоть самой кошерной из доступных самодельщикам по соотношению цена/качество :). К тому же число замеров температуры в секунду у них 16/32 в зависимости от модели блока управления и они не пользуются "антеннами" в виде термопар - только термометры сопротивления (и как это соотносится с медленностью реакции последних - это тот ещё повод пофлеймить...).
     
  16. Dmitrysh

    Dmitrysh Гик

    Странные они эти термопро. Число замеров 16/32 в секунду, а точность поддержания +/-2 градуса. И я так думаю эта точность относится к температуре стола, а не платы на которой температура как карта ляжет я думаю.
     
  17. Dmitrysh

    Dmitrysh Гик

    А вот с рт100 у меня пока не получается, хотя очень хочется. Сначала пришли бракованные мах31865, заменил, но все равно, что-то не то получается с замерами. Да, немного они "тугие" эти рт100, зато 10 замеров в секунду можно отжать. Хочу ещё попробовать какой нибудь аналоговый прецизионный усилитель для платиновых термометров и АЦП меги задействовать, тогда можно попробовать и 100 раз в секунду мерять.
     
  18. Dmitrysh

    Dmitrysh Гик

    По поводу равномерности нагрева стола термопро это отдельный вопрос. Они утверждают, что +/- 4 градуса. Я думаю во время разогрева побольше будет. Хотелось бы поэкспериментировать со стеклом над галогенками, но пока не получается его добыть, у нас электроплиты не в почете. Я думаю на стекле равномерность будет выше, чем на алюминии, да и при наличии стекла можно было-бы избавиться от термопары низа на плате, оставив только термопару ВИ. Логика работы при этом бы изменилась, но "юзабилити-свойства" мне думается стали бы приятнее, да и с керамическим низом такая система тоже бы работала неплохо.
     
  19. RSR3000

    RSR3000 Нерд

    Доброе время суток, ребята Спасибо Огромное за ваши труды, я восторге )
    Когда пришла мысль в голову, сделать пид на ардуино, думал это не возможно все-же гугля привела сюда.
    Прочитав 122 страницы есно в голове каша, не имел дела ни C++ ни с ардуино.
    Решил переделать свой aoyue int 863, по наличию НИ кварцевые трубки ВИ китайская керамика 80*80 мм 450 Вт, контролер Мега 2560 320х480 И ssr , осталось собрать все воедино.
     
    Последнее редактирование: 17 апр 2019
  20. RSR3000

    RSR3000 Нерд

    Не могу разобраться с библиотеками Нуб, залил скеч ув.Dmitrysh #2367 изо зеркальное, взял Исправленная UTFT #2214 все поправилось ) Прошу прощения, не знаю какие библиотеки надо добавлять,для правильной работы, пните пожалуйста в правильном направлении.