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

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

  1. Dmitrysh

    Dmitrysh Гик

    И да, интересно.
     
    Lenar и SOLOway нравится это.
  2. Dmitrysh

    Dmitrysh Гик

    Я предлагаю такой вариант скетча.
    1. Верх включится по нажатию ВПРАВО дольше 3 сек или по достижении на термопаре 120 градусов
    2. термостол включается при старте пайки и выключается после неё пином А0(сколько угодно раз, активный уровень низкий)
    3. после окончания профиля включается охладитель платы пином А5(выход на реле вентиляторов охлаждения)
    4. выключить охладитель платы можно из режима IDLE клавишей CANCEL
    5. включить охладитель платы из режима IDLE можно коротким нажатием клавиши ВПРАВО(это на случай если вы прервали профиль, но плата горячая и вам необходимо её по-быстрому охладить или просто жарко и охладитель используется как вентилятор:))
    6. Теперь профиль хранится в виде структуры, что уменьшает занимаемое скетчем место и сохраняет EEPROM от лишних перезаписей.
    7. параметры сохраняются в EEPROM после каждого нажати OK, т.е если вам нужно поменять один параметр не нужно пролистывать весь список до конца - просто меняем параметр жмём ОК и CANCEL.
    Немножко оптимизировал код и графику для "расчистки места работы".
    Не забывайте запомнить параметры ваших профилей и настройки ПИД, ибо по способу хранению параметров старый и этот скетч не совместимы(структуры и прямая запись).
    Скетч компилировался под mega168, но будет работать и на mega328 и на других тоже будет.
     

    Вложения:

  3. NikolayGraff

    NikolayGraff Нуб

    спасибо за проделанный труд ,думаю не только я вам благодарен а вся аудитория данной группы,,,,,у меня есть пару замечаний,после нажатия кнопки пуск пайки с ПО пишет SYNC и все ...добавьте в строчку
    Код (C++):
    #ifndef no_pc
          sprintf (buf, "OK%03d%03d%03d%03d%03d\r\n", int(Output1), int(Output2), tc1, tc2, int(profileName)); // график ПК
         
    #endif
    Serial.print(buf);
    покрайне мерии я так делаю ,у меня нет дисплея и все управление идет с ПК и эта строчка помогает мониторить график
     
  4. NikolayGraff

    NikolayGraff Нуб

    вот мой скетч,особо не ругайтесь я не спец в программировании ,закоментил работу с дисплеем и добавил Serial.print(buf); в ту строчку что написано выше.....может кому пригодится...и кстати у меня arduino nano
     

    Вложения:

  5. Dmitrysh

    Dmitrysh Гик

    Так происходит если нет детектора нуля или он не работает.
     
    SOLOway нравится это.
  6. Dmitrysh

    Dmitrysh Гик

    Вот релиз скетча который вообще не использует экран и клавиатуру, всё управляется с ПК. Единственное, что оставил, это возможность подключения кнопки CANCEL, на всякий случай.
     

    Вложения:

    • sketch_PC.ino
      Размер файла:
      25,7 КБ
      Просмотров:
      148
  7. NikolayGraff

    NikolayGraff Нуб

    подскажите а как это исправить?и почему детектор нуля не работает? да только что заметил что в void Dimming() есть Serial.println(buf);
     
  8. NikolayGraff

    NikolayGraff Нуб

    спасибо,намного легче разбирать код)))
     
  9. Dmitrysh

    Dmitrysh Гик

    А он у вас есть? К какому пину подключен? Я вылаживал небольшой скетч для проверки детектора.
     
  10. NikolayGraff

    NikolayGraff Нуб

    вот скетч ваш я подредактировал под свое железо ,,,,,сам диммер у меня такой , с этого димера я беру детектор нуля и после подаю сигнал на 3 пин для открытия симистора получается типа как ssr реле...подскажите где у меня ошибка?[​IMG]
     

    Вложения:

    • sketch_PC.zip
      Размер файла:
      6 КБ
      Просмотров:
      29
  11. Dmitrysh

    Dmitrysh Гик

    Вот эту строчку
    Код (C++):
     attachInterrupt(0, Dimming, RISING); // настроить порт прерывания(0 или 1) 2й или 3й цифровой пин
    перепишите вот так, если у вас детектор на 3-ем пине
    Код (C++):
     attachInterrupt(1, Dimming, RISING); // настроить порт прерывания(0 или 1) 2й или 3й цифровой пин
     
  12. NikolayGraff

    NikolayGraff Нуб

    у меня детектор нуля на 2 пине,,,а на 3 пине лежит moc3052....а разве инициализировать 2 пин не надо???
     
  13. NikolayGraff

    NikolayGraff Нуб

    походу у
    подскажите где вы писали как проверить детектор нуля? походу у меня он не работает а раньше работало через TimerOne
     
  14. Dmitrysh

    Dmitrysh Гик

    а вы пишите
    Ну да ладно. Значит вход детектора у вас на 2-ом пине, значит строчку не меняем. Пин 2 не нужно инициализировать, это вход внешнего прерывания, я думаю attachInterrupt сам всё делает. Залейте скетч из поста #2591 и посмотрите в мониторе порта что там у вас есть.
     
  15. NikolayGraff

    NikolayGraff Нуб

    Код (C++):
    Zero cross tester
    12
    9
    10
    9
    10
    10
    9
     
    вот что выдал монитор
     
  16. NikolayGraff

    NikolayGraff Нуб

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

    Dmitrysh Гик

    да работает, значит и весь скетч должен тоже работать
     
  18. NikolayGraff

    NikolayGraff Нуб

    пардон,нашел я в чем собака порылась как говориться....я когда проводил испытания не включал сеть 220вольт,получается прерывание не срабатывало и поэтому небыло вывода на пк
     
  19. HAR

    HAR Нуб

    Dmitrysh и всем кто помогает нам БОЛЬШОЕ спасибо.
    у меня такая проблемка.скетч от поста #2400
    работает.а вот от поста #2866 пишет error датчика ВИ.
     
  20. NikolayGraff

    NikolayGraff Нуб

    Народ скиньте свои профиля, параметры пид и, т, думаю многим начинающим это пригодится