Продолжаю тему автоматики и автоматизации. В прошлый раз я разбирал простую задачу, которая сводилась в включению/выключению насоса по сигналам датчиков уровня. Как вы помните, там использование микроконтроллера не имело особого смысла. Сегодня рассмотрим более сложную задачу, которая таковой не кажется, на первый взгляд. Поговорим о регулировке температуры, то есть, о термостатах или терморегуляторах. По прежнему я буду рассчитывать на любителей и новичков объясняя суть методов и подходов.
Казалось бы, все просто, подобных схем очень много, например, такая
Я специально нашел схему времен СССР, поэтому не удивляйтесь использованным в ней деталям. О самой схеме не буду много говорить, она приведена лишь для примера. Принцип работы таких схем одинаков, при понижении температуры ниже минимального установленного значения включаем нагреватель, при достижении максимального выключаем. Как и в случае с насосом. Только тут используется термодатчик и пороговый элемент на триггере Шмитта (собран на компараторе DA1). Как вариант, если слишком жарко, включаем вентилятор. О чем тут говорить?
А вот о чем. Во первых, чтобы избежать самовозбуждения в петле обратной связи мы вынуждены использовать гистерезис (в данном случае, разница между температурой включения и температурой выключения) в пороговом элементе. Именно поэтому не просто компаратор, а триггер Шмитта. Значит, точно поддерживать температуру не получится, она будет колебаться вокруг установленного значения примерно плюс минус половина гистерезиса. Часто это не страшно, например, терморегулятор утюга (я его упоминал тут) работает точно так же и ничего страшного не происходит. Но иногда это имеет значение. Да, гистерезис можно сделать небольшим, например, 1 градус, но факт остается фактом.
Во вторых, и это уже гораздо важнее, в таких схемах не учитывается тепловая инерция управляемого объекта. Мы можем регулировать температуру не в утюга или инкубатора, а, например, муфельной печи
Это маленькая лабораторная печь, но бывают печи гораздо большего размера. Проблема заключается в том, что когда мы включаем нагреватель повышение температуры в рабочей зоне начинается не сразу и происходит довольно медленно. Во всяком случае, не мгновенно. А когда мы выключаем нагреватель, температура в рабочей продолжает некоторое время расти. А снижается очень медленно, так как теплоизоляция хорошая. Это и есть тепловая инерция.
Думаете, что муфельная печь слишком далекий от бытового применения предмет? Как вам тогда обычная электрическая плита с такими, например, конфорками (это не современная индукционная плита)
Владельцами подобных плит известно, что снижать нагрев, или отключать, нужно заранее. Включать, или увеличивать нагрев, тоже заранее. Так как нагревается медленно и остывает медленно. Ситуация точно такая же, как с муфельной печью. Но я буду, все таки, использовать для примера печь, а не плиту.
В окружающем нас мире много примеров действия инерции. Например, корабль некоторое время плывет и после остановки гребного винта. И скорость набирает медленно после его запуска.
Да, мы можем учесть инерцию сдвинув порогу включения/отключения нагревателя. Но что будет, если мы помести в рабочую зону печи тигель или металлический брусок? Тепловая инерция изменится, а значит нам снова придется сдвигать пороги регулирования. Не очень удобно, правда?
Давайте разберемся подробнее. Показанная на фотографии муфельная печь имеет регулятор температуры. Нам пока не важно, как именно он работает. Важно, что регулировка температуры осуществляется изменением выделяемой на нагревательном элементе мощности. То есть, изменением подаваемого на нагреватель напряжения. При этом будем считать, что нет автоматического поддержания температуры, есть только регулировка мощности.
Оператор поддерживает нужную температуру вручную изменяя регулятором мощность нагревателя. Схематически это выглядит примерно так
Заменим человека и ручной регулятор мощности на эквивалент приведенной выше схемы на компараторе. Такое регулирование называется релейным. Выглядеть это будет примерно так
Выглядит примерно так же, как в случае ручного регулирования. Давайте посмотрим на график работы такого решения
Видно, что температура колеблется вокруг установленного значения. Времена включенного и выключенного состояния нагревателя не равны, в общем случае. Кроме того, эти времена изменяются в силу воздействия внешних факторов (напряжение сети, температура помещения, открыта ли дверца, и т.д.) Длительное включение нагревателя в начале графика соответствует включению печи и ее нагреву до рабочей температуры.
Как мы можем улучшить ситуацию со стабильностью температуры? Первым в голову приходит способ называемый пропорциональным управлением. А что, если мы будем не включать/выключать нагреватель, а плавно менять выделяемую на нем мощность? Выглядеть это будет примерно так
Теперь нам важен не факт выхода температуры за заданный диапазон, а величина отклонения от заданного значения. Чем больше отклонение, тем сильнее мы изменяем подаваемое на нагреватель напряжение от текущего значения. То есть, вместо компаратора будет усилитель, называемый усилителем ошибки. Выходное напряжение усилителя ошибки пропорционально разности между заданной и фактической температурами. Важно отметить, что сигнал ошибки имеет знак. В нашем случае, если фактическая температура выше заданной, то сигнал ошибки отрицательный. Напряжение на нагревателе надо уменьшать. Если фактическая температура ниже заданной, то сигнал ошибки положительный. Напряжение на нагревателе надо увеличивать. Или в виде формулы
Uerr=K*(Ts-Tf)
здесь Uerr - сигнал (напряжение) ошибки, К - коэффициент усиления, Ts - заданная температура, Tf - фактическая температура. Мы прибавляем напряжение ошибки к заданному напряжению на нагревателе и подаем результат на регулятор. То есть, наш сигнал ошибки корректирует заданное напряжение на нагревателе. И тем сильнее, чем выше разница температур.
Коэффициент усиления, или коэффициент пропорциональности, определяет крутизну и глубину регулирования, то есть, в какой степени величина отклонения влияет на напряжение на нагревателе, в данном случае.
Мы добились нужного результата? И да, и нет. Что же тут не так? В глаза бросается то, что нам нужно задавать два параметра, температуру и напряжение. Проблема, или небольшое неудобство? На самом деле проблема кроется гораздо глубже - у нас неправильная математическая модель печи! А необходимость задания двух параметров лишь следствие этой проблемы. Что же тет неправильно? Что бы понять нужно вспомнить физику.
Первым интересующим нас разделом будет термодинамика. Изменение температуры тела происходит благодаря теплообмену. В процессе нагрева телу передается некоторое количество теплоты, что и вызывает повышение его температуры. В процессе остывания тело отдает некоторое количество теплоты, что и вызывает понижение его температуры. В равновесном состоянии, то есть, при отсутствии теплообмена температура тела измениться не может.
Наша печь участвует в двух процессах теплообмена. Первый - передача теплоты от нагревателя печи. Второй - передача тепла от печи окружающей среде. Если в печь поставили, например, тигель, то появится третий процесс теплообмена - передача теплоты от печи тиглю. Это вызовет повышение температуры тигля и снижение температуры печи. Если мы просто открыли дверцу, то увеличится отдаваемое окружающей среде количество теплоты, что вызовет понижение температуры печи.
Изменение температуры тела определяется формулой
здесь Q - количество теплоты (Дж), с - удельная теплоемкость, m - масса тела, Δt - изменение температуры тела.
Поскольку у нас два процесса теплообмена, то итоговая формула будет выглядеть так
здесь Qн это получаемая от нагревателя теплота, а Qо отдаваемая окружающей среде (теплопотери). Если Qн>Qо, то идет нагрев. Если Qн<Qо, то идет остывание. Если Qн=Qо, то температура печи не изменяется.
Что все это значит? Это значит, что для нагрева мы должны передавать от нагревателя теплоты больше, чем теряется на нагрев комнаты. А для поддержания температуры нужно лишь компенсировать теплопотери.
Переходим ко второй части, сколько же теплоты может отдать нагреватель? Для этого вспоминаем раздел физики электричество. Точнее, тепловое действие электрического тока.
здесь Q - количество выделившейся теплоты, I - ток, R - сопротивление проводника (нагревателя, в нашем случае), t - время. Если посмотреть внимательнее, то увидим, что количество теплоты равно произведению электрической мощности на время.
Теперь мы видим, что задавая постоянную мощность нельзя задать нужную температуру. А вот регулируя мощность мы можем регулировать температуру. Чем меньше разница между заданной и фактической температурами, тем меньше должна быть мощность нагревателя. Для поддержания температуры мощность должна быть равна "мощности потерь", назовем так мощность нагревателя соответствующую выделению теплоты позволяющей компенсировать теплопотери. Для остывания мощность нагревателя должна стать меньше "мощности потерь".
Все, с физикой и математикой мы закончили. Стало ясно, что задавать напряжение на нагревателе (фактически, мощность) не только не нужно, но и вредно. Сделаю оговорку, для нашего случая!!! Поскольку это зависит от математической модели управляемого объекта!
В результате, получаем такое
Это уже полноценное пропорциональное управление с правильной математической моделью. Правда я не стал вводить в модель параметры тепловой инерции, что бы совсем вас не запутать.
Но и тут есть тонкости. Например, у нас получилась одинаковая крутизна управления не зависящая от величины ошибки. Это можно исправить сделав коэффициент усиления усилителя ошибки нелинейным. Чем меньше ошибка, тем меньше усиление и, следовательно, более пологая характеристика регулирования.
Я очень сильно упростил объяснение опустив многие моменты. В конечном итоге это не лекция по ТАУ (теории автоматического управления). Для наших целей этого достаточно.
Однако, нужно вскользь коснуться ПИД регулирования. ПИД регуляторы способны работать гораздо более точно. ПИД это сокращение от пропорционально-интегрально-дифференциальный. Звучит устрашающе, правда? Это действительно сложный метод регулирования. С пропорциональностью мы уже познакомились, давайте кратко, очень кратко, пройдемся по остальным.
Интегральная составляющая использует интеграл от сигнала рассогласования, то есть, сигнала ошибки. Это позволяет убрать шумы и частично компенсировать помехи. Однако это увеличивает постоянную времени петли регулирования. И замедляет процесс установления требуемого значения, в нашем случае, температуры.
Дифференциальная составляющая использует производную от сигнала ошибки. Это позволяет реагировать на быстрые изменения состояния объекта управления. Например, это позволит быстрее установить заданную температуру после помещения в печь тигля. Кроме того, интегральная составляющая позволяет снизить возможные колебания в петле регулирования и значении целевого параметра.
Теперь давайте внимательнее посмотрим на то, что на наших схемах называется регулятором. Если мы питаем нагреватель постоянным, а не переменным, напряжением и потребляемый им ток мал, то мы можем напрямую реализовать пропорциональное управление в линейном режиме и схема получится довольно простой. По сути, это будет подобие компенсационного линейного стабилизатора напряжения. Только мы отслеживать не отклонение напряжения, а отклонение температуры. Однако на регулирующем элементе в линейном режиме рассеивается большая мощность, что плохо.
Для постоянного тока выходом является ШИМ, про который я уже упоминал здесь.
Принцип работы ясен из рисунка, однако, я его немного поясню. Черной линией показан сигнал с внутреннего генератора пилообразного напряжения. Синей линией показан входной сигнал, который поступает, в нашем случае, с усилителя ошибки. Красным закрашены периоды, когда на нагреватель подается питание, то есть, это выходной сигнал регулятора. Видно, что нагреватель включен, когда величина сигнала ошибки превышает текущее значение пилообразного напряжения. Обратите внимание, что частота выходного напряжения регулятора постоянна и определяется частотой пилообразного напряжения. А вот скважность, или коэффициент заполнения, меняется в зависимости от входного сигнала. Это и есть широтно-импульсная модуляция, или регулирование. Схемотехнически это реализуется, например, компаратором на один вход которого подается пилообразный сигнал, а на второй сигнал ошибки.
Я опять сильно упростил объяснение, так как нам важна лишь суть, а не тонкости. Сразу возникает вопрос, как же так, мы же уходили от режима включения/выключения, а тут снова он. Вся разница в частоте того самого включения/выключения. В данном случае частота может быть высокой, от сотен герц до сотен килогерц. За счет тепловой инерции нагревателя его температура будет зависеть только от коэффициента заполнения подаваемых на него импульсов питания.
А что делать, если нагреватель питается переменным напряжением? Там ведь такой подход не применим? Вообще то, применим. Существуют силовые ключи способные коммутировать переменное напряжение с высокой частой переключения и большим допустимым током. Однако чаще применяют фазо-импульсное управление тиристорами
В этом случае управляют моментом открывания тиристора относительно перехода переменного напряжения через ноль. Закроется тиристор в конце полупериода сам. При этом выделяющаяся на нагрузке мощность пропорциональна времени открытого состояния тиристора, то есть, тому же самому коэффициенту заполнения. Да, я опять сильно упростил объяснение.
И ШИМ, и фазо-импульсное и пропорциональное управление можно реализовать аналоговыми схемами, что раньше и делали. Однако, решения на микроконтроллерах оказываются проще и дешевле. Особенно, в случае ПИД регулирования. В состав многих микроконтроллеров входят модули ШИМ и АЦП (аналого-цифрового преобразования). Причем это бывают даже не просто ШИМ (PWM), а модули захвата/сравнения/ШИМ (CCP).
Модель объекта управления может быть гораздо сложной и нелинейной, чем в случае нашей простой печи. А это приводит к сложному алгоритму управления, со множеством настраиваемых коэффициентов. Программная реализация такого алгоритма проще, чем схемотехническая. И устройство получается не просто более компактным и дешевым, но и более надежным и удобным. Да и для человека более наглядным и простым в использовании.
Нужно отметить, что с ПИД регулированием справится далеко не каждый микроконтроллер. Нужны высокое быстродействие, разрядность, и возможность быстро работать с числами с плавающей запятой. Такая сложность нужна не всегда, поэтому могут быть и ПИ и ПД регуляторы. И пропорциональные тоже применяются.
Повторюсь, это не лекция по ТАУ. Поэтому я не стал давать громоздких определений и многоэтажных формул. Для бытового, любительского, применения достаточно релейного подхода, как в схеме в начале статьи, и пропорционального регулирования. А это можно реализовать с использованием большинства дешевых 8 разрядных микроконтроллеров.
Заключение
В этой статье я не говорил про датчики, УУ, УСО и прочее. Я показал, что степень сложности задачи может быть гораздо выше, чем кажется на первый взгляд. И что математическая модель объекта управления и алгоритм управления имеют критически большое значение. Неверное построение модели может пройти незамеченным при проектировании и отладке, но привести к полной не применимости устройства в реальных условиях. Примером такой неточности модели может служить не учтенное помещение тигля в печь, про которое разработчик просто забыл. Не менее тяжелыми могут быть и ошибки в алгоритме, или его чрезмерное упрощение.
Автоматизация требует глубокого понимания предметной области, в которой ведется работа! Я показал это в статье про влажность почвы. И еще более наглядно показал это здесь. В большинстве случаев требуется знание физики и математики, очень часто химии. Я не говорю уже про электронику и информационные технологии. Причем желательно на уровне гораздо выше школьного. Однако, для бытового и любительского уровня зачастую достаточно просто хороших знаний школьной программы. Заметьте, я рассказывал об очень сложных вещах, но мне удалось ни разу не выйти за рамки школьных знаний. Да, я очень старался в них удержаться, поскольку понимаю, что большинство не любят математику и физику.
Это не последняя статья цикла про автоматизацию, будет еще много всего написано. Повторюсь, я ориентируюсь на новичков и любителей, а не на занимающихся автоматизацией профессионально.
Если что то непонятно, задавайте вопросы. Предлагайте свои темы для рассказа об интересном, сложном, и одновременно простом мире автоматики.