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

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

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

    SOLOway Гуру

    В РФ производится аналогичная (якобы) GRIPCOTT NF паста ЭРНА-НПФ.
    Узнать о производителе её удалось лишь то, что это ООО "ЭРНА" с капиталлом в 10т.р. в Зеленограде и работают в нём ... один единственный человек, он же учредитель и гендиректор Жило Никита Максимович. Однако эта фирма поставляла по госконтракту товары на 2 750 000,00руб. https://www.rusprofile.ru/gz/11673418
     
    Последнее редактирование: 17 июл 2020
    geleos27 нравится это.
  2. frost37rus

    frost37rus Нерд

    Добрый день, ребят подскажите а можно ли сделать так, чтобы если термопара отвалится, переподключить её и она продолжала работать, тоесть просто отключить, затем заново подключить и она вновь начала показывать температуру?
     
  3. geleos27

    geleos27 Гик

    Термопара отвалилась -> нештатная ситуация -> остановка профиля. Т.к. ПИД может насчитать черти что.

    Ищите в скетче по слову TC1Error либо if (isnan(Input1))

    Если у вас часто отваливаются термопары - лучше устранить проблему.
     
  4. frost37rus

    frost37rus Нерд

    Станция запустилась, все работает, но вот небольшой вопросик, у меня керамика и я смотрел на ютубе настройки в старой версии прошивки от дмитрича была настройка низа без выбора градусов в секунду а в крайней версии при настройке низа нужно указать подскажите, ставить 1 гр/сек? Раньше сколько был этот параметр по умолчанию???
     
    Последнее редактирование: 8 июл 2020
  5. musa

    musa Нуб

    Привет друзья
    Пожалуйста, помогите мне (sketch_TFT-320x480_dimer_V3-2.zip) Я хочу сделать эту программу в размере 320x240.
    Я просто не мог.
     
  6. geleos27

    geleos27 Гик

    Ответ на ваш вопрос

    Выбирайте любую из диапазона 1-5 градусов в секунду, так чтобы перелет был минимальный.
     
    frost37rus нравится это.
  7. Dmitrysh

    Dmitrysh Гуру

    В зависимости от толщины платы, 1-3 гр/сек. Чем тоньше плата тем быстрее можно греть, но я бы больше 2 гр/сек не ставил.
     
    frost37rus нравится это.
  8. geleos27

    geleos27 Гик

    Немного обновил PortPlotter:
    Добавил крупное отображение значения по каналу
    (по умолчанию показывает 2 канал (нумерация от 0) - он должен соответствовать tc1 \ Temp_TOP в большинстве скетчей)
    (можно вкл \ выкл, и выбрать другой номер канала который отображать подправив конфиг .ini)

    UPD:
    При получении из COM команды $@; - программа воспроизводит звук бип
    img.PNG

    Ссылка на гуглдиск
     
    Последнее редактирование: 8 июл 2020
    SOLOway нравится это.
  9. hacjka

    hacjka Гик

    последняя версия от @Watashi работает изумительно!
    добавлен предварительный нагрев платы.
    детектор нуля отключен в скетче.
    даже на стоковых натройках ПИД,на кварце очень неплохо попадает в профиль.
    осталось под свою конфигурацию немного подстроить.
    Теперь пользуюсь 2 скетчами=)))
     
  10. SOLOway

    SOLOway Гуру

    Интересная фишка. А как doubleClick реализовать для arduino, есть у кого ссылки посмотреть примеры? Нашел библиотеку мультиклика https://github.com/kakmyc-github/kakmyc_btn
    Скетч из поста #373 ? Какой у вас дисплей и какая библиотека - tft 3,2" 320x240 разные бывают. Очень много переписать придётся ...
     
    Последнее редактирование: 17 июл 2020
  11. geleos27

    geleos27 Гик

    У Gyver есть https://alexgyver.ru/gyverbutton/ в примерах посмотрите

    Код (C++):
    if(butt1.isDouble()) ...
     
  12. Dmitrysh

    Dmitrysh Гуру

    Вот такую функцию для отработки кнопки я использовал некогда
    Код (C++):
    // процедура возвращает следующие значения статуса кнопки:
    // 0 - ничего не происходило
    // 1 - одиночное нажатие кнопки
    // 2 - двойной клик
    // 3 - длинное нажатие

    unsigned long now,start_time;
    byte mashine_state = 0;
    byte button_pin = 20;

    byte button(void)
    {
      byte button_state = digitalRead(button_pin); //читаем пин кнопки
      unsigned long now = millis();      
                                     
      //машина состояний для кнопки
      if (mashine_state == 0)
      { return 0; //кнопка не нажималась
        // ожидание нажатия на кнопку.
        if (button_state == LOW)
        {
          mashine_state = 1;       // переход в состояние 1
          start_time = now; // запоминаем время нажатия
        }
      }
      else if (mashine_state == 1)
      {
        // ожидаем отпускания кнопки.
        if ((button_state == HIGH) && (now < start_time + 50)) // на дребезг кнопки отводим 50мс, если прошло меньше, то переходим в состояние 0
        {
          mashine_state = 0; //был дребезг
        }
        else if (button_state == HIGH)
        {
          mashine_state = 2; // переходим в состояние 2
        }
        else if ((button_state == LOW) && (now > start_time + 900)) //900 миллисекунд отводим под длинное нажатие
        {
          mashine_state = 6; // переход в состояние 6
        }
        else
        {
          // продолжаем ожидать в этом состоянии, пока не изменится состояние кнопки.
        }
      }
      else if (mashine_state == 2)
      {
        // ожидание повторного нажатия на кнопку или истечения таймаута.
        if (now > start_time + 500) //500 милисекунд отводим на обычный клик покнопке
        {
          return 1; //было простое нажатие.
          mashine_state = 0; // возврат в исходное состояние
        }
        else if (button_state == LOW)
        {
          mashine_state = 3; // переход в состояние 3
        }
      }
      else if (mashine_state == 3)
      {
        // Ожидание завершающего опускания кнопки.
        if (button_state == HIGH)
        {
          return 2;//было двойное нажатие.
          mashine_state = 0; // возврат в исходное состояние
        }
      }
      else if (mashine_state == 6)
      {
        // ждем опускания кнопки после длинного нажатия.
        if (button_state == HIGH)
        {
          return 3; //было длинное нажатие
          mashine_state = 0; // возврат в исходное состояние
        }
       }
    }
    только её вызывать нужно очень часто
     
  13. SOLOway

    SOLOway Гуру

    Конечно, расписываюсь в собственном тугоумии, у меня засада с добавлением функции для кнопки, на которую уже возложена какая-либо функция. Сначала думал, что с инитом предустановленного профиля по longpress CANCEL не заладилось из-за того, что на эту кнопу завязаны все действия в скетче. Попробовал завязать TestProfileInit с кнопкой RIGHT, т.к. на коротком нажатии оной висит лишь запуск PcbFreezer, отключаемый (опять же) коротким нажатием CANCEL. Но и тут мною неострость моего мышления отобедала - из всех опробованных вариантов ни один не работает. Псих во мне снова жаждет применить ручное электро-механическое управление с добавлением органов коммутации... Кто-нибудь, млин, кто использует вариант из поста #3662 расскажите ВНЯТНО, насколько правильно отрабатывает инит по CANCEL. Напомню:
    Код (C++):
    //держим "cancel" 5+ секунды и заходим в инициализацию профиля
          if (cancelSwitchState == HIGH && button_long_state && ( millis() - ms_button)>5000)
          {
            button_long_state = false;
            reflowState = REFLOW_STATE_PROFILE_INIT;
          }
    Но на ней же всегда:
    Код (C++):
    if (cancelSwitchState == HIGH && ( millis() - ms_button)>60)
          {
            ms_button =  millis();
            updateScreen = true;
            reflowState = REFLOW_STATE_IDLE;
          }
    При этом на длинное и короткое нажатие OK великолепно работают и вход в меню (longpress) и старт пайки (shortpress)!
    Ну, вот где я поспробудно туплю? :(
    @geleos27
    плита 200*200*6mm +"U" залитый в диск ТЭН 1370W + ЛАТР на 350Вт, + вольтметр https://aliexpress.ru/item/32658276437.html?spm=a2g0s.9042311.0.0.264d33edvT62Bx
    пробую сделать видео на канале Паяльник Товарища, любезно предоставленном камрадом Омут Тишайший. №1= датчик в центре на верхней плоскости крашеной черным плиты, №2= датчик в середине "U"-ТЭНа на нижней плоскости плиты.
     
    Последнее редактирование: 9 июл 2020
    geleos27 нравится это.
  14. Dmitrysh

    Dmitrysh Гуру

    плохо работает, возможны ложные срабатывания. Нужно добавить следующий код
    Код (C++):
    if ((cancelSwitchState) == LOW && (okSwitchState == LOW) && (button_long_state || button_state)) {button_long_state = false; button_state = false;}
    в конец секции IDLE
     
  15. geleos27

    geleos27 Гик

    Интересно посмотреть на результаты. Какие прогнозы по показаниям?
    Если я правильно помню - на выходе будет график для построения модели.

    На днях попробую спаять себе панель кнопок и посмотреть как там надо поправить.
     
  16. Dmitrysh

    Dmitrysh Гуру

    В том-то и дело, что не всегда. В режиме IDLE такого кода нет. А инит профиля мы звпускаем именно из IDLE.
     
  17. LessNICCKoff

    LessNICCKoff Гик

    Когда-то кодил на спектруме. Вся обработка клавиатуры и мышки шли по прерываниям, а прерывания там одни 50 герц. Почему бы не сделать привязку к ZCC?
     
    SOLOway нравится это.
  18. prusony

    prusony Нерд

    Пожалуйста поясните почему?
     
  19. hacjka

    hacjka Гик

    по умолчанию в скетче.да и у меня ssr с переходом через ноль.
     
  20. xpalarmax

    xpalarmax Нуб

    Решил воспользоватся. Правда ругается на
    Это надо дополнять сам класс? Я новечек и мне очень интересно:). Конечно скетч заливал под ужасно китайский mega v3 под ch340g
     
Статус темы:
Закрыта.