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

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

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

    SOLOway Гуру

    А может быть все-таки не в коде ошибка.... А в силовой части + плата ZCC? Например, встроенный в твердотелку ZCC отрабатывает не синхронно с платкой ZCC - это раз; контроллер шпарит кучу импульсов в SSR, а та пропускает лишь один, и тот только в момент "нуля" - это два... Можно проверить заменив SSR оптроном PC817 с мосфетом, с нагрузкой в виде лампы накаливания, только не знаю что в этом случае делать с платкой ZCC....
     
  2. Dmitrysh

    Dmitrysh Гуру

    Нет, по электронике все нормально. У меня MOC3023+BT139, на детектор нуля диодный мост+PC817. Силовая часть работает четко. Проблема в коде. Если вернуть Ки и Кд в ненулевое состояние, то все хорошо отрабатывает.
     
  3. bamik

    bamik Нерд

    Нет. Если смотреть на график профиля, то он очень похож на график функции -aX^2+bX-c. Где a - скорость нарастания, b - время процесса и c - уставка. Ну или примерно так. Надо математику вспоминать. Но смысл тот. Задавая эти коэффициенты мы получим желаемую температуру в любой момент времени. Если система сильно инерционная, например, обогрев воздуха в помещении, то для ПИДа достаточно подавать только конечную температуру. Но мы стремимся к менее инерционной системе. И тут ПИД работает не совсем корректно. Если искуственно его не ограничивать, то он может зажарить плату. Что у многих и получалось. Для чего разбивают термопрофиль на несколько шагов? Аж до 9, например? А для того, чтобы на каждом отрезке ПИД работал как с инерционной системой. Но приходится делать кучу настроек для каждого этапа. Так не проще ли это предоставить программе? Мы задаем желаемый график, функцию повышения температуры во времени. Программа разбивает ее на некоторое количество равных по времени шагов. Например по секунде, но тут нужно экспериментировать, т.к. у каждого разные нагреватели. На лампах период будет короче, на керамике длиннее. Каждой температуре будет соответствовать свой диапазон допустимых мощностей, точнее ПИД сам не допустит превышение мощности, ведь ошибка будет минимальна. Поэтому мощность будет повышаться плавно. При шаге в 1 секунду даже первичное включение нагревателя на 100% мощности не навредит плате, она за секунду не успеет нагреться до опасной температуры, а вот ошибка резко уменьшится. Значит, и мощность резко упадет.
     
  4. bamik

    bamik Нерд

    На счет детектора нуля. А нужно ли это? Зачем нам фазовое управление? Это дополнительные помехи в сеть и нагрев симистора. Не лучше ли будет пропускать полуволны? За секунду у нас 100 полуволн. Т.е. можно регулировать мощность от 1% до 100% в секунде. Единственная проблема - это равномерное пропускание полуволн. Т.е. 50% - это не 11111111110000000000, а 10101010101010101010. Понятно объяснил? Но все решаемо.
     
  5. bamik

    bamik Нерд

    Зачем контроллер шпарит кучу импульсов? Симистор же не транзистор, он по первому импульсу откроется, а закроется только в конце полупериода. ZCC, встроенный в твердотелку, при фазовом регулировании даст либо 100% мощности, либо 0. Т.к. симистор будет открываться только в том случае, когда импульс на открытие будет совпадать с переходом через 0, т.е 100% мощности. В остальных случаях симистор будет закрыт, т.к. к следующему переходу через 0 импульс на открытие будет снят.
     
  6. bamik

    bamik Нерд

    Вы совсем не поняли мою идею. Идея в том, чтобы рассматривать процесс в короткие промежутки времени, соответствующие инерционности системы. Это может быть секунда, а может быть минута или 23 секунды, например. Главное, чтобы ошибка была не настолько велика, чтобы требовалось сильно топить печь. Требуется давать столько тепла, сколько нужно в данный момент. Например, температура платы 50 градусов. Если уставка будет 170 градусов, то ошибка получается в 120 градусов. И ПИД нагреет нагреватель до 600 градусов, может быть. Затем ошибка будет уменьшаться, мощность падать, , в конце концов, температура платы выйдет на 170 градусов. При этом нагреватель будет с температурой 220 градусов. (Надеюсь, что понятно, что это из головы величины...) Но проблема в том, что легко нагреваемые элементы на плате за то время, что нагреватель грел с температурой в 600 градусов, сгорят к ...
    Если же мы будем рассматривать процесс посекундно, то получим, что первая уставка будет не 170 градусов, а 51. И даже если ПИД даст те же 600 градусов, то через мгновение снизит до безопасной температуры. Сколько раз в секунду ПИД принимает решение? Если больше 10, то норм.
     
  7. bamik

    bamik Нерд

    Собственно, ПИД регулятор решает проблемы по управлению инерционными системами с кучей факторов, не подлежащих обсчету. У нас система не настолько инерционна, а окружающая среда заставляет делать ее еще менее инерционной. Но инерция есть. И если рассматривать время всего процесса пайки, то получаем неинерционную систему, а если рассматривать короткие промежутки времени, то система достаточно инерционна.
     
  8. vector99

    vector99 Гик

    Именно это и реализовано в алгоритме Брезенхема
    Код (C++):
     //тип переменных pwr - int, er- int, reg- int, out- boolean
    void OutPWR()
    {
       reg = pwr + er; //pwr- задание выходной мощности в %, er- ошибка округления
         if (reg < 50)
           {
             out=0;
             er = reg ; // reg- переменная для расчетов
           }
              else
            {
              out=1;
              er=reg-100;
            }
    digitalWrite(13,out);//пин через который осуществляется дискретное управление
    }
    Нашол код здесь::http://arduino.ru/forum/programmirovanie/algoritm-ravnomernogo-raspredeleniya
     
  9. bamik

    bamik Нерд

    Отлично!
     
  10. revolover

    revolover Гик

    Приехала ардуинка с экранчиком, на которую мне ссылку дали, да ток у меня вот такой косяк выходит... не ту библиотеку подключаю?
     

    Вложения:

  11. Dmitrysh

    Dmitrysh Гуру

    Вы не совсем вникли в суть процесса, не все так плохо. Смотрите: плата 50градусов, уставка 170, ошибка 120. Первым на ошибку реагирует пропорциональная составляющая - П со своим коэффициентом Кп. Если мы зададим Кп=0,5, то ПИД подкинет нам 120*0,5=60(%) мощности. Играя с Кп можно получить любой отклик системы.
     
  12. Dmitrysh

    Dmitrysh Гуру

    Ну вообще у нас 100мс
    Код (C++):
    myPID1.SetSampleTime(100);
    Это 10раз в секунду. А толку, если мы температуру получаем 1 раз в секунду.
     
  13. Dmitrysh

    Dmitrysh Гуру

    А разрешение у него какое? не 320*240 случаем. Похоже что так, а у нас 480*320
     
  14. revolover

    revolover Гик

    Да,да тут много думать не нужно чтобы понять:mad:
    Послушал тут подсказки (((((((((
    Чего мне теперь делать с этой фигнёй...:mad:
     
  15. Dmitrysh

    Dmitrysh Гуру

    Ну как вам сказать, не инерционная у нас система. У нас(не у всех) очень даже инерционная система, особенно у кого керамика. Там время отклика не секунды даже, а десятки секунд. У меня, допустим верх керамика, грузим на 100%, а он потиху потиху, ставим на 0% а он как шпарил так и шпарит. Вы попробуйте вместо нагревателя утюг навесить, вот так примерно по инерционности он и будет. Поэтому-то нашему ПИДу и тяжко так получается. Зато низ у меня галоген - "приятный" такой мягкий отклик. А ещё я им иногда лицо грею:).
     
    SOLOway нравится это.
  16. Dmitrysh

    Dmitrysh Гуру

    Переписать скетч в другое разрешение, да, кто-то уже кажется делал. Поищите в теме.
     
  17. Dmitrysh

    Dmitrysh Гуру

    Это продавец виноват, он не указал разрешения. Можете пока на этом поработать, а позже закажете новый.
     
  18. revolover

    revolover Гик

    Dmitrysh
    Заглядывал я в скетч, править много, графика для меня нова, как и сама ардуина, а вот времени в обрез(
    Потому изначально помощи и попросил у форумчан, надеялся на проверенную инфу. Заказал всё одним махом. И встал похоже процесс. И из бюджета я с закупками уже вылез. Короче в ящик походу всё надолго, поищу конечно скетч под такой, вдруг повезет и хоть что-то да будет
     
  19. Dmitrysh

    Dmitrysh Гуру

    Да был такой, я помню. Может интерфейс немного другой. На 8 странице скетч под такой экран как у вас, только под arduino pro v3, если не ошибаюсь. Компилируйте под mega2560, должно все работать. Только не забудьте пины переназначить.
     
    Последнее редактирование: 4 май 2018
  20. Dmitrysh

    Dmitrysh Гуру

    Наиболее интересно то, что станцией можно управлять вообще без экрана, с компьютера.
     
Статус темы:
Закрыта.