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

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

  1. Yojiq

    Yojiq Гик

    У меня тютелька в тютельку корпус 25мм., lcd стоит в уровень с передней панелью, сзади место под провода 3-4мм. внутри остается точно.
     
  2. Watashi

    Watashi Гик

    Всем привет. Сегодня доделал верх и снял первый чип. Пятаки не оторвал)) все прошло как то очень быстро. так хотелось побыстрее испытать, что забыл прогу на компе запустить. )))
     
  3. Yojiq

    Yojiq Гик

    Примите мои поздравления, теперь опыт + опыт, терпенье и труд !
     
  4. StDV

    StDV Нерд

    Благодарю.
     
  5. Watashi

    Watashi Гик

    Спасибо. Буду изучать это дело )
     
  6. Foxweld

    Foxweld Нуб

    Хотел спросить у Dmitrysh можете в вашей программе irsp кнопку старт пайки сделать, что бы станцию с компьютера запускать если получается можно и кнопку стоп пайки сделать?
     
  7. Dmitrysh

    Dmitrysh Гик

    Можно сделать, но нужно и в скетче обработчик кнопки дописать.
    И это можно, но работать медленно будет, да и обработка команд с ком порта в критической секции не очень хорошая идея.
     
  8. Dmitrysh

    Dmitrysh Гик

    Вот релиз скетча с рампой для нижнего нагревателя и параметрами в виде структуры как предлагал
    Watashi. В архиве также релиз программы которая работает с этим скетчем.
    Не забывайте снять ограничение мощности с нижнего нагревателя, и сохранить параметры профилей, потому как параметров стало больше и старые настройки перепишутся новыми.
     

    Вложения:

    Ptisa, Foxweld, Watashi и ещё 1-му нравится это.
  9. Foxweld

    Foxweld Нуб

    Спасибо за ответ, хотел еще спросить ни кто не сталкивался с таким не хватает градуса до начала следующего шага но пид график ведет идеально если настроить пид что бы перескакивало то уже не держит температуру а гоняет то больше то меньше.
     

    Вложения:

    • график.JPG
      график.JPG
      Размер файла:
      120,8 КБ
      Просмотров:
      217
    Последнее редактирование: 8 апр 2019
  10. Watashi

    Watashi Гик

    Dmitrysh, Вы подошли к вопросу с нижней рампой очень основательно и правильно! Образ мыслей по построению почти совпадает )) мой вариант такой:
    Код (C++):
          if (TopStart == false)  {
            //Serial.print("- ");    
            if ((currentMillis - previousMillis) > 1000 / (rampRateDown * 0.1))  {  //скорость роста температуры от 0.1с. до 3с.  
              previousMillis = currentMillis;
              counter = counter + 1;
              setpointRamp2 = counter + startTemp;
              if (setpointRamp2 >= Setpoint2) setpointRamp2 = Setpoint2;
              myGLCD.setFont(BigFont);
              myGLCD.setColor(250, 180, 000);
              myGLCD.printNumI(setpointRamp2,65, 300,3,'0');
              // myGLCD.printNumI(setpointRamp,100, 115,3,'0');
              //Serial.println(setpointRamp2);
              //Setpoint2 = setpointRamp;
              }      
            }
          if (tc1 >= SP2-2 && !TopStart) {  //если температура низа вышла на уставку включаем верхний нагреватель
            TopStart = true;
         
            myGLCD.setFont(BigFontRus);
            myGLCD.setColor(VGA_GREEN);
            myGLCD.textRus(F("ШАГ "),5, 300);
            myGLCD.textRus(F("П- "),90, 300);
            counter = 0;  
            }
     
    Это сегодняшние пробы )) Я код воткнул сразу в верхнюю рампу.
     

    Вложения:

    • 1_08_04.jpg
      1_08_04.jpg
      Размер файла:
      192,1 КБ
      Просмотров:
      155
  11. Dmitrysh

    Dmitrysh Гик

    Что-то с настройкой ПИД, не хватает интегральной составляющей или большое ограничение мощности сверху, потому как не выходит на заданную температуру. Вариантов много, пробуйте понемногу подстраивать.
     
  12. Foxweld

    Foxweld Нуб

    А нельзя в настройках перехода верха на следующий шаг, сделать условие равно уставке или минус пару градусов что бы начинало переходить на следующий шаг если пид не дотягивает пару градусов? может это все реализовано в скейче я не нашёл.
     
    Последнее редактирование: 10 апр 2019
  13. SOLOway

    SOLOway Гик

    Как когда-то LDZ выразился - "есть или ручной режим, или автомат". В последнем нужно точно настроить параметры и код отлично всё отработает.
    Покопался я в старой версии для UNO & TFT SPI 2.4" от @Yurik-o.
    Тут теперь есть и 14 профилей, и графики на ПК, и управление вентиляторами, и самые важные правки от @Dmitrysh, и даже мелодичка приветственная на выбор.
    Осталось разобраться со странной переменной OLD_TEMP только, но и сейчас она особо не мешается.
    Использованные библиотеки в архиве, и почитать-посмотреть тексты-картинки рекомендую, чтоб меньше вопросов осталось. Может, кто дополнит чем, поправит что-нибудь :) .
     

    Вложения:

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

    Dmitrysh Гик

    Вы наверное имели ввиду переменные вот эти
    Код (C++):
    int tc1_old;
    int tc2_old;
    Эти переменные планировалось использовать для вывода температуры, если она изменилась, но код не дописан.
    Варианты решения: убрать переменные либо дописать код.
    Если убираем переменные то часть кода
    Код (C++):
    if ( tc1 != tc1_old )
            {
              tft.setCursor(16 * 16 + 5, 2 * 48 + 48); //lcd.setCursor(16, 2);
              tft.print("   ");
              tft.setCursor(16 * 16 + 5, 2 * 48 + 48);
              tft.print(tc1);
            }
            if ( tc2 != tc2_old )
            {
              tft.setCursor(16 * 16 + 5, 3 * 48 + 48); //lcd.setCursor(16, 3);
              tft.print("   ");
              tft.setCursor(16 * 16 + 5, 3 * 48 + 48);
              tft.print(tc2);
            }
    переписываем так
    Код (C++):
              tft.setCursor(16 * 16 + 5, 2 * 48 + 48); //lcd.setCursor(16, 2);
              tft.print("   ");
              tft.setCursor(16 * 16 + 5, 2 * 48 + 48);
              tft.print(tc1);
           
              tft.setCursor(16 * 16 + 5, 3 * 48 + 48); //lcd.setCursor(16, 3);
              tft.print("   ");
              tft.setCursor(16 * 16 + 5, 3 * 48 + 48);
              tft.print(tc2);
           
    если дописываем, то меняем вот на это
    Код (C++):
    if ( tc1 != tc1_old )
            {
              tft.setCursor(16 * 16 + 5, 2 * 48 + 48); //lcd.setCursor(16, 2);
              tft.print("   ");
              tft.setCursor(16 * 16 + 5, 2 * 48 + 48);
              tft.print(tc1);
            }
            tc1_old = tc1;
            if ( tc2 != tc2_old )
            {
              tft.setCursor(16 * 16 + 5, 3 * 48 + 48); //lcd.setCursor(16, 3);
              tft.print("   ");
              tft.setCursor(16 * 16 + 5, 3 * 48 + 48);
              tft.print(tc2);
            }
            tc2_old = tc2;
     
    SOLOway нравится это.
  15. Watashi

    Watashi Гик

    Dmitrysh проделал большую работу переделав скетч и программку работы с РС, пост #2367. Лайк!
    В свою очередь и я в своем варианте сделал соответствующие правки.
    В нижней рампе сделал плавный запуск нагрева нижнего нагревателя. Это больше актуально для лампового низа, как мне кажется. И немного оптимизировал код.
    Проведя тесты и поигравшись с настройками ПИДа получилась такая картинка.
     

    Вложения:

    Скряга и Foxweld нравится это.
  16. SOLOway

    SOLOway Гик

    Похвально!
    На страницах этой темы я поднимал этот вопрос и @Dmitrysh меня поддержал тогда, но никто не развивал дальше сей вопрос, т.к. хватало тогда недочетов во всех скетчах на то время.
    А ведь мягкий старт нагревателей с ярко выраженным https://ru.wikipedia.org/wiki/Бареттер бареттерным эффектом позволяет не только использовать более дешевые силовые элементы управления, но и позволяет оптимизировать общее потребление паяльной станции, что важно при слабой проводке, а ещё софт-старт положительно сказывается на некоторых иных аспектах устройств и процессов связанных с работой с корпусами BGA.
     
    Последнее редактирование: 21 окт 2019
  17. Watashi

    Watashi Гик

    Мне кажется у нас не тот случай, лампы включаются на полную мощность на полный полупериод сетевого напряжения. Широтно-импульсная модуляция, охватывающая несколько периодов сети. Принцип работы мягкого старта в скетче основан на ограничении мощности выдаваемой ПИДом от минимума до максимума в начале нагрева низа. В первые секунд 30 мощность линейно растет, до тех пор пока ПИД начнет ее сам ограничивать, чтобы поддерживать заданную скорость роста температуры.
     
  18. SOLOway

    SOLOway Гик

    Подредактировал. Сделал два варианта - с ними и без них. Правда не понял, в каких случаях их применение требуется...
     

    Вложения:

    Последнее редактирование: 23 ноя 2019
    Dmitrysh нравится это.
  19. SOLOway

    SOLOway Гик

    Ну, я за то, чтобы из холодного состояния спирали ламп в горячее переходили не так, как как это происходит в их обычной жизни, а именно плавно, по чуть-чуть разогреваясь на протяжении какого-либо промежутка времени до какой-либо температуры, при коей дальнейшая подача хоть всех 242 вольт не будет приводить к шоковому воздействию на них. Это продлит срок их службы, снизит нагрузку на питающую сеть и управляющие лампами силовые полупроводники...
     
    Dmitrysh нравится это.
  20. Dmitrysh

    Dmitrysh Гик

    Это немного ускоряет работу скетча. Если температура не изменилась, то и не выводим на lcd. А т.к работа с экраном медленная, то и скорость работы несколько возрастает.
     
    SOLOway нравится это.