Здравствуйте уважаемые радиокоты! Пытаюсь усовершенствовать алгоритм ПИД-регулирования, в конкретном случае для стабилизации температуры нижнего подогревателя плат. В сети есть готовые проектики и несколько библиотек ПИД-регулирования, и даже есть онлайн симуляторы для подбора коэффициентов. Но в моем случае ни один из алгоритмов почему-то не подходит. В моем случае слишком большая инерционность подогревателя. Возможно я никак не могу совладать с коэффициентами, либо нужно добавить еще один коэффициент, который будет учитывать большую инерционность. Вроде бы коэффициент Kd должен отвечать за это, но с ним только еще больше идет "раскачка". ПИД хорошо подходит для быстрых регулирований, моторчик станка, или квадрокоптера, а вот с нагревателем, у которого большая инерционность - не очень подходит. Вернее устаканивание будет длиться час не меньше, вместо пол минуты.... В общем, суть дополнительного коэффициента, по моему мнению, должна заключаться в анализировании инерционности и мгновенной подстройке обычного ПИД-регулирования. Я вижу это так: контроллер начинает (согласно заданным ПИД-коэффициентам) выдавать сигнал на нагрев, и с датчика температуры анализирует разбег запаздывания. Проще говоря, дали максимальный сигнал, и как только температура начала возрастать, сразу же отключить сигнал, и проанализировать, через какое время температура перестанет возрастать, а потом уже учитывая эту задержку заблаговременно отключать/ включать ПИД-контроль. А то получается, что задаю температуру, например 40 градусов и сигнал на нагреватель шпарит безостановочно ровно до достижения 40 градусов, потом отключает сигнал, а нагреватель постепенно раскаляется аж до 100 градусов. Мне то понятно, что надо было заранее отключать сигнал нагрева, а вот ПИД-у почему то это неведомо. Кто что думает на счет этого? Может в коде или в бибилиотеке подправить какую-то временную составляющую (dt какую-нибудь)? Или реально нужен для этого еще один коэффициент? PS: Не очень силен в программировании, только начинаю знакомиться с СИ++. Если нужно, могу скинуть код, с которым я работаю.
"Автоматчики" по сему поводу не думают, а знают - ПИД регулятор на МК для простого нагревателя можно, но не нужно. Для подобных случаев есть принцип "с предварением" по регулированию. И реализация сего - "два гвоздя". Учите матчасть. И ежели оченно хочется, то именно данный принцип можно реализовать и программно на МК, но зачем такие сложности?
Что за принцип с "предварением"? Не могли бы Вы поподробнее об этом принципе? Я выбрал способ на микроконтроллере в целях освоения языка СИ++ и моделирования с помощью ардуино. Ну и как раз конкретная задача имеется. В общем, Вы хотите сказать, что все-таки обычного ПИД-регулирования безо всяких моих дополнительных коэффициентов будет достаточно?
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Вроде нашел пару моментов, которым стоит уделить внимание: 1) Период (шаг воздействия и считывания). 2) Оказывается коэффициенты можно делать и отрицательными. А я это вообще упустил)) Радиокоты, спасибо! Как всегда выручаете! Попробую на этот раз с осознанием сути дела поиграть с коэффициентами.
Олегыч1, а чем вы собрались паять при 40 град., галлием? Попробуйте выставить нормальную температуру низа 160 град., может и проскакивать не будет. Пользуюсь REX-C100 (сделан на MG82F6D17AT20, типа 8051), доволен. Внутри есть 5ти-контактный технологический разъем для коннекта с контроллером (вернее отверстия под него), но я не знаю, чем и как это сделать, и не закрыт ли он на чтение. vlasovzloy, а у вас какие рексы?
Что за принцип с "предварением"? Не могли бы Вы поподробнее об этом принципе?
Могу. Но полагаю, что мне не обязательно перепечатать, что вам можно найти и прочитать самому? Вот когда дойдёт до реализации того, что вы поняли и с без МК, тогда можно и поговорить. Кстати это ещё имеет и название - "изодром" и для простых случаев часто самонастраивающийся.
Олегыч1, а чем вы собрались паять при 40 град., галлием?
Не, просто очень долго ждать, если проскочит температуру. Неудобно подбирать коэффициенты. В общем не получается нормально подобрать. Первый разогрев всегда проскакивает за 100 градусов, при настроенных на 40. А потом уже при остывании система легонько поддает, и пролетает уже градусов на 5 выше заданной. Но первый пролет я не знаю уже как нивелировать. Так и хочется добавить в код: первый разогрев работает 5 секунд, а потом наглухо отключается на 30 секунд, а далее вступает режим работы ПИД...
Один датчик на нагревателе (максимальная допустимая), второй - на рабочей поверхности. Нагревателю ставим рабочую температуру чуток выше температуры поверхности панели. Далее подбираем автоматическое выравнивание...
BOB51, вариант хороший, но важно сделать только с одним датчиком. Я то понимаю, что набор температуры происходит с большим запозданием примерно в 10-15 секунд, Почему способ ПИД этого никак не поймет?
Потому что ПИД - это некий принцип регулирования, а не как вы его себе представляете в виде волшебного: "автоматическое выполнение (и наверное до интуитивного понимания ) ваших хотелок". Ладно вы не хотите что-то там читать, но пред выбором ПИД регулятора, хотя бы выясните что воно такЭ и для чего. И никакие коэффициенты именно в ПИД регуляторе вашу задачу не решат. Он не умеет подстраиваться подо что-то, только чёткое выполнение заложенного принципа. Всё!
И никакие коэффициенты именно в ПИД регуляторе вашу задачу не решат. Он не умеет подстраиваться подо что-то, только чёткое выполнение заложенного принципа.
Сам регулятор ПИД конечно нет. Но программа автонастройки ПИД (autotuning) может помочь. Правда, эти программы умеют делать очень и очень немногие. По крайней мере я как-то попытался попользоваться несколькими такими автотюнингами с github и получил полнейший бред.
Олегыч1, если у Вас проблема только с запуском и нет проблем с рабочим процессом, то вместо танцев с бубнами с подбором коэффициентов ПИД удобнее использовать коррекцию процесса первоначального нагрева. Для этого достаточно снять несколько кривых разогрева и сформировать на их основе соответствующие таблицы регулирования при запуске.
Потому что вы идёте не правильным путём: вместо предварительного вычисления коэффициентов и их уточнения в процессе работы, вы пытаетесь тупо подобрать их. Ваша неудача типична и описана во всех пособиях по настройке ПИД.
Выведите 5 графиков: температуру, управляющее воздействие, П, И и Д составляющие, тогда, возможно, станет понятно, что не так с регулятором.
Ёжли охота с одним датчиком работать то обычным является использование алгоритма с промежуточными контрольными точками. Добегаем до первой на полной мощности нагревателя, сбрасываем мощность на половину и выдерживаем стабилизацию этой точки. Затем уже с половинной мощностью идем к следующему значению. И так до полной стабилизации режима уже с рабочей температурой.
Зависит от термоинерционности системы. Т. Е. На сколько градусов будет "проскок" после остановки в контрольной точке. Затем какой размах при стабилизации (пара циклов отключения) и по полученному идем дальше. Собственно можно ограничиться величиной "проскока" плюс десяток градусов как первый останов. Подбор по данным после испытаний конкретного нагревателя и плиты.
ART_ME Для этого достаточно снять несколько кривых разогрева и сформировать на их основе соответствующие таблицы регулирования при запуске.
Дорогой товарищ и прочие иже с вами "изобретатели велосипедов" - уже писАл, для подобного это всё уже изобретено и ещё в безМКовую эру. А для описанного нагревателя тем более - МК там нафик не нужна, всё значительно (даже до смешного) проще.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения