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

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

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

    vector99 Гик

    Зачем?
    Контролировать температуру самого нагревательного элемента?
     
  2. Yojiq

    Yojiq Гик

    Мое мнение такое : режим нагревателей контролируется отдельно каждый , а температура платы как итоговое значение и по нему ориентироваться и вести лог и хеппиенд.
     
  3. SOLOway

    SOLOway Гуру

    У ТермоПро ИК650-Про сделано так
     
  4. Yojiq

    Yojiq Гик

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

    Yojiq Гик

    что ?, ни кто не использует данную прошивку ?
     
  6. xake

    xake Нерд

    В этом выражении задержка от дребезга 100мс - ( millis() - ms_button)>100)
    для кнопки ВВЕРХ, например:
    if (upSwitchState == HIGH && ( millis() - ms_button)>100);

    Создайте константу в начале скетча
    int t_button = 100;
    и поменяйте везде на всех кнопках где указано >100
    if (upSwitchState == HIGH && ( millis() - ms_button) > t_button);


    Изменяя t_button выберите подходящую задержку

    Настройки ПИД смотрите в прошивке Yurik-o на 8 стр.
    double kp1 = 3;
    double ki1 = 0;
    double kd1 = 20;
    double kp2 = 3;
    double ki2 = 0;
    double kd2 = 20;
     
    Последнее редактирование: 19 ноя 2017
    Yurik-o нравится это.
  7. Yurik-o

    Yurik-o Нерд

    Кстати настройки ПИД очень индивидуальны и зависят от многих параметров так что будьте внимательны
    я в данное время работаю над прошивкой в которой оперативно можно будет подстраивать ПИД параметры

    методики подбора параметров есть в интернете

    Может кто знает и подскажет: у меня через некоторое время дисплей перестает показывать, только экран светится белым и все остальное работает
     
    Последнее редактирование: 20 ноя 2017
  8. xake

    xake Нерд

    залейте скетч часиков, например, и посмотрите, может чип экрана перегревается
    http://www.belajarduino.com/2016/06/membuat-jam-analog-dengan-arduino-uno.html
     
    SOLOway нравится это.
  9. Yurik-o

    Yurik-o Нерд

    Странное дело
    блок питания ровно 5В
    у дисплея моего питание 5В и на подсветку 3,3В (в принципе даже 5В) и на борту стоит стаб 5В->3,3В
    такой, https://w ww.ebay.com/itm/401087406846, не реклама, но без тача
    поставил диод на питание и пропало пропадание (масло масляное) изображения, по крайней мере
    несколько дней по несколько часов (4-5) работает нормально
     
  10. xake

    xake Нерд

    может стаб 5В->3,3В и отключался по перегреву
     
  11. Yurik-o

    Yurik-o Нерд

    кз-хз
     
  12. dr-baks

    dr-baks Нерд

    Извините пожалуйста,но я не могу понять как кнопки по такой схеме будут работать.Будет работать только одна right и если подать напряжение на ad0 будет всегда 1.И ещё подскажите пожалуйста как лучше прикрепить термопары.Мне пришли нагреватели без встроенных термопар хотя заказывал со встроенными.
     
  13. vector99

    vector99 Гик

    По сути это схема делителя напряжения.
    Vcc +5в
    Gnd земля
    Ad0 при НЕнажатой кнопке = +5в,
    При нажатой Right = 0, (я бы сюда добавил резистор, по данной схеме)
    При нажатии других кнопок, напряжение на Ad0 будет от 0 до 5вольт.
    Контакт Ad0 подключается к аналоговому пину ардуины. Далее АЦП ардуины преобразует входящее напряжение с контакта Ad0 в цифровое значение(от 0 до 1023).
    Считывая (val = analogRead(analogPin); ) значение с пина мы можем различить какая кнопка нажата!
     
  14. dr-baks

    dr-baks Нерд

    Понятно. Но в скейче написано так
    byte pinA = A0;
    byte pinB = A1;
    byte pinBTN = A2;
    #else
    byte UpSwitchPin = A0;
    byte DownSwitchPin = A1;
    byte OkSwitchPin = A2;
    #endif
    byte CancelSwitchPin = A3;
    Куда подключать остальные контакты.
     
  15. vector99

    vector99 Гик

    Я сделал так:
    Код (C++):
    //--------настройка кнопок управления------------------------------------

    //#define A_PINS_BASE 100 // номер с которого начинается нумерация наших "псевдо-кнопок".

    #define PIN_RIGHT 100
    #define PIN_UP 101
    #define PIN_DOWN 102
    #define PIN_LEFT 103
    #define PIN_SELECT 104
    struct A_PIN_DESC{ // определяем  структуру которой будем описывать какое значение мы ожидаем для каждого псевдо-пина
       byte pinNo; // номер пина
       int expectedValue;// ожидаемое значение
    };
    A_PIN_DESC expected_values[]={ // ожидаемые значения для псевдо-кнопок
       { PIN_RIGHT,202},
       { PIN_UP,429},
       { PIN_DOWN,298},
       { PIN_LEFT,563},
       { PIN_SELECT,758}
    };
    #define A_PINS_COUNT sizeof(expected_values)/sizeof(A_PIN_DESC) // вычисляем сколько у нас всего "псевдо-кнопок" заданно.
    #define A_POSSIBLE_ABERRATION 50 // допустимое отклонение analogRead от ожидаемого значения, при котором псевдо кнопка считается нажатой
    bool digitalReadA(byte pinNo){

      for(byte i=0;i<A_PINS_COUNT;i++){ // ищем описание нашего всевдо-пина
         A_PIN_DESC pinDesc=expected_values[i];// берем очередное описание
         if(pinDesc.pinNo==pinNo){ // нашли описание пина?
            int value=analogRead(A0); // производим чтетине аналогово входа
         
            return (abs(value-pinDesc.expectedValue)<A_POSSIBLE_ABERRATION); // возвращаем HIGH если отклонение от ожидаемого не больше чем на A_POSSIBLE_ABERRATION
         }
      }

      return LOW; // если не нашли описания - считаем что пин у нас LOW

    }

    //Назначаем пины кнопок управления
    int upSwitchPin = PIN_UP;
    int downSwitchPin = PIN_DOWN;
    int cancelSwitchPin = PIN_LEFT;
    int okSwitchPin = PIN_SELECT;

    //состояние кнопок по умолчанию
    int upSwitchState = 0;
    int downSwitchState = 0;
    int cancelSwitchState = 0;
    int okSwitchState = 0;
    Полную реализацию с аналоговыми кнопками можно посмотреть в прикрепленном скетче.
    Изменений минимум.
     

    Вложения:

    Последнее редактирование: 3 дек 2017
  16. Yojiq

    Yojiq Гик

    dr-baks
    кнопки также работают если их отдельно каждую подключить
     

    Вложения:

    • кнопки.PNG
      кнопки.PNG
      Размер файла:
      5,1 КБ
      Просмотров:
      1.050
  17. dr-baks

    dr-baks Нерд

    подскажите пожалуйста как лучше прикрепить термопары.
     
  18. SOLOway

    SOLOway Гуру

    Крепить, в смысле на платы как ставить? Пример
     
    xake нравится это.
  19. dr-baks

    dr-baks Нерд

    Как прикрепить их к нагревателям верхнему и нижнему.
     
  20. SOLOway

    SOLOway Гуру

    dr-baks, а зачем к нагревателям? У вас задача нагреть плату и нагреть чип, а температуру самих нагревателей контролить конечно можно, чтоб не выходили за критические температуры, но иного смысла в таком контроле не вижу. Хотя LDZ именно на НИ термодатчик закрепил (у него кварцевые трубки на НИ) и объявил, что не будет помогать тем, у кого датчик не там, а на или под платой (народ не испугался тогда, и ставит и на и под плату, и всё нормально настраивают). Или я снова не понял суть вашего вопроса и вы имели ввиду конструкцию прижимов для датчиков...
     
Статус темы:
Закрыта.