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

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

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

    Watashi Гуру

    не понял
     
  2. StDV

    StDV Нерд

    Как то не по англицки Korect.
     
  3. xake

    xake Нерд

    Watashi
    И все таки по поводу лишней строки на всех экранах настроек:
    Если строк Win2 = 6,
    то for (i = 0; i <= Win2; i++) выводит 7 строк (i <= Win2)
    А если (i < Win2), то 6

    Код (C++):
            if (Vklad_L != Vklad_L_old || Shag != Shag_old) {       // пишем строки и заполняем данными
              K_Kpres_ok = false;
              for (i = 0; i < Win2; i++) {
                if (Cln_st) {                   // очистка строки
                  myGLCD.setColor(VGA_BLACK);
                  myGLCD.fillRoundRect(10, i * Y_S_win + Y_shift, 460, i * Y_S_win + Y_shift + 16);
                }
                myGLCD.setColor(VGA_SILVER);
                if (Vklad_L == i) {             // выбранный адрес параметра и строки подсвечиваем зеленым цветом
                  myGLCD.setColor(VGA_LIME);
                  if (Vklad_L == 0 && Vklad_G == 1) myGLCD.setColor(VGA_ORAN);
                  Wr_mem = (byte*)Adresa[Vklad_G][i] + Shag;
                }
       
    Serial.print(Vklad_G); Serial.print(" i="); Serial.print(i); Serial.print(" ");
    Serial.println(myStr3[Vklad_G][i]);
       
                myGLCD.textRus(myStr3[Vklad_G][i], 10, i * Y_S_win + Y_shift);
                ...
    Цвет выбора шага профиля "ВЕРХ" предлагаю сделать так:
    Код (C++):
                    if (Shag == j) {              // выбор ШАГ ПРОФИЛЯ
                      myGLCD.setColor(VGA_BLACK);
                      myGLCD.setBackColor(VGA_LIME);
                    }
    И оставлять его таким на время редактирования, а чтобы "1" не затиралась
    Код (C++):
                if (i == 1 && Vklad_G < 2) {
                  myGLCD.printNumF(*(byte*)Wr_pr * 0.1, 0, 286, i * Y_S_win + Y_shift);    
                }
                else {
                  if (!(i == 0 && Vklad_G == 1)) { // добавлено
                    myGLCD.printNumI(*(byte*)Wr_pr, 286, i * Y_S_win + Y_shift, 3, ' ');
                  }
                }
     
    Последнее редактирование: 25 ноя 2019
  4. Watashi

    Watashi Гуру

    Замечание правильное, лишний цикл, только как он проявляется я не заметил.

    Глубоко копаете )) Тогда попробуйте в #define Win1 4 поставить 3, вам понравится )))
     
  5. xake

    xake Нерд

    Не копаю я :), сначала было не понятно, потихоньку разбираюсь.
    Это не замечание, в коде главное алгоритм, а это - мелкие детали.
    У меня эта строка вылазила между 5 и 6 (дисплей UTFT CTE32HR).
    За вкладки - отдельное спасибо!!!

    Еще файлы *.c спрятал в папку lib :)
    не рванет? :)
     
    Последнее редактирование: 25 ноя 2019
  6. Watashi

    Watashi Гуру

    У меня вообще никак не проявлялось, иначе бы давно поправил.
     
    xake нравится это.
  7. Dmitrysh

    Dmitrysh Гуру

    А почему вы решили, что ошибка термопары имеет характер смещения? Кто нибудь снимал реальную характеристику термопары? У меня, допустим, термопары верха и низа при комнатной температуре показывали одинаковое значение, а при 120 градусах разница уже 15 градусов была, дальше не смотрел, но я думаю ещё больше было бы. Никаким корректирующим числом здесь не поможешь. Подумайте над этим.
     
    StDV, Lenar, SOLOway и ещё 1-му нравится это.
  8. Watashi

    Watashi Гуру

    я уже думал и наверное следовало бы сделать предупреждение по этому поводу. С другой стороны если калибровать таким образом термопару около температуры плавления припоя 200- 230 гр погрешность будет низкая. а для низа калибровать у температуры 140-160. на более низких температурах погрешность не имеет большого значения.
     
  9. Dmitrysh

    Dmitrysh Гуру

    Да, можно и так, но я бы советовал поменять термопару, не так и дорого. Но, если делать корректировку по-взрослому, тогда нужно снимать характеристику термопары и строить функцию ошибки вида y=kx+b, а потом налаживать эту функцию на функцию измерения температуры.
    Низ, в принципе, можно вообще не калибровать. Практика показывает, что погрешность для низа в 10-20 градусов не критична для процесса пайки, если не вдаваться в крайности, конечно.
     
    StDV, Lenar и SOLOway нравится это.
  10. Lenar

    Lenar Нерд

    @Watashi
    Попробовал ваш новый скетч, если альтернативные пины закоментировать валятся следующие ошибки и компиляции не происходит.
    Код (C++):
    Arduino: 1.8.5 (Windows 10), Плата:"Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"

    In file included from C:\c__________7\___podelki\_Payalka\Watashi\20191125\Svs_V07\Svs_V07.ino:39:0:

    sketch\Temp6675.h: In function 'void Set_Pin_6675()':

    Temp6675.h:3: error: 'thermoCS_T' was not declared in this scope

       pinMode(thermoCS_T, OUTPUT);  //digitalWrite(thermoCS_T, HIGH);

               ^

    Temp6675.h:4: error: 'thermoCS_B' was not declared in this scope

       pinMode(thermoCS_B, OUTPUT);  //digitalWrite(thermoCS_B, HIGH);

               ^

    C:\c__________7\___podelki\_Payalka\Watashi\20191125\Svs_V07\Svs_V07.ino: In function 'void TempRead()':

    Svs_V07:459: error: 'thermoCS_T' was not declared in this scope

       if (Input1 == 0) Input1 = ReadCelsius(thermoCLK, thermoCS_T, thermoDO);

                                                        ^

    Svs_V07:460: error: 'thermoCS_T' was not declared in this scope

         else Input1 = Input1 * 0.8 + 0.2 * (ReadCelsius(thermoCLK, thermoCS_T, thermoDO));

                                                                    ^

    Svs_V07:461: error: 'thermoCS_B' was not declared in this scope

       if (Input2 ==0) Input2 = ReadCelsius(thermoCLK, thermoCS_B, thermoDO);

                                                       ^

    Svs_V07:462: error: 'thermoCS_B' was not declared in this scope

         else Input2 = Input2 * 0.8 + 0.2 * (ReadCelsius(thermoCLK, thermoCS_B, thermoDO));

                                                                    ^

    exit status 1
    'thermoCS_T' was not declared in this scope

    Этот отчёт будет иметь больше информации с
    включенной опцией Файл -> Настройки ->
    "Показать подробный вывод во время компиляции"
     
     
  11. Watashi

    Watashi Гуру

    Понял, дойду до компа подправлю

    исправлено, за одно вставлена корректировка значений термопар и перезалито
     
    Последнее редактирование: 25 ноя 2019
  12. Lenar

    Lenar Нерд

    @Watashi
    Код (C++):
    // если оба закоменчены тач отключается
    // #define SetTouch1   // влючается тач где используются аналоговые сигналы
    // #define SetTouch2  // включается тач где используется интерфейс SPI
    это тоже имеет смысл вывести в настройки
     
    xake нравится это.
  13. Watashi

    Watashi Гуру

    может быть. я подумаю.
     
  14. Привет Форуму. Почитал вашу созидательную во всех отношениях тему. Молодцы, так держать!
    Свое чудо делал на пике 18f4550 еще начинал 2008г. Старался приблизиться к Quick bga 2000, только я сделал низ керамика по типу elstain 4 по 400W 260*260мм, Верх 2 варианта кварц 120х120мм 400вт и 60х60 - 500вт.Бесконтактное измеерение либо Ктип темп самого чипа, Ктипа низ. 10 профилей с настройкой каждого на oled 20х4строки. Прога под винду - детальная настройка 10 профилей, запись полученного процесса пайки, загрузка выгрузка профилей - короче Irsoft от ERSA. Свое изделие полностью состыковал с данным софтом. В тырненте есть видео о qickBGA2000 .У них используются Ик сенсоры двух видов, но тогда было все на аналоговых сигналах, короче операционники, нелинейная кривая прироста темп/вольт, приходилось писать уравенения 4 порядка чтобы все это привести к норме. Попотеть с отработкой пришлось. Выглядит датчик сейчас так.
    P1010006.JPG
    Так что по датчикам накоплена инфа если кому интересно, чуть позже выложу, надо пофоткать.
     
    SOLOway нравится это.
  15. SOLOway

    SOLOway Гуру

    @Тибериу Утан приветствую. Вы имели ввиду станцию Quick IR BGA2005? Есть она у моих сослуживцев на работе, используется вполне интенсивно, хотя мне и непонятен подход операторов к работе с нею (но это другая история). Там, вроде, переключаемый коэффициент отражения для IR-сенсора в меню и, насколько помню, IR-сенсору не доверяют следить за температурой чипа всё из-за того же самого мощного отражения ИК лучей при работе верха...
     
  16. Watashi

    Watashi Гуру

    Привет. Можно поподробнее, как это выглядит на станции и какое подключение.
     
  17. Приветствую ! Да по памяти говорил, конечно 2005 ! В меню нет такого пункта переключения коэффициента отражения. В меню есть переключение к-тип/ бесконтактный. Да действительно, если говорить про отражение, то здесь есть очень много тонкостей. Не хотелось бы много об этом , в тырнете есть много толковых статей на эту тему, но есть куча ложных идей. Для себя легко все можно проверить это обычным ручным пирометром - есть ли отражение.
    По поводу 2005 - Я бы сказал не отражение а скорее засветка датчика.Так вот там (и на 2005 и на легендарной ir550)это учтено, потому что датчик установлен под углом.
    [​IMG]
    .
    А вот как на IR550
    [​IMG]
    ИМХО, что касается отражённого сигнала то здесь работают фактически те же правила как и в оптике видимого излучения - я старался предпринимать меры чтобы на датчик не попадала засветка,как это устроено на объективах. Я датчик помещал в конце трубочки, предотварщающей боковое попадание ик. Надо сказать что если сенсор, и , будем говорить его оптическая часть правильно рассчитана, засвета и ложноого показателя температуры не будет.И тут есть целый ряд условий.В частности, несколькими страницами ранее, показывали цифровые датчики с али, и на этих сенсорах можно как раз увидеть металлический раструб в кокоторый помещен сам сенсор, со стороны с которой он направлен на цель измерения, вокруг внутреннего отверстия есть концентрические полоски, которые подавляют попадании засветки и таким образом засвечивая сенсор. Очень хотелось бы собрать данные побольше вокруг использования 2005 от ваших сослуживцев, так как я с ней не работал непосредственно. Есть ролики рекламмные о ней и инструкция.
    По подключению, я делал когда еще не было цифровых, сейчас все это запихнули внутрь сенсора и выдают цифру, но линейность показаний - это большой вопрос. По аналоговым системам можно для начала почитать http://www.compitech.ru/html.cgi/arhiv/03_02/stat_18.htm
    upload_2019-11-28_21-2-1.png
    Использую двух типов, такой как в даташите, и с такой полированной угловой линзой
    [​IMG]
    Но я брал из последних, они уже с линзой френеля внутри, фотки сейчас не успею сделать - они в корпусе как кт3102 советские.
    [​IMG]
    Короче так: Сенсор - компенсатор темп. дрейфа(встроенный терморезистор) - Услилители с фильтрами - АЦП - компенсация нелинейности, если нужна, (Программно).
    Сейчас больше не смогу, время ограничено, Продолжение следует
     

    Вложения:

    • vlcsnap-.png
      vlcsnap-.png
      Размер файла:
      631,8 КБ
      Просмотров:
      618
    • P12801512.jpg
      P12801512.jpg
      Размер файла:
      492 КБ
      Просмотров:
      601
    • Datasheet-2a-TO39rev2.pdf
      Размер файла:
      99,6 КБ
      Просмотров:
      492
    • P12801373.jpg
      P12801373.jpg
      Размер файла:
      158,4 КБ
      Просмотров:
      513
    • hms.JPG
      hms.JPG
      Размер файла:
      86,7 КБ
      Просмотров:
      468
    Последнее редактирование: 28 ноя 2019
    Watashi и SOLOway нравится это.
  18. Solova

    Solova Нуб

    Доброго времени суток. Подскажите пожалуйста, использую скетч Svs_V07. Что бы я не пробовал показывает температуру низа 000 (в версии Dmitrysh_v4_EX - eror), если менять нумерацию пинов платы услителя работаю нормально (верх показывает исправно и на 14,15,16 и на 17,18,19), если сделать нумирацию одинаковую на верх и низ (14,15,16 или 17,18,19 на оба канала), то тоже отлично показывает одну и туже температу. На ik_V3-4_2 версии оба работают исправно...
    P.S. Большое спасибо за проделанную работу, хочу попробовать тоже собрать шайтанмашину :)
     
    Последнее редактирование: 29 ноя 2019
  19. Dmitrysh

    Dmitrysh Гуру

    Похоже мах6675 низа не живой или подключили неправильно.
     
  20. Watashi

    Watashi Гуру

    В скетче в файле Setting.h включены альтернативные настройrки пинов
    такие:
    Код (C++):
      //назначаем пины усилителя термопары MAX6675 "ВЕРХНЕГО" нагревателя   clk=sck cs=cs do=so
      #define thermoCS_T 15  //=cs
      //назначаем пины усилителя термопары MAX6675 "НИЖНЕГО" нагревателя clk=sck cs=cs do=so
      #define thermoCS_B 17   //=cs
      //
      #define thermoCLK 14  //=sck
      #define thermoDO 16   //=so
     
    sck и so общие для обоих платок мах6675
     
Статус темы:
Закрыта.