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

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

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

    geleos27 Гик

    Вероятнее всего да, каждому придется подстраивать профиль под свои нагреватели. Но вроде и так все это делают. Потомучто, как вы и написали:
    Я ориентировался на описаниие от VladSKO с ром.бай, там расписывались разные типы нагревателей, но там не учитываются малоинерционные галогенки. Поэтому видимо у меня сложилось впечатление что они все "+\- одинаковые"
    Screenshot_2020-04-18 Самодельная ИК паяльная станция (часть 7) ROM by BIOS23.png


    Согласен полностью. Но график отражает его остывание за счет ИК излучения и конвекции а не принудительное охлаждение.

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

    А вы не пробовали записывать график мощности со своей паяльной станции во время выполнения термопрофиля?


    В общем резюмируя: управление по 3м термопарам не реализовано, поскольку оно плохо подходит для малоинерционных нагревателей.

    Огромное спасибо за пояснения!
     
    Последнее редактирование: 18 апр 2020
  2. Dmitrysh

    Dmitrysh Гуру

    Все настраивают ПИД, а здесь придётся снимать реальные характеристики с нагревателя и это в разы дольше и сложнее.
    График отражает снижение мощности нагревателя для для недопущения перегрева платы вылетом температуры.
    Платы разные бывают, придётся для каждого вида плат делать свою таблицу мощностей. Шагов у профиля не будет.
    Нет не пробовал, но это не проблема.
    Управления по 3-м термопарам не реализовано в виду отсутствия такой необходимости, противоречия концепции нахождения термопар на верхней стороне нагреваемой платы.
    А зачем вам 3-я термопара и как вы её логически собираетесь использовать.
     
  3. geleos27

    geleos27 Гик

    Изменил порядок ответов, так логичней воспринимается:

    Я хочу попробовать реализовать управление как в Термопро. Одна термопара на НИ, одна на ВИ, третья - на паяемую плату, для корректировки термопрофиля.

    Положение-Термопар2.png

    Пожалуйста разделите понятия профиль нагрева нагревателей (синий и зеленый на графике) и профиль нагрева платы (красный на графике).
    С помощью первого мы управляем вторым.

    Termopro.PNG

    Продублирую описание из моего поста ранее:

    Если я правильно понимаю принцип её управления - у них есть термопрофиль по которому они гонят НАГРЕВАТЕЛИ(термопары 1 и 2 которые намертво закреплены на нагревателях и дают 99% повторяемость профиля негревателей с погрешностью на температуру окружающей среды), и в зависимости от отставания температуры платы (термопара 3) добавляют\убавляют пару градусов к профилю нагревателей.


    По идее логика не сильно усложняется:

    Значения мощности верх и низ управляются контроллером в соответствии с алгоритмом ПИД.
    Раз в секунду в оба пид передются новые значения на которые пид должен вывести нагреватели. ( Также как и у Вас в скетчах )


    Тпид = Tгр + плгр - Тплфакт) * К


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


    Вроде то-же самое должно быть. Надо правильно настроить ПИД для каждого из нагревателей, чтобы он мог следовать заданному графику температуры (каждого нагревателя).

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

    Для этого и есть корректировка мощности по термопаре (3) установленной на паяемой плате.
    Дополнительно в термопро есть механизм Паузы: когда разница температуры фактической замеренной на плате термопарой плфакт) и и температуры по профилю нагрева ПЛАТЫ (Тплгр) больше определенного (5-7-10 градусов, как зададим) профиль встает на паузу:

    Перестают выдаваться новые задания для ПИД, т.е. низ и верх переходят в режим удержания температуры НАГРЕВАТЕЛЯ. До тех пор пока Тплфакт и Тплгр не станут одинаковыми.

    Фактически "пауза" растягивает термопрофиль платы во времени в моменты, когда плата недогревается.



    Я надеюсь что через пару недель до меня наконец доедут MAXы, я дособеру станцию и попробую закодить все что я имел ввиду.
     
    Последнее редактирование: 19 апр 2020
  4. Dmitrysh

    Dmitrysh Гуру

    Попробуйте, это похвально. Помогу чем смогу.
    Первое это профиль мощности, второе это собственно термопрофиль.
    у них есть профили мощности под некую среднестатистическую плату для верхнего и нижнего нагревателей
    добавить можно только мощность, но как они это делают мне неизвестно.
    Я могу предположить, что у них ПИДа вообще нет.
    Что-то мне подсказывает, что Тплгр здесь лишняя.
    если бы это было просто, то и третья термопара не нужна.
    Это можно описать намного легче - "вы установили плату для которой нет корректного профиля мощности и наша система управления не может справиться с инерционностью нагревателей, поэтому мы немного подождём, а как нагреватели раскочегарятся так сразу и продолжим".
    Запомните, добавить можно мощность и то при условии что у вас есть кривая разгона нагревателей. Поймите, просто нагреть плату мало, нужно нагреть её с определённой скоростью и желательно уложиться в отведённое время.
     
  5. geleos27

    geleos27 Гик

    Вот это и есть корректировка:
    плгр - Тплфакт) - это разница температур между термопрофилем платы и фактически полученным с термопары значением.
    Т.к. задание выдается 1 раз в секунду, то и корректировка будет вводится сразу как только плата будет отклоняться от термопрофиля.

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

    Если я правильно понимаю принцип работы по этой схеме, то профиль(график) температуры нагревателей мы изначально корректируем так, чтобы они успевали попадать в нарисованную нами линию, т.е. кривая разгона (инерционность) нагревателя уже будет учтена.

    Добавление мощности будет пропорциональное отставанию нагрева платы от её профиля. Но в достаточно узком диапазоне (5-10%) что не позволит плату подрумянить. Т.к. при большом отставании температуры платы от профиля сработает пауза.


    Если на паузу будет вставать регулярно, то 2 варианта:
    Либо сквозняк,
    Либо плата, которую греем, имеет показатели теплопроводности и теплоемкости за пределами того, что можно скорректировать алгоритмом. (акцентирую внимание что дело не в управлении нагревателями, у нас они должны отрабатывать всегда с попаданием в их график)


    Хотя вы конечно правы. Пауза и ломанные графики температуры верха и низа это 2 костыля, которые позволяют работать при высокоинерционных нагревателях. Но зато они исключают возможность подрумянивания платы.
     
    Последнее редактирование: 19 апр 2020
  6. Watashi

    Watashi Гуру

    Исправления и дополнения в версию Svs_V08. Перезалил.
     
    SOLOway нравится это.
  7. zon63

    zon63 Нерд

  8. Watashi

    Watashi Гуру

    там есть строка #include "ILI9488.h"
    это и есть контроллер дисплея
     
  9. zon63

    zon63 Нерд

    // RD is PB12 // WR is PB13 // CD is PB14 // CS is PB15 // RESET is PB16

    .Мне непонятно что за дисплей SPI или с параллельной загрузкой и если с параллельной то куда данные?
     
  10. geleos27

    geleos27 Гик


    Гугл говорит что ILI9488: Resolution, 480*320 (Pixel). Module Interface, 4-wire SPI
     
  11. Watashi

    Watashi Гуру

    C утра вспомнил что еще хотел добавить - это: при запуске пайки первые 3 сек на низ подается 5% мощности.
    Добавил и еще раз перезалил.
    Пока на сегодня все))
     
    StDV, SOLOway и xake нравится это.
  12. SOLOway

    SOLOway Гуру

    А баба яга не против? Посмотрите картинку из моего спора на Ebay:
    s-l1600.jpg
    В даташите на ili9488:
     
    Последнее редактирование: 21 апр 2020
  13. Aquacomp

    Aquacomp Нуб

    Всем привет! Подскажите, как снять с китайской термопары наконечник с гайкой, дабы оголить каплю. И надо ли?
     
  14. SOLOway

    SOLOway Гуру

    Я сначала алмазным надфилем по окружности надпилил, затем слегка покачивая, снял, оставив только 5мм обоймы на оплетке. Гайку дремелем резал.
    Для тех, кто (как многие повторившие станцию с контроллером от 4uvak с сайта ПАЯЛЬНИК) использует подогреватель плат в ручном режиме, например, управляя своим термостолом с помощью ручного симисторного диммера, а также тех, у кого слишком инерционный термостол и трудности с настройкой для него параметров ПИД, предлагаю вариант скетча под Pro MINI Mega168p, LCD1602 i2c и один модуль MAX6675. график для ВИ выводится в программе serial port plotter с открытым исходным кодом. Пояснения читайте в теле скетча. Как что подключать на примере UNO можно посмотреть на картинке.
    UNO r3.jpg
     

    Вложения:

    • 2882_i2c.ino
      Размер файла:
      42,5 КБ
      Просмотров:
      254
    Последнее редактирование: 21 апр 2020
  15. Aquacomp

    Aquacomp Нуб

    Благодарю за информацию!
     
  16. geleos27

    geleos27 Гик

    Не получилось найти ваше сообщение где об этом была информация.
    Нашел ваше сообщение №2771

    Так контроллер вроде в обеих режимах может работать?
    из даташита:
    MIPI-DBI (Display Bus Interface) Type B (i-80 system),
    8-/9-/16-/18-/24-bit bus Type C (Serial data transfer interface, 3/4-line SPI)


    Просунул тонкий прочный предмет внутрь гильзы, покачал, гильза разжалась. оплетка достаточно легко вышла.

    20200421_163439.jpg
     
    Последнее редактирование: 22 апр 2020
  17. SOLOway

    SOLOway Гуру

    Может-то он может, а вот как его на конкретном дисплейном модуле разведут китайцы - вопрос. Заказывался с параллельным интерфейсом и 16бит, а получили с 8бит огрызок. Открыл спор, еле смог вернуть деньги, к тому времени уже пришел правильный дисплей, купленный у другого продавца (дисплей покупал мой сослуживец, а спор я вёл от его имени. Дисплей пришел с ili9486, но в лоте указаны оба контроллера. Пост #2771 )
    Кстати, @Vepr поделился опытом переделки таких дисплеев из 8-ми в 16-и битные в посте #2860
    Я тут попытался оживить эту версию из поста @Dmitrysh #1917
    Подредактировал скетч в соответствии с изменениями в свежей версии 1.3.4 из поста #3658
    Этот релиз обозвал 1.3.6. Компиляция прошла успешно, однако у меня серьезные подозрения на грубые косяки мои в модуле расчета PID:
    Код (C++):
          //считываем данные с термопар и считаем ПИД
          Input1 = Input1 * 0.8 + 0.2 * (max6675_read_temp (thermoCLK, thermoCStop, thermoSO)); //термопара "ВЕРХНЕГО" нагревателя
          Input2 = Input2 * 0.8 + 0.2 * (max6675_read_temp (thermoCLK, thermoCSbott, thermoSO)); //термопара "НИЖНЕГО"  нагревателя
          tc1 = Input1;
          tc2 = Input2;
          if (TopStart) Output1 = Pid1(Input1, Setpoint1, kp1, ki1, kd1);
          else Output1 = 0;
          if (bh_power_auto == 0) Output2 = Pid2(Input2, Setpoint2, kp2, ki2, kd2);
          if (bh_power_auto == 1) Output2 = bh_power;
          else Output2 = Pid2(Input2, Setpoint2, kp2, ki2, kd2);
          //Output2 = Pid2(Input2, Setpoint2, kp2, ki2, kd2);
          nextRead1 = millis() + SENSOR_SAMPLING_TIME;
          lcd.setCursor(16, 2);
          lcd.print("    ");
          lcd.setCursor(16, 2);
          if (isnan(Input1)) {
            lcd.print("Er");
          } else {
            lcd.print(tc1);
          }
          lcd.setCursor(16, 3);
          lcd.print("    ");
          lcd.setCursor(16, 3);
          if (isnan(Input2)) {
            lcd.print("Er");
          } else {
            lcd.print(tc2);
          }
        }
      }
      else
      {
        digitalWrite(RelayPin1, LOW);
        digitalWrite(RelayPin2, LOW);
      }
    }
    Подскажите, люди знающие :)
     

    Вложения:

    • 20apr.ino
      Размер файла:
      58,1 КБ
      Просмотров:
      228
    Последнее редактирование: 22 апр 2020
  18. Dmitrysh

    Dmitrysh Гуру

    Вот так:
    Код (C++):
    //считываем данные с термопар и считаем ПИД
          Input1 = Input1 * 0.8 + 0.2 * (max6675_read_temp (thermoCLK, thermoCStop, thermoSO)); //термопара "ВЕРХНЕГО" нагревателя
          Input2 = Input2 * 0.8 + 0.2 * (max6675_read_temp (thermoCLK, thermoCSbott, thermoSO)); //термопара "НИЖНЕГО"  нагревателя
          tc1 = Input1;
          tc2 = Input2;
          if (TopStart)
          { Output1 = Pid1(Input1, Setpoint1, kp1, ki1, kd1);
            if (bh_power_auto == 0) Output2 = Pid2(Input2, Setpoint2, kp2, ki2, kd2);
            if (bh_power_auto == 1) Output2 = bh_power;
          }
          else
          { Output1 = 0;
            Output2 = Pid2(Input2, Setpoint2, kp2, ki2, kd2);
          }
          nextRead1 = millis() + SENSOR_SAMPLING_TIME;
          lcd.setCursor(16, 2);
          lcd.print("    ");
          lcd.setCursor(16, 2);
          if (isnan(Input1)) {
            lcd.print("Er");
          } else {
            lcd.print(tc1);
          }
          lcd.setCursor(16, 3);
          lcd.print("    ");
          lcd.setCursor(16, 3);
          if (isnan(Input2)) {
            lcd.print("Er");
          } else {
            lcd.print(tc2);
          }
        }
      }
      else
      {
        digitalWrite(RelayPin1, LOW);
        digitalWrite(RelayPin2, LOW);
      }
    }
    Код немного сыроват, но плюс/минус работать будет. Первые два режима будут работать железно, а третий будет подлагивать в зависимости от "фазы луны".
     
    SOLOway нравится это.
  19. geleos27

    geleos27 Гик

    Прошу прощения @Dmitrysh, а у вас остались исходники программы для ПК?
    В теме нашел вот эту версию.
    upload_2020-4-22_1-12-22.png

    Исходя из того, что писал @SOLOway в этом и этом сообщении исходников в общем доступе вероятно ждать не стоит.

    Если я внесу изменения в версии от 2016 года, найдется ли у вас время внедрить их в вашу обновленную программу?
     
  20. Dmitrysh

    Dmitrysh Гуру

    не стоит
    попробуем.
     
Статус темы:
Закрыта.