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

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

Статус темы:
Закрыта.
  1. У меня ПИД (я ранее предлагал) отрабатывает нормально:). Для тех кому интересно добавлю - видел предложения кажется ваше Dmitrysh чтобы выход был в % 0т 0 до 100%. В коде как раз это реализовано out_min = 0, out_max = 100. Значение d_ctl у себя ставил 100, чтобы уже на полпути мощность начинала падать прцентов на 20-25%. И не было перелетов. Попробуйте у себя сделать, код более емкий по расходу памяти но функционал хороший
     
  2. SOLOway

    SOLOway Гуру

    SNMar4enko помогите, пожалуйста, расшифровать эту вашу фразу. Т.е. первая это не станция, а блок мозгов и управления нагревателями? А какими нагревателями? А какой скетч использован вами и схемы силовой и ZCC (если был применен).
    В теме стало очень много теории, думается, это выведет её в топ на форуме. Однако в теме присутствуют уже несколько веток по которым развивается скетч, за который взялся автор темы vector99.
    После прочтения недавних десятка страниц каша в голове образуется...
     
  3. SNMar4enko

    SNMar4enko Нерд

    обычная станция - я когда писал об этом то разделял только на 2 вида станций - все в одном, или отдельная коробочка контроллер с регуляторами и термодатчиками. Отдельно только нагреватели. В первом варианте остановился на регуляторе BTA41-600 и MOS3023. Скетч остался из тех времен 2.0.5

    По поводу каши в голове - с этим нада переспать. А вообще наука заканчивается там где нет измерений. Пилить скетч не производя реальный измерений - действительно заводит в тупик.

    - расчетное, таймер работает на 50 микросекундах, 200 периодов будет 10 милисекунд - то есть полупериод сети, а 220 - при них наверняка симмистор не включится, по крайней мере в требуемом для включения полупериоде сети. Да там еще присутствует 16 - так сказать задержка включения. Вввел для того чтобы сократить ошибку детекции нуля
     
    SOLOway нравится это.
  4. revolover

    revolover Гик

    Решил отписаться, и очистить вашу совесть) Открыл спор на Али относительно экрана, вернули сумму, которую я потратил на покупку нового))) Долго спор висел, но главное результат. Новый дисплей наподходе.

    P.S.:
    уже стопка ноутов собралась ждут перепайку... Как сделаю станцию - будет на чем потестить.
     
  5. revolover

    revolover Гик

    И еще одно: не вижу смысла искать причины бед, которых нет ввиду отсутствия собранного устройства.
    Нужно так:
    -пайка (слежение за процессом по всем параметрам)
    -анализ отклонений
    -поиск причины
    -устранение
    -пайка...
    и так по кругу, пока не выйдет идеал.

    Чтобы мониторить процесс в идеале, Нужно составляющие ПИД по отдельности выводить на экран или ПК. По их сумме, то есть выходной мощности - судить не реально.

    И кто подскажет, китайцы реболленные чипы торгуют со свинцом или без свинецовые тоже могут встретиться?
    И еще такой вопрос... как олово отличить от припоя ПОС? Тест на хруст при изгибе не катит - куски массивные
     
  6. Dmitrysh

    Dmitrysh Гуру

    А вы как думаете мы делаем?
    И что вам даст знание составляющих ПИД? И как их осознать, если они меняются 10 раз в секунду?
     
  7. Dmitrysh

    Dmitrysh Гуру

    Я искренне за вас рад, скоро в нашем полку прибудет.
     
  8. revolover

    revolover Гик

    Я собственно не конкретизирую на личностях, но мне кажется советчиков набежало... которые лишь теоретики)
    Можно теперь запутаться в какую сторону двигаться.

    А про составляющие не просто так говорю, разработанные мной устройства как минимум "И" составляющую выводят. Именно по ним точные коэффициенты подбираю, выхожу в температуру без перелетов. Быстро меняются - вести лог или усреднять(но первое лучше). И всё-таки нужно пробовать более медленный период ПИД.

    Кроме этого! Всегда делаю ручную коррекцию "И" составляющей "налету". Просто кнопочками в процессе + и -. Это элементарно, зато позволяет понять, какое значение будет соответствовать поддержанию необходимой температуры и всегда можно подстроить налету в случае недогрева или перелета.

    Зная необходимое значение "И" и опираясь на текущее максимальное при выходе на температуру можно легко понять как изменить кИ или кП.
    Снижая кИ уменьшаем перелет, аналогично увеличив кП (в разумных пределах. В конце получим более быстрый набор, и "И" меньше насуммирует).
     
  9. bamik

    bamik Нерд

    Реболленые чипы на бессвинце от китайцев не видел. Но опыт маленький. А отличить олово от припоя можно на глаз. Олово не окисляется. Оно всегда белее припоя и блестит. А припой серый. Только несколько минут после затвердевания он блестит. И если его ничем не покрыть, то быстро мутнеет. Это уже из большого опыта. Еще из детства помню банку химически чистого олова у отца. Сколько оно ни лежало, капельки оставались блестящие. В те времена кастрюлям еще пропаивали прогнившие днища...
    И олово прочнее припоя. Если на него надавить чем-либо острым, то след останется менее глубоким, чем на припое. Точнее, почти не останется.
     
  10. Dmitrysh

    Dmitrysh Гуру

    Расскажите про ваши устройства поподробнее и если можно подробный алгоритм настройки.
    Что-то никак с медленным ПИД не получается добиться приемлемых результатов.
    А у меня получается уменьшить перелет только увеличивая кД.
     
  11. revolover

    revolover Гик

    На мой взгляд на время настройки лучше не использовать Д вообще, и возможно и после.
    У вас при нулевом интеграле тоже перелеты? Если так, то однозначно П снижать, должен быть однозначный приличный недолет без И!!! Если долетает снижать П.
    Подробно про устройства рассказывать долго, я ранее говорил, что самый серьезный проект был "автоматика для пивоварения" успешно отстраивался, как для 2кВт чайника с 0,5 л воды, так и на 100 литров с ТЭНом 3кВт.
    Другой интересный проект был - холодильник с ПИД. Он и сейчас стоит и работает периодически. в нем вообще период ПИД был около минуты, хотя я период везде в настройки выносил, просто такой выставлял. Сам холодильник аммиачный бескомпрессорный. в нем были гигантские перелеты около 2х градусов))) Но это было не критично и лишь при пуске. Далее работал с отклонениями температуры в плюс и минус на 0,1 градуса. При долгих и сильных просадках напряжения в сети мог и на две десятых уйти. И ПИД я в нем почти не настраивал. чуть скорректировал пару раз и всё. Остальные проекты были больше для экспериментов и не получили развития.
     
  12. revolover

    revolover Гик

    Ах да, алгоритм... нет его. Просто формула ПИД так въелась тогда в мозг, что налету понимал, что и как считается, что лишнее, чего не хватает и отстраивал. Уверен, что и сейчас бы настроил неплохо, но нужно видеть цифры
     
  13. Dmitrysh

    Dmitrysh Гуру

    Нет, не дотягивает 6-7 градусов при уставке 100,при этом средняя мощность на нагреватель в районе 30%. кП=10.
     
  14. Я бы не поднимал снова свой вопрос, но сделаю это на последок. Читаю периодически сообщения и раньше замечал предложения заменить на более простой алгоритм ПИД. Смысл предложенного вами - вычисления делать с целыми числами (bamik). Да и Dmitrysh меня тогда поправил насчет большого расхода памяти следствие вычислений с переменными double. Посмотрите этот вариант, я не сомневаюсь что вы меня компетентнее в этих вопросах, поэтому и попросил оставить свой отзыв.

     
  15. Dmitrysh

    Dmitrysh Гуру

    Я смотрел этот вариант кода, в принципе тоже что и у нас. Возможно несколько меньше, но я сомневаюсь. Всё равно 6 float переменных. У нас тоже 6 double. В ардуине float=double по размеру. Туда в код нужно ещё добавить проверку на период вычисления.
    И ещё есть один небольшой нюанс. Этот код в том виде как он есть нам не совсем подходит из-за "зоны пропорциональности". У нас температура должна расти с определённой скоростью, а в этом коде до зоны пропорциональности нагреватель "валит" на 100%. Можно конечно поправить, но это дело вкуса. А вообще код не плохой.
     
  16. Dmitrysh

    Dmitrysh Гуру

    Это очень хороший результат. Мне такого наверное не достичь.
    Вот как у меня при Kp=10 Ki=0.1 Как бы и держит и при этом есть вылеты 97-103 но не постоянно.
     

    Вложения:

    • pid-i1.jpg
      pid-i1.jpg
      Размер файла:
      233,4 КБ
      Просмотров:
      530
  17. Ошибаетесь не 6, а 4
    Код (C++):
    uint8_t setTemp1 = 0;
    float tc1 = 0.0;
    uint8_t outputPower1;
    float kp1,ki1,kd1;

    Спасибо за отзыв. Зону пропорциональности можно делать "заданная - 10 гр" то есть для 150 примерно 140 гр, тогда порядок

    Отвечу по правде я до 100 градусов грел лампами зону так и ставил 100, на градусах 50 мощность начинала падать, и практически вышла на уставку:)

    Экономия памяти тоже вышла существенная больше 5% и флеш и озу, подумайте
     
  18. Dmitrysh

    Dmitrysh Гуру

    Давате посчитаем
    Код (C++):
    (float temp, float ust)
    static float i = 0;
    static float ed = 0;
    float e, p;
    float d;
     
    Даже семь вижу
     
  19. revolover

    revolover Гик

    Вот имеете уже некоторые цифры. при 93 градусах необходимая мощность поддержания = 30%
    Получается , что за время набора этой температуры И составляющая должна возрасти до 30. Но учтите, что И тоже внесет свой корректив во время роста до данной температуры, то есть отталкиваться нужно от чуть меньшего времени, чем с одним П. Если бы вы видели И на экране, стало бы яснее как ее корректировать. допустим к моменту выхода на эту температуру она = 40, значит на 25% нужно снизить кИ. Всё это исходит из того, что П составляющая при температуре равной уставке равна 0
     
  20. Можете попробывать kp сделать uint8_t, его по сути целым числом задают

    Либо
    Сделать их uint8_t, но будет в ущерб точности

    Код (C++):
    float e, p;
       float d;
    Я думаю что код можно оптимизировать
     
Статус темы:
Закрыта.