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

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

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

    SOLOway Гуру

    Снова мои вопросы...
    @Dmitrysh:
    "16. значение скорости роста выводим вот так lcd.print(rampRateStep[editStep]); Это будут десятые части градуса в сек.
    Например 15 = 1,5*С/сек, 25 = 2,5*С/сек и т.д"
    Значит вот так пояснение:
    Код (C++):
            if (rampRateStep[editStep] >= 30)  //(только целые числа) максимальная скорость роста температуры умноженная на 10
            {
              rampRateStep[editStep] = 30;  //(только целые числа) максимальная скорость роста температуры умноженная на 10
            }
    Тут понятно, а непонятно вот где:
    Код (C++):
     if (rampRateStep[editStep] <= 1)  //(только целые числа) минимальная скорость роста температуры умноженная на 10
            {
              rampRateStep[editStep] = 1;  //(только целые числа) минимальная скорость роста температуры умноженная на 10
            }
    Мы ведь не можем точно удерживать рост температуры со скоростью 0,1С/сек... Или уже можем?
    По количеству шагов внутри профиля - ну, ОК, пусть будут все 9, т.к. карман не тянут и каши не просят, просто работа верха - это 3-4 минуты, как их на 9 шагов раскидать при наших ограничениях вычислительной мощности... И еще обнаружился глюк: Если выставлять от 1 до 30, выставляется, но если от 30 до 1, то после 10 будет 90-80-70-60-50-40-30-20-10. А дальше, если снова нажимать Up будет 20-30-40-50-60-70-80-90-10-11-12-13-14- и так до 30. Можно ли это как-то побороть?
    @Dmitrysh:
    "14. Увеличил ограничение dwellTimerStep до 180сек, на всякий случай"
    Я теперь могу верх в один шаг уложить :) . Раньше только двумя приходилось задавать. И тут напасть: от 0 до 180 ставится нормально, а наоборот - вместо остановки на 0 вылезают 251-246-241- до 1, затем 252-247-242- до 2. Но если нажать Up, то сразу станет 180.
    Есть гадость и с установкой мощностей для НИ и ВИ: от 0 до 100 ставится нормально, но если проскочить 0, то станет 255-254-253- до 0, затем опять 255-254-253-. А если нажать Up, станет 100 при условии, что значение более 100.
    Отмечу, что описанные глюки не связаны с правками @Dmitrysh. Эти глюки были и ранее, ждал, может кто ещё о них расскажет...

    Причесанный по примеру из поста #2153 @Dmitrysh скетч в архиве прилагаю.Файл ПРАВКИ обновлен.
     

    Вложения:

    Последнее редактирование: 6 окт 2019
  2. SergeyVasylyev

    SergeyVasylyev Нерд

    А чего сразу хайпит?
    У меня свой канал, я тихо-не спеша строю паялку как могу=) мне ее строить еще пол года минимум) А вы говорите "Хайпит" =)
     
  3. Dmitrysh

    Dmitrysh Гуру

    Нет не можем. Но здесь , как бы это сказать, это "синтетическая" скорость роста, всё будет работать. Попробую объяснить подробнее. В нашем скетче температура и её рост для верхнего и нижнего нагревателя регулируется по разным алгоритмам. В моём скетче, допустим, не так как у вас регулируется рост температуры НИ. Я непосредственно задаю скорость роста температуры низа числом, и мой ПИД регулирует именно скорость роста, а потом переходит к удержанию. У вас же скорость роста НИ регулируется ограничением мощности НИ и последующем удержании заданной температуры. Это для низа. Но нас интересует верх.
    А вот для верха, там совсем другой алгоритм. У вас и у меня он одинаковый, а именно используется так называемая РАМПА. Как она работает? Всё достаточно просто. Допустим нам нужно разогреть объект от 100 до 200 градусов со скоростью 0,1градус/сек. Если мы зададим ПИДу сразу конечную температуру 200 градусов, он начнёт "молотить" по полной и не о каких 0,1гр/сек не может быть и речи. Для получения заданной скорости роста мы создаём её "синтетически". Мы подаём ПИДу не конечную температуру, а увеличиваем имеющуюся на 1 градус, через заданное количество времени. Т.е если сейчас температура 100 градусов, то через 10сек мы даём ПИДу задание 101градус, ещё через 10сек 102 и т.д до 200. В итоге на малых ошибках температуры ПИД по-полной не "молотит", а потихоньку дозирует мощность, тем самым обеспечивает нам рост температуры в 0,1град/сек на промежутке от 100 до 200 градусов. По сути получаются ступеньки(полки) по 1 градусу длительностью 10сек(конечно при скорости роста 0,1, при других скоростях длительность другая). Достаточно простой алгоритм.
    Теперь по косякам.
    Дак там как-бы к мощности и не привязаны шаги. Просто я, допустим, больше 3-х и не использую, хватает. Ну, может, кто-то использует скетч для контроля какой-нибудь хитрой сушилки, где надо много шагов с разной температурой.
    Борем вот так
    Код (C++):
    lcd.setCursor(14, 2);
          lcd.print(rampRateStep[editStep]);
          lcd.print(" ");
    Здесь переписываем так
    Код (C++):
    if (downSwitchState == HIGH && ( millis() - ms_button) > 200)
          {
            ms_button =  millis();
           
            if (dwellTimerStep[editStep] >= 5) dwellTimerStep[editStep] = dwellTimerStep[editStep] - 5;
            else dwellTimerStep[editStep] = 0;
           
          }
    Правим так для низа
    Код (C++):
     if (downSwitchState == HIGH && ( millis() - ms_button) > 200)
          {
            ms_button =  millis();
           
            if (pwr_BOTTOM >= 1) pwr_BOTTOM = pwr_BOTTOM - 1;
            else  pwr_BOTTOM = 0;
           
          }
    и вот так для верха
    Код (C++):
    if (downSwitchState == HIGH && ( millis() - ms_button) > 200)
          {
            ms_button =  millis();
           
            if (pwr_TOP >= 1) pwr_TOP = pwr_TOP - 1;
            else pwr_TOP = 0;
          }
    А вот это
    Код (C++):
     if (pwr_TOP <= 99)
          {
            lcd.setCursor(16, 2);
            lcd.print("  ");
          }
          if (pwr_TOP <= 9)
          {
            lcd.setCursor(15, 2);
            lcd.print("  ");
          }
    мне не понятно зачем? И такая же борода с НИ.
    Там просто можно в строке
    Код (C++):
    lcd.print("%");
    добавить 2 пробела, чтобы стало так
    Код (C++):
    lcd.print("%  ");
    Вот подправленный скетч, изменения я изложил в посте.
     

    Вложения:

    geleos27, Probe2005klm и SOLOway нравится это.
  4. Dmitrysh

    Dmitrysh Гуру

    Так вам написали в чём дело. Я цитирую часть комментария под вашим роликом.
    Автор Омут Тишайший.
     
    SOLOway нравится это.
  5. SOLOway

    SOLOway Гуру

    @Dmitrysh ЗАКОЛОСИЛОСЬ!!! :)
    Смонстрячил файл как меню выглядит.
    А в пункте уставки НИ:
    Код (C++):
        //устанавливаем температуру "Нижнего Нагревателя"
        case REFLOW_STATE_MENU_BOTTOM_HEAT:

          if (updateScreen) {
            lcd.setCursor(2, 2);
            lcd.print("Bottom Heat:      ");
            //updateScreen = true;
          }
          lcd.setCursor(14, 2);
          lcd.print(SP2);

          if (upSwitchState == HIGH && ( millis() - ms_button) > 200)
          {
            ms_button =  millis();
            Setpoint2 = Setpoint2 + 10;
            if (Setpoint2 >= 330)
            {
              Setpoint2 = 330;
            }
          }
          if (downSwitchState == HIGH && ( millis() - ms_button) > 200)
          {
            ms_button =  millis();
            Setpoint2 = Setpoint2 - 10;
            if (Setpoint2 <= 80)
            {
              Setpoint2 = 80;
            }
          }
          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;
            reflowState = REFLOW_STATE_MENU_BOTTOM_PWR;
          }
          if (cancelSwitchState == HIGH && ( millis() - ms_button) > 50)
          {
            ms_button =  millis();
            updateScreen = true;
            reflowState = REFLOW_STATE_IDLE;
          }
          break;
    есть закомментированная строка:
    Код (C++):
            lcd.print("Bottom Heat:      ");
            //updateScreen = true;
    Она должна быть
    Код (C++):
    updateScreen = false;
    или не нужна вовсе?

    В пункте установки температур ВИ на шагах есть что-то похожее:
    Код (C++):
        //устанавливаем температуру "Верхнего Нагревателя"
        case REFLOW_STATE_MENU_STEP_TARGET:
          if (updateScreen) {
            lcd.setCursor(2, 2);
            lcd.print("Step ");
            lcd.print(editStep + 1);
    //---------------------------------------------//
          //  lcd.print(" Target:  ");
    //---------------------------------------------//      
            lcd.print(" Target:   ");  // добавить один пробел перед правой кавычкой?

            lcd.print(temperatureStep[editStep]);
            lcd.print("  ");
            updateScreen = false;
          }
          lcd.print("  ");
          lcd.setCursor(16, 2);
          lcd.print(temperatureStep[editStep]);
          lcd.print("  ");
          if (upSwitchState == HIGH && ( millis() - ms_button) > 200)
          {
            ms_button =  millis();
            temperatureStep[editStep] = temperatureStep[editStep] + 1;
            if (temperatureStep[editStep] >= 255)
            {
              temperatureStep[editStep] = 255;
            }
          }
          if (downSwitchState == HIGH && ( millis() - ms_button) > 200)
          {
            ms_button =  millis();
            temperatureStep[editStep] = temperatureStep[editStep] - 1;
            if (temperatureStep[editStep] <= 0)
            {
              temperatureStep[editStep] = 0;
            }
    //-------------------------------------------------------//
    /*
          if (temperatureStep[editStep] <= 99)
            {
              lcd.setCursor(18, 2);
              lcd.print("  ");
            }
            if (temperatureStep[editStep] <= 9)
            {
              lcd.setCursor(17, 2);
              lcd.print("  ");
            }
    */

    // надо ли так закомментировать?
    //-----------------------------------------------------//
          }

          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_DWELL;
            }
            else {
              editStep++;
            }
          }
          if (cancelSwitchState == HIGH && ( millis() - ms_button) > 50)
          {
            ms_button =  millis();
            updateScreen = true;
            editStep = 0;
            reflowState = REFLOW_STATE_IDLE;
          }
          break;
    P.S.: перезалил архив - убрал путаницу с номерами nextRead2 и nextRead1 - моя невнимательность...
     

    Вложения:

    Последнее редактирование: 6 окт 2019
    Probe2005klm нравится это.
  6. Dmitrysh

    Dmitrysh Гуру

    да она должна быть
    Код (C++):
    updateScreen = false;
    хотя это не существенно.
    Закомментированное нужно удалить, я его оставил для того чтобы показать где оно было.
     
  7. SOLOway

    SOLOway Гуру

    @Dmitrysh, спасибо!
    Только ранее вы исправили бяку в пунктах установки мощности НИ и мощности ВИ. А здесь я про другой пункт меню написал - про установку температуры ВИ по шагам. Тут немного отличается код от пунктов с мощностью...
     
    Последнее редактирование: 6 окт 2019
  8. Dmitrysh

    Dmitrysh Гуру

    Удалить, так как я сделал для мощности ВИ. Всё будет нормально работать.
    А вот там где вот этот код
    раскомментировать, и заменить true на false. И обязательно добавить строку
    Код (C++):
    lcd.print(" "); //один пробел в ковычках
    после строки
    Код (C++):
    lcd.print(SP2);
     
    SOLOway нравится это.
  9. SOLOway

    SOLOway Гуру

    @Dmitrysh сделал по вашим замечаниям.
    Дополнил архив и откорректировал файл ПРАВКИ.
     

    Вложения:

    Последнее редактирование: 6 окт 2019
    binaver и Dmitrysh нравится это.
  10. SergeyVasylyev

    SergeyVasylyev Нерд

    Я пока что не вижу, повода оставлять ссылку.
    Ничего не взято, ничего не сделано. Абсолютно ничего не работает.
    Все что я делаю, все пока что мое.
    Вот когда я ее сделаю, когда будет работать, когда я покажу как все работает. Тогда я оставлю ссылку на форум, что мол "вот здесь взял прошивку, и здесь много инфы и тд." А так, на что мне оставить ссылку?
    На мой корпус? Так его здесь нету.
     
  11. SOLOway

    SOLOway Гуру

    @SergeyVasylyev Дело ваше.
    И просто процитирую вас с 4:17 вашего видео:
    "...а я вам за лайк, забегая наперёд и покажу уже сам модуль ардуинки. Даже с прошивкой. Уже установил и решил заснять этот процесс, показать вам. Но только за лайк..."
    В это время видеоряд демонстрирует дисплей, отображающий информацию подобно тому, как это на фотографиях у @alfataks из поста #69 - автора нового направления в развитии дорабатываемого в этой теме контроллера. И @alfataks почему-то не посчитал ненужным оставить ссылку на эту тему под своим видео из поста #81 . Все видели дату поста #81 ? А ведь впервые @alfataks продемонстрировал эту версию аж в посте #27 ! И там - вуаля! - он тоже под видео оставил ссылку на эту тему.
    И вы могли-бы продолжить приведенный мною участок вашего монолога, например так: "Этот проект по управлению ИК паяльной станцией при помощи контроллера, основанного на Arduino Mega2560 с выводом информации на цветной tft дисплей 3,2" с разрешением 480*320 точек, а также с возможностью вывода графиков и иной полезной информации в программу на ПК, я нашел в интернете. Ссылка на тему форума, в которой ведется активное обсуждение и доработка данного контроллера будет под видео. Приглашаю всех желающих помочь в развитии темы - давайте вместе доведём эту разработку до уровня Народного Контроллера!" Возможно, лайков вам и прибавилось бы :)
     
    Последнее редактирование: 6 окт 2019
    YurchikV и Dmitrysh нравится это.
  12. SergeyVasylyev

    SergeyVasylyev Нерд

    Я с Вами согласен полостью. Но как я могу не показав ровным счетом нихрена, просить подписчиков перейти куда то, а главное за чем? Я в последнем ролике смонтировал корпус и установил керамику. Я не думаю что стоит торопить событие и звать всех посмотреть на форум состоящий с 110 страниц.
    Когда соберу и хоть как то запущу все это добро, я покажу людям что и как, куда переходить и что читать.
    Мне самому не интересно будет отвечать на тоны вопросов и тд.
    Та так мол вот здесь взял, смотрите, там данная паялка устроена на разных контроллерах и тд. Вот пожалуйста, смотрите.
    А что мне сейчас давать ссылку? На что? Куда? А главное зачем? Я не думаю что в данный момент это будет корректно.
     
  13. SOLOway

    SOLOway Гуру

    @SergeyVasylyev
    Вынужден закончить обсуждение с вами.
    Ваш корпус и нагреватели не имеют ценности в сравнении с системой, которая ими будет управлять..
    Железки купили в магазине, нагреватели и крепеж, а также инструмент - там же.
    А для того, чтобы управлять вашими, в частности, железками, требуется отлаженный цифровой алгоритм, отлаживаемый, в частности, в этой теме. И заметьте - не купленный в магазине, не продаваемый за бабло. Люди используют своё личное время на его разработку, тестирование. А вы собираетесь просто взять здесь последнюю, допиленную ими прошивку и выдать её за ваше устройство. Вам сложно выполнить простое действие, мною предложенное, многим здесь просто не будет никакого стимула помогать вам. Люди, придерживающиеся схожих с вами взглядов заставят действительных разработчиков перейти на общение вне этой открытой темы, а вам достанутся сырые, глючные, а то и с подвохом прошивки. Проект умрёт, так и не став Народным. Подумайте, стОит ли так поступать.
     
    Последнее редактирование: 6 окт 2019
    Watashi нравится это.
  14. SergeyVasylyev

    SergeyVasylyev Нерд

    Да как я поступаю то? Что я сделал не так? Нету никакого устройства, нету! Все что показано в видео это 4 секунды на которой мелькает как вы уже сказали "глючная прошивка" или с подвохом. Я не знаю с чем она. Так как она не работает!
    А если бы мой канал был не 5 тыс подписчиков а 1-2 ляма. Тогда что бы вы мне задвинули?
    Там 1500 просмотров.
    А знаете что нужно сделать что бы их набрать?
    1. Забашлять в несколько групп в вк что бы они его опубликовали.
    2. Снять нормальный ролик что бы его хоть кто то смотрел.
    3. Как вы сказали уже, "потратить свое время и ресурс для того что бы этот ролик сделать а не говоря уже о том что в самом ролике. Я же не прошивку пилил а корпус. Он стоит времени, денег и сил, так как я не заказал его готовым а сделал сам!
    4. Разместить этот ролик на сторонних сайтах типа (Пикабу, Фишки, МАСТЕРГРАД, ЯПлакаль) а разместить там что либо не так то просто. Так что я в отличии от многих на этом форуме уже сделал больше для (популяризации) Данного устройства.
    Разве я мало сделал для того что бы люди увидели Как вы уже говорите Вашу Интеллектуальную собственность.
    Я не могу понять, за что нападки в мою сторону? За картинку в 4 секунды, Вы серьезно? Даже ютюб разрешает размещать любой контент в своих роликах только что бы тот не не был больше 10 секунд. А тут сколько? За что?
    Я могу поступать с данным роликом так как считаю нужным.

    Признаюсь. Я даже предположить не мог что будут подобные разговоры о том что я делаю и тем более с Вами.

    Данную станцию пилят многие, многие снимают и выставляют за собственную разработку. Вы наткнулись на мое, где я не говорил что это моя разработка.
    Погуглите хорошенько. Мало того эту прошивку продают. на Украинском сервисе ОЛХ. Год назад я видел объявление где за нее просили 2500 грн. Ссылку на форум не указывали.

    .... Крайне неприятный разговор.
    Я думаю что мне не стоит что либо спрашивать по данной теме и вообще писать что либо здесь, так как Вы на этом формуме не последний человек, и после нашей дискуссии мне вряд ли кто-то поможет в чем либо.
     
    binaver нравится это.
  15. Dmitrysh

    Dmitrysh Гуру

    Ну так будет же.
    Ничего бы вам не задвинули, а смысл?
    А знаете, что нужно сделать, чтобы прошивку написать?
    Это коллективная интеллектуальная разработка, а не собственность.
    По сути на вас никто не нападает.
    А вот так некрасиво делать.
    Здесь вы поступили очень правильно.
    Вот, чтобы так не было, надо всем показывать откуда "ноги растут".
    Не буду говорить за всех, а я вам помогу, если будет такая необходимость. Здесь не звери, а нормальные люди.
    Делайте вашу станцию и про нас не забывайте. Алгоритмы должны идти в массы, код нужно развивать. Чем больше людей узнает об этом форуме, тем больше умных идей появится, будет быстрее развиваться прошивка, будут использоваться более передовые, прогрессивные алгоритмы и все будут в плюсе.
     
    binaver и SOLOway нравится это.
  16. Нафаня

    Нафаня Нерд

    Помогите разобратся,После отщёта верха до 150 градусов,низ тухнет и больше невключается
     

    Вложения:

  17. SergeyVasylyev

    SergeyVasylyev Нерд

    Когда я сниму видео, если такое будет. И в этом видео уже будет на что смотреть и что обсуждать. Когда реально там будет показана работа самой паялки, на данной прошивке. Я неотложно укажу откуда растут ноги. Дам ссылку на этот форум. А именно на данную тему.
     
    SOLOway нравится это.
  18. Dmitrysh

    Dmitrysh Гуру

    Спасибо за понимание, и удачи вам в постройке станции и развитии канала.
     
    SOLOway нравится это.
  19. SOLOway

    SOLOway Гуру

    Можно посмотреть

     
    Yojiq и Dmitrysh нравится это.
  20. SOLOway

    SOLOway Гуру

    Юрий Сенькин, автор известного опуса "О важных моментах при изготовлении и о методике настройки самодельной инфракрасной паяльной станции.". Оставлю здесь выдержку из этого опуса, касающуюся работы верхнего нагревателя станции:
    Не знаю, будет ли чем-то полезен сей текст, однако - пусть будет :) .
    Ещё, раз уж попалось снова на глаза, прикрепляю видео, где наглядно показано воздействие нагревателя на чип на примере паяльной пасты. Тут приходят на ум два возможных варианта решения: а) накрывать кристалл чипа зеркальной пластинкой, б) применять нагреватель конструктивно подобный верхнему излучателю Ersa IR-550A (есть тут в теме).

    Интересный пост:
    goo.gl/DavX4r
    Ещё про достаточный размер верхнего нагревателя: Известно, что чем хуже равномерность ВИ, тем выше его приходится поднимать над чипом. Но при этом добиться хорошей равномерности получается при значительном уменьшении полезного поля нагрева. Как вариант - использовать ВИ достаточно большой площади, накрывая фольгой на плате то, что не должно быть подвержено действию ВИ.
    eto u 4uvak.jpg pro gradient VI.jpg
     
    Последнее редактирование: 9 мар 2019
    atagunov и Yojiq нравится это.
Статус темы:
Закрыта.