ivainc1789 0 17 февраля, 2019 Опубликовано 17 февраля, 2019 · Жалоба Возникла необходимость и желание ознакомиться с ПИД регуляторами. Проблемы не заставили себя долго ждать... Предположим, нужно сделать простой регулятор для паяльника. Берем ATmega8 и определяем 16р. OCR1A для управления нагревателем. OCR1A=0 и нагреватель выключен, OCR1A=65535 и нагреватель включен на полную мощность. Естественно, программируем 16р. ШИМ. Также я сделал измерение температуры жала. Итак, каждые 8ms программа получает данные о текущей температуре, рассчитывает ПИД и определяет новое содержимое OCR1A, выдавая на нагреватель соотв мощность... А вот и проблемы: 1. Рассмотрим работу P регулятора. I и D выключены. Вроде все должно быть просто: OCR1A = OCR1A + Kp * E, где E = Tu - T; (Tu - уставка, T - текущая температура). Такая формула работает только в том случае, если T находится вблизи уставки. Т. е. задача сделать предварительный нагрев должна рассматриваться как отдельная задача... Тогда почему теория говорит о некоем смещении, которое свойственно P регулятору в установившемся режиме? Лично я его не наблюдаю! Температура у меня четко держится на уровне уставки с небольшими отклонениями на 1 градус максимум. Все соответствует вышеприведенной формуле, если преднагрев уже сделан. Если же не сделан, то имеем очень сильный "перелет" уставки, после чего все устаканивается... Вместе с тем, моя BGA паяльная станция построенная на ПИД контроллере REX100 (нижний подогрев) при выключенных I, D компонентах ведет себя несколько мудро: она предугадывает приближение к уставке, причем как сверху так и снизу и соответствующим образом управляет релейным выходом. Конечно, наверное я так тоже могу сделать, но вот вопрос - где тут заканчивается теория и начинается творчество разработчика? Где долбаное смещение? Как его увидеть? Уже потратил несколько часов, собрал макет, но есть ощущение, что теорию я не понимаю... 2. Попытки использовать интегральную (I) составляющую также ни к чему хорошему не привели. Малейшее ее влияние сильно замедляет систему и реакция на изменения температуры становится вялой. Она как бы не нужна здесь... 3. Чудо под названием D дифференциальная составляющая практически не может работать: с таким малым периодом (8ms) температура не успевает измениться значительно и соотв эта компонента если и влияет то очень слабо... Если увеличить период, то проигрываем в быстрой реакции из-за снижения частоты управления.. Итак, получается что проблема регулятора паяльника тупо вырождается в простой П регулятор с аккуратным преднагревом до уставки... И вот я думаю, прав ли я? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iliusmaster 5 17 февраля, 2019 Опубликовано 17 февраля, 2019 · Жалоба 54 минуты назад, ivainc1789 сказал: Как ваш регулятор будет отвечать на резкое охлаждение паяльника средой? Суть то в том, чтобы постоянную температуру поддерживать в условиях резких возмущающих воздействий внешней среды. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Strong 1 17 февраля, 2019 Опубликовано 17 февраля, 2019 · Жалоба Проблема в том, что Вы начинаете заходить на задачу "снизу", а надо - "сверху". Кроме того, хотя бы немного разобраться с тепловой моделью паяльника, моделью измерителя температуры, а это - динамические объекты, ну и с моделью возмущения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 26 17 февраля, 2019 Опубликовано 17 февраля, 2019 · Жалоба П отвечает (линейно) за исправление ошибки между уставкой и реальной температурой. А на станции (паяльник) должно отслеживаться еще и "быстрота" ухода, т.е. "Д". К примеру Вы паяете 0.1 г - "пике" температуры будет плавным и небольшим (за счет теплоемкости-массы жала). Если пропаиваете "медяшку" в несколько грамм, то будет резкое "пике" температуры на жале, соотв-но чтобы этот резкий переход скомпенсировать мы должны отличать плавные и небольшие уходы dT уставки от резких, когда надо сразу "нажать на газ". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SSerge 4 17 февраля, 2019 Опубликовано 17 февраля, 2019 · Жалоба 1 час назад, ivainc1789 сказал: OCR1A = OCR1A + Kp * E Это у вас получился не пропорциональный, а интегрирующий регулятор. У него статическая ошибка действительно нулевая. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Strong 1 17 февраля, 2019 Опубликовано 17 февраля, 2019 (изменено) · Жалоба 37 минут назад, k155la3 сказал: П отвечает (линейно) за исправление ошибки между уставкой и реальной температурой. +1 Причем разница (ошибка) между уставкой и реальной температурой принципиально будет, ибо коэффициент усиления ограничен, а мы усиливаем ошибку. Ошибку устраняет включение интегрирующего канала. Изменено 17 февраля, 2019 пользователем Strong Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ivainc1789 0 17 февраля, 2019 Опубликовано 17 февраля, 2019 · Жалоба То есть, если я правильно понял вышесказанное применительно к озвученным условиям задачи нужно записать так: OCR1A = Kp * E. И результат при E >= 0 напрямую записывать в OCR1A каждые 8ms, а при E < 0 (перегрев) просто держать OCR1A = 0 (нагреватель полностью выключен)? Если так, то да, будет некоторый постоянный недолет до уставки (смещение). И тогда все встает на свои места... Правильно ли я понимаю, что если включить остальные компоненты (I и D), то при E < 0 (перегрев) знак OCRp = Kp * E становится важен ибо теперь OCR1A = OCRp + OCRi + OCRd (с проверкой на границы, конечно)? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kovigor 5 17 февраля, 2019 Опубликовано 17 февраля, 2019 · Жалоба Я вам по секрету скажу - не нужен для паяльника ПИД. Релейного регулятора с головой достаточно, как показала практика. Именно его я и реализовал в моей паяльной станции. Поначалу тоже думал о ПИД, но потом понял, что релейный регулятор полностью решает мою задачу и дает перерегулирование в пределах градуса ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 26 18 февраля, 2019 Опубликовано 18 февраля, 2019 · Жалоба 17 hours ago, kovigor said: Я вам по секрету скажу - не нужен для паяльника ПИД. Релейного регулятора с головой достаточно, как показала практика. Именно его я и реализовал в моей паяльной станции. Поначалу тоже думал о ПИД, но потом понял, что релейный регулятор полностью решает мою задачу и дает перерегулирование в пределах градуса ... :) мне кажется что ОН есть, даже если "его нет", он задан "параметрически", без явной математики и вычислений. А у ТС, насколько я понял, есть желание поработать именно с математикой. Хотя для этого более подходит Matlab и прочий софт подобного назначения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tanya 4 18 февраля, 2019 Опубликовано 18 февраля, 2019 · Жалоба Уже много-много раз наблюдаю, как люди путаются в этих трех соснах. В очередной раз... от печки... C*dT/dt = P (1); T - температура, t - время, C - теплоемкость, P - мощность. Это приближение для сосредоточенной массы с теплоемкостью. Пусть мощность P=-k*(T - T0) - D*d(T - T0)/dt - I * Integral ((T - T0)dt (2), где (T - T0) - рассогласование, k - пропорциональный, D - дифференциальный, а I - интегральный коэффициенты. Продифференцируем (1) с учетом(2). Получим выражение C*T" = K*T' - D*T" +I*(T - T0) или (C+D)*T" = -K*T' +I*(T - T0) Получили уравнение гармонического осциллятора, который мы можем рассматривать, как грузик на пружинке. C+D - масса, I -жесткость, а K - вязкое трение. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ivainc1789 0 18 февраля, 2019 Опубликовано 18 февраля, 2019 · Жалоба 22 hours ago, kovigor said: Я вам по секрету скажу - не нужен для паяльника ПИД. Релейного регулятора с головой достаточно Я был бы признателен, если бы вы рассказали о вашей реализации. Потому что как показали и мои эксперименты, ПИД для паяльника не то что не нужен - просто я пока считаю, что он не работает как хотелось бы, т. к. Д компонента практически бесполезна у меня или я еще не до конца понял/настроил теорию/практику. 5 hours ago, k155la3 said: А у ТС, насколько я понял, есть желание поработать именно с математикой. К сожалению, не могу похвастаться таким желанием. Есть желание оттолкнуться от практики, чтобы понять теоретическую часть в общих чертах. Практически, как только я выполнил OCR1A = Kp * E все сразу заработало как предполагалось. И даже удалось настроить И компоненту и понять, что нужно вовремя сбрасывать интегратор. Но Д компонента пока слишком сложна в настройке: она влияет очень слабо, т. к. температура не способна (ИМХО) за 8ms сколь нибудь значительно измениться. Увеличение Д коэфф не особо помогает. Конечно, я мог бы увеличить период регулирования например до 100ms, но это же понятное дело, за такое время температура может и провалиться значительно... Пока не готов сказать, какие есть тут решения... И это при том, что реакция на эти провалы как раз и наиболее важна.... Возможно, какой нить ON/OFF метод действительно может оказаться... даже эффективнее... Сейчас на стенде паяльник T12 с Ali работает на Меге8 и сделано все пока с применением флоат переменных, картриджи к нему якобы 75Вт (верится с трудом). Уставка устаканивается довольно быстро и тут еще требуется настройка и есть идеи, но реакция на касание полигона самодельной платы (нет металлизации и внутр слоев) приводит к падению температуры на 4 градуса в течение примерно 3сек и как только отрываю от платы - идет восстановление до +3 над уставкой в течение примерно тех же 3сек. Такие результаты не могут меня устроить... 3 hours ago, Tanya said: В очередной раз... от печки... Tanya, вы как напишете, у меня сразу начинаются бессонные ночи! ))) Можно вас попросить применить (и по возможности пояснить) написанное к условиям моей конкретной задачи? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex-lab 5 18 февраля, 2019 Опубликовано 18 февраля, 2019 · Жалоба 1 hour ago, ivainc1789 said: Конечно, я мог бы увеличить период регулирования например до 100ms, но это же понятное дело, за такое время температура может и провалиться значительно... Пока не готов сказать, какие есть тут решения... Решение тут в лоб. Подобрать оптимальный период измерения, обеспечивающий требуемый уровень точности. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rx3apf 0 18 февраля, 2019 Опубликовано 18 февраля, 2019 · Жалоба 1 час назад, ivainc1789 сказал: ПИД для паяльника не то что не нужен - просто я пока считаю, что он не работает как хотелось бы, т. к. Д компонента практически бесполезна у меня или я еще не до конца понял/настроил теорию/практику. На 900-й серии затея сделать "правильный" PID-регулятор окончилась неудачей, насколько я помню (материалы можно поискать на "Радиокоте"). Подозреваю, что и с T12 тоже ничего хорошего не выйдет - термодатчик ведь все равно не на кончике жала... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Егоров 0 18 февраля, 2019 Опубликовано 18 февраля, 2019 · Жалоба Да, трудно быть программистом, работающим не по профессии. Когда-то давно столкнулся с очень неглупым парнем, молодым конструктором, которому поручили разработать экономайзер холостого хода. Чтобы двигатель автомобиля на стоянке держать для экономии бензина в режиме "вот-вот заглохну". Год бился он головой об стену, решая, как учили, системы дифуравнений. А двигатель с громадной электронной нашлепкой упорно глох. Пока ему в каком-то гараже не объяснили что поздно включать после вычислений бензонасос, когда двигатель уже заглох а бензопровод давно пуст. Можно просто снизить обороты до гарантированного минимума 900 оборотов регулировкой педали газа. И в гаражах умельцы это давно делают гаечным ключом и отверткой. Кажется, у средней руки паяльника теплоемкость такова, что можно выбросить из головы 8мс , процессоры и строить это с реакцией в 10-100 раз медленнее на основе простого релейного регулятора. Может, двуступенчатого. Вот только с датчиком температуры аккуратнее . Он должен быть быстродействующим и показывать температуру жала а не где-то возле жала. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kovigor 5 18 февраля, 2019 Опубликовано 18 февраля, 2019 · Жалоба 2 hours ago, ivainc1789 said: Я был бы признателен, если бы вы рассказали о вашей реализации. Не о чем там рассказывать, наверное. Отсчеты берутся 20 раз в секунду. Паяльник холоднее уставки ? Включаем его. Горячее ? Выключаем. Все !!! Если хотите, могу выслать исходник и проч. Но смотреть там, ИМХО, не на что. Да, паяльник - Hakko 936 с терморезистором (не с термопарой !) ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться