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

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

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

    Watashi Гуру

    Эта болячка тянется с "каменного века" двух строчных дисплеев )), а переделывать тогда надо 70% программы. Это уже предлагалось около 1000 постов ранее, там речь шла о библиотеке Cl_do_btn_long.h
     
    SOLOway нравится это.
  2. Yojiq

    Yojiq Гик

    ввести третий датчик вместо верхнего графика и повторить алгоритм термопро :)
     
    SOLOway нравится это.
  3. SOLOway

    SOLOway Гуру

    У @Yurik-o в его реализации использован обработчик кнопок s.button.h
    #761
    #777
    Также @xake у нас в теме главный по выносу мозга кнопок и по энкодерам :) #1479
    Когда упорядочивал и рихтовал по рекомендациям @Dmitrysh старый код @Yurik-o из поста #160 , я не смог разобраться с таким вариантом обработки кнопок (навскидку не вспомнил в каких участках кода, надо будет посмотреть...) и в упорядоченном скетче, в посте #2372 , применил тот же способ, что и в релизах v1.3.3
     
    Последнее редактирование: 7 окт 2019
  4. RSR3000

    RSR3000 Нерд

    Осталась третья термопара, незадействованная.
     

    Вложения:

  5. Watashi

    Watashi Гуру

    Все это работает, но слабовато, не меняет структуру программы для улучшения кода.
     
  6. SOLOway

    SOLOway Гуру

    Тут недавно испекли свежие видосики о равномерности нагрева.

    Ссылается на вот эти видео

    и оттуда же

    Я не спорю, я это для тех, кто всё равно не будет читать всю тему :)
     
  7. Yojiq

    Yojiq Гик

    такая плотность нагревателей излишняя, все равно будет с верху рассеиватель не важно какой ...
     
  8. SOLOway

    SOLOway Гуру

    @Yojiq это вы случайно пропустили важную информацию от @RSR3000:

    Изначально спирали с завода бывают уложены в трубках очень даже равномерно. Однако перевозка, небрежность при хранении, делают из конфетки какашку. Знакомые мне владельцы этого инструмента сами перекладывали спирали. Несовершенство же ПО ставили на второе место.
    Теорию и практику использования сплошного расположения трубок очень воодушевляюще изложил VladSko:
     
    Последнее редактирование: 7 окт 2019
  9. RSR3000

    RSR3000 Нерд

    Размер кварцевого НИ 180х220, какой размер стола ставить, в настройках 1,2,3 , эта настройка принципиальна?
    ПО я поставил на первое место, т.к, трубки поправил можно, а ПО не поправишь, плюс два четырех сегментных непонятных (индикатора). В силовой части два запараллеленных bta 20600b.и мос3021.
     
    Последнее редактирование: 21 апр 2019
  10. Yojiq

    Yojiq Гик

    у тебя какой размер платы ? - вот под него и ставишь.
     
    RSR3000 нравится это.
  11. RSR3000

    RSR3000 Нерд

    Аха вон как, думал от размера площади ни, так как у всех разная она.
    Как реализована эта функция, виде дополнительного подключения нагрузки НИ, или программная обработка ?
     
    Последнее редактирование: 21 апр 2019
  12. SOLOway

    SOLOway Гуру

    @RSR3000 У вас преднагреватель не разделен на секции. Вам недоступна функция меню, которая позволяет выбирать количество подключенных к силовому модулю управления низом нагревательных элементов!
     
    Последнее редактирование: 7 окт 2019
    RSR3000 нравится это.
  13. RSR3000

    RSR3000 Нерд

    Спасибо, так и предполагал ))
     
  14. and-payalnik

    and-payalnik Нерд

    "Попробуйте ещё раз перегрузить скетч из поста #2400, я его немного поправил."
    все так и осталось.
    для укрощения низа собрал простой генератор на UNO. работать все-таки надо...
    Код (C++):
    const int buttonPin = 11; // номер порта управления
    const int ledPin =    13; // номер порта выхода
    void setup() {
        // устанавливаем порт на выход
        pinMode(ledPin, OUTPUT);
        // устанавливаем порт на вход
        pinMode(buttonPin, INPUT);
    }

    void loop() {
        // читаем состояние порта кнопки и записываем в переменную
        int buttonState = digitalRead(buttonPin);

        // делаем простую проверку нашей переменной,
        // если на входе в порт кнопки присутствует напряжение - включаем , иначе - выключаем
        if (buttonState == HIGH) {
      digitalWrite(LED_BUILTIN, HIGH);
      delay(300);
      digitalWrite(LED_BUILTIN, LOW);
      delay(2000);
    }
    }
    Он включается при запуске пайки, подобрал время on=off,
    и после отключения низа температура
    около 148-152(уст 150). до платы 7см.
    с низа платы около 120.
     
  15. Watashi

    Watashi Гуру

    Вы поясните ,плиз, зачем этот генератор и что пытаетесь с его помощью добиться?
    Если пытаетесь ограничить мощность низа, то есть ограничение по мин и мах в настройках.
     
  16. SOLOway

    SOLOway Гуру

    Простенький термостат для низа от mvm_ksaa:
    Код (C++):
    #include <max6675.h>
    #include <LiquidCrystal.h>
    LiquidCrystal lcd(3, 4, 5, 7, 8, 9);
    int TempBottom;
    int SetTempBottom;
    int PinBottom = 6;
    int thermoDO = 12;
    int thermoCLK = 10;
    int thermoCS_b = 11;
    int PinPlus = 0;
    int PinMinus = 1;
    int PeriodReadTemp = 0;
    MAX6675 thermocouple_b(thermoCLK, thermoCS_b, thermoDO);
    const byte DESIRED_WIDTH = 3;
    void setup() {
      //Serial.begin(9600);
      SetTempBottom = 0;
      pinMode(PinPlus, INPUT);
      pinMode(PinMinus, INPUT);
      digitalWrite(PinPlus, HIGH);
      digitalWrite(PinMinus, HIGH);
      pinMode(PinBottom, OUTPUT);
      digitalWrite(PinBottom, LOW);
      lcd.begin(16, 2);
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("ALEXSEY  JUYCKOV");
      lcd.setCursor(1, 1);
      lcd.print("BOTTOM  HEATER");
      delay(3000);
      lcd.clear();
    }
    String addZeroes(const String& src, byte pad)
    {
    if(src.length() >= pad)
    return src;
    String result;
    byte add = pad - src.length();
    while(add--)
    result += "0";
    result += src;
    return result;
    }
    void loop() {
      lcd.setCursor(0, 0);
      lcd.print("HEATING  CONTROL");
      PeriodReadTemp++;
      if (PeriodReadTemp == 200) {
      TempBottom = thermocouple_b.readCelsius();
      PeriodReadTemp = 0;
      }
      lcd.setCursor(0, 1);
      lcd.print("FACT "+(addZeroes(String(TempBottom),DESIRED_WIDTH)));
      lcd.setCursor(9, 1);
      lcd.print("INS "+(addZeroes(String(SetTempBottom),DESIRED_WIDTH)));
      if (digitalRead(PinPlus) == LOW) {
        SetTempBottom++;
        delay(100);
      }
      if (digitalRead(PinMinus) == LOW) {
        SetTempBottom--;
        delay(100);
      }
      if (SetTempBottom <=0) {
        SetTempBottom = 0;
      }
      if (SetTempBottom > 500) {
        SetTempBottom = 500;
      }
      if (SetTempBottom > TempBottom) {
       digitalWrite(PinBottom,HIGH);
      }
      if (SetTempBottom <= TempBottom) {
       digitalWrite(PinBottom,LOW);
      }
    }
     
    Последнее редактирование: 21 апр 2019
    buivol135 нравится это.
  17. tssergej

    tssergej Нерд

    про хотелки мы уже парой страниц раньше высказывались, но так как в программированиии я абсолютный ноль, то кроме так хотеть , ничем больше помочь не могу. У меня станция сейчас на другом контроллере собрана и там в управлении есть возможность использования энкодера - по мне так это гораздо удобней кнопочного варианта, хотя и не принципиально.
     
  18. SOLOway

    SOLOway Гуру

    1). А вот здесь как раз можно и воспользоваться идеей 4uvak о 14-и профилях , примененной для AVR @SNMar4enko в его версии REWORK_LCD1602nano и адаптированной @Dmitrysh для ветки UNO+LCD2004.
    Платы все пакостнее становятся, а для Mega2560+tft 480*320 так и осталось всего 5 профилей...
    Предложенный @Watashi в посте #1827 способ хорош, когда есть или легкий доступ к карте памяти, или карта навечно поселится в слоте.
    2). И еще полезняшка, которая пока не реализована: задавать условие для включения верха через меню.
    3). Ещё в теме упоминали, что работа с дисплеем - очень ресурсоёмкая. А сейчас на дисплей выводится большое количество информации, присутствует мелкий шрифт. При этом важность отображения всего, что сейчас отображается ещё не обсуждалась. Мне на моём смартфоне случайно попалась функция изменения стиля экрана - можно выбрать "простой режим", "обычный режим", "пользовательские настройки". Может ли быть применен такой подход в нашем случае? - т.е. "рабочий режим", "сервисный режим", и т.п.
     
    Последнее редактирование: 7 окт 2019
  19. Dmitrysh

    Dmitrysh Гуру

    Профилей можно сделать достаточно много, даже не используя карту памяти, у mega2560 достаточно большой eeprom - 4кБ, а профиль занимает байт 100(это с запасом на будущее), так что считайте сами.
    Объясните поподробнее, что вы имеете в виду.
    По поводу пункта 3) Я скажу так, всё что успевает укладываться в 220-240милисекунд можно выводить смело. Есть вариант выводить всё что угодно, хоть видео, но он сложный, у меня работает, но пока не вижу смысла усложнять, то что есть.
     
  20. Dmitrysh

    Dmitrysh Гуру

    Можно, и где-то даже и нужно, наверное. Можно что-то убрать, я, допустим, у себя убрал графики мощности верха и низа. В дальнейшем, наверное, уберу график температуры и скорее всего в отдельный экран с возможностью переключения.
     
    SOLOway и Yojiq нравится это.
Статус темы:
Закрыта.