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

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

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

    mrzevs Нерд

    Спасибо за совет, попробую, может и осцил найду.

    Кто как запитывает ардуинку?
     
  2. revolover

    revolover Гик

    Я кинул БП от телефона, всего на 450ма - с головой, все стабильно.
     
  3. mrzevs

    mrzevs Нерд

    Хм. Я так понимаю 5 вольтовый? Я думаю запитать 9В, ампер на 1.5-2.0. Это хорошо, что хватает, проще значит будет)
     
  4. revolover

    revolover Гик

    Да, 5в
     
  5. MRKHBotik

    MRKHBotik Нерд

  6. Dmitrysh

    Dmitrysh Гуру

    Чтобы работал выбор размеры стола необходимо активировать состояние REFLOW_STATE_TABLE_SIZE. Делаем так. Ищем вот такой блок кода
    Код (C++):
    if (okSwitchState == LOW && button_state && ( millis() - ms_button)>100)
          {      
            ms_button =  millis();
            button_state = false;
            tone(buzzerPin, 1045, 500);  //звуковой сигнал при старте профиля
            //update next screen
            updateScreen = true;
            reflowStatus = REFLOW_STATUS_ON;
            reflowState = REFLOW_STATE_STEP_RAMP;
           
          }
    меняем последнюю строку, чтобы стало так
    Код (C++):
    if (okSwitchState == LOW && button_state && ( millis() - ms_button)>100)
          {      
            ms_button =  millis();
            button_state = false;
            tone(buzzerPin, 1045, 500);  //звуковой сигнал при старте профиля
            //update next screen
            updateScreen = true;
            reflowStatus = REFLOW_STATUS_ON;
            reflowState = REFLOW_STATE_TABLE_SIZE;
           
          }
    теперь ищем вот такой код
    Код (C++):
     case REFLOW_STATE_TABLE_SIZE:
          if (tableSize == 1) {
           digitalWrite(P1_PIN, LOW);
           }
          if (tableSize == 2) {
           digitalWrite(P1_PIN, LOW);
           digitalWrite(P2_PIN, LOW);
           }
          if (tableSize == 3) {
           digitalWrite(P1_PIN, LOW);
           digitalWrite(P2_PIN, LOW);
           digitalWrite(P3_PIN, LOW);
           }
            break;
    и добавляем перед break; такую строчку
    Код (C++):
    reflowState = REFLOW_STATE_STEP_RAMP;
    Всё. Теперь работает выбор размера стола 1, 2 или 3 секции.
    Вот правленный скетч. Другие скетчи правятся так же.
     

    Вложения:

    mrzevs нравится это.
  7. Dmitrysh

    Dmitrysh Гуру

    У меня импульсный БП на 12в от 24-портового свича плюс китайский dc-dc. Выход настроил на 7,5в, чтобы lm1117 в ардуине не грелся. Ну и колечко ферритовое на проводах питания до ардуины. Всё просто.
     
    mrzevs нравится это.
  8. mrzevs

    mrzevs Нерд

    Спасибо тебе добрый человек). Поправил скетч, все ок. Я так понимаю, 4 релюха для ВИ предназначена. По питанию, тоже заметил нагрев, особенно, если 12в подать. Наверное, тоже dc-dc добавлю, или оставлю 9в (на 9в не так сильно греется).
     
  9. Dmitrysh

    Dmitrysh Гуру

    С керамикой тяжело.
    Вот это точно, так оно и есть. Дело в том, что керамика ооочень инерционная. Если хочешь быстрый рост, готовься к перелётам. Если хочешь точную температуру, то затягивается выход на уставку.
    Керамику нужно "поддавливать" и сверху и с низу, т.е снизу ограничить минимальную мощность процентов на 10-30 чтобы не остывала, а с верху 60-80 чтобы не "жарила". При определенном навыке работать можно. У меня пока керамика, но уже делаю параболический кварц.
     
  10. Dmitrysh

    Dmitrysh Гуру

    Да, для ВИ.
     
  11. Dmitrysh

    Dmitrysh Гуру

    А что за контроль скорости и как реализован.
    Я сейчас для низа передаю в ПИД желаемую скорость роста температуры, а за 5 градусов до уставки переключаю на поддержание температуры. Получается вот такой график:

    bottom.jpg Около уставки пляшет 0,5 - 1 градус из-за малого Ки. Держит хорошо.
    Измерение температуры 4 раза в секунду. Температура меряется и рассчитывается ПИД прямо в прерывании от zcc. Тип управления пока димер, позже попробую и шим прикрутить.
     
  12. revolover

    revolover Гик

    У меня постоянно считается скорость изменения температуры (текущая - предыдущая), учитывая интервал времени между замерами считается скорость и введен дополнительный ПИД со своими коэффициентами который как входной параметр использует эту скорость, его уставка - желаемая, а выходной параметр - максимальная мощность уже для ПИД нагревателя. Таким образом контроль происходит по верхнему ограничению, когда ПИД нагревателя близится к уставке он понижает мощность, а ПИД скорости ему в этом не мешает. То есть отрабатывает сам, только там, где ему это нужно. Пример теста прилагаю
     

    Вложения:

    • 612.jpg
      612.jpg
      Размер файла:
      159,5 КБ
      Просмотров:
      693
    Yojiq нравится это.
  13. revolover

    revolover Гик

    Для верха, на полках ставлю ПИД скорости на "паузу", что бы не рос И чрезмерно.
    Так же нужно вводить коэффициенты для каждого шага - должно улучшить ситуацию.
     
  14. revolover

    revolover Гик

    Но вот назрел вопрос такой более глобальный... нужны ли по сути полки??? Может есть смысл ближе к документации варьировать скорость роста верха? Например при активации флюса ниже, в конце выше и тп.. Чуть плавнее график и для керамики проще будет и точнее....
     
  15. Dmitrysh

    Dmitrysh Гуру

    Думаю что по сути и не нужны.
     
  16. Dmitrysh

    Dmitrysh Гуру

    А как зависит ограничение мощности от желаемой скорости роста?
     
  17. revolover

    revolover Гик

    Хм... Вроде все объяснил) или плохо объяснил или не вдумались)
    Попробую еще на пальцах.
    Допустим, в данный момент времени на поддержание скорости необходима мощность 32% исходя из ПИД скорости. Основной ПИД считает что в этот момент необходима мощность 87% для скорейшего и точного выхода на уставку. Но у нас для основного введено ограничение максимума мощности из ПИД скорости, и оно равно 32%. Так что Пид основной вынужден установить мощность 32%, хоть и хочется ему 87%... Когда мы уже рядом с уставкой и ПИД скорости предположим, требует 34% для поддержания скорости, а основной уже хочет всего 15%, ему по сути уже не важно, что в данный момент он ограничен 34%... Он ставит свои 15% и радуется плавному выходу)
     
  18. revolover

    revolover Гик

    Единственное, нужно на паузу ПИД скорости ставить не только на полках, а когда основной ПИД перестает ограничиваться ПИДом скорости и происходит ее снижении. В этот момент ПИД скорости уже начнет зря наращивать интегратор...
     
  19. SOLOway

    SOLOway Гуру

    revolover Наверное, понадобится еще один профиль для проблемных плат из синего текстолита, а также плат с большим количеством металла... Основное отличие профиля - начальные ~180 секунд.
     

    Вложения:

    • maxlabt.jpg
      maxlabt.jpg
      Размер файла:
      342,7 КБ
      Просмотров:
      446
  20. revolover

    revolover Гик

    Планируется сделать много ячеек под профили, только работу с eeprom нужно переписать. До этого нужно окончательно разобраться, какие параметры для каждого профиля будут там храниться.
     
Статус темы:
Закрыта.