Общее количество методов стабилизации выходного напряжения при импульсном преобразовании электрической энергии достаточно велико. Но на практике все сводится к одному простому правилу: «берем подходящую микросхему и следуем инструкциям». Действительно, производители электронных компонентов проделали огромную работу и наполнили рынок контроллерами «на все случаи жизни». Поэтому разработчику уже не нужно самому реализовывать, например, «метод управления с упреждением по входному напряжению» [1] или D-CAP3 [2]; для этого достаточно использовать готовую микросхему, содержащую все необходимые узлы, уже правильно соединенные и откалиброванные. Да и современные рыночные условия уже не позволяют производителям электроники собирать схемы управления на дискретных компонентах, ведь в большинстве случаев это долго, дорого и не всегда качественно.
Но что делать, когда подходящего контроллера не существует, например, когда силовая часть преобразователя выполнена по необычной схеме, или когда она является стандартной, но функциональности существующих контроллеров недостаточно для конкретного приложения? Например, где найти готовый контроллер для импульсного стабилизатора переменного напряжения, описанного в [3]?
Долгое время существовал лишь один способ решения этой проблемы – разработка аналоговой схемы управления «с нуля»: или на дискретных компонентах, или на программируемых аналоговых интегральных микросхемах, что с точки зрения функциональности почти одно и то же. Но это, как было сказано выше, сложно, долго и дорого. И лишь относительно недавно появился еще один способ, позволяющий не только эффективно выйти из нестандартных ситуаций, но и использовать абсолютно новые алгоритмы управления, которые на традиционной аналоговой основе реализовать практически невозможно.
Речь идет о цифровых схемах управления, в которых все функции обеспечиваются программным способом. Возможность практического применения подобного подхода появилась около пятнадцати лет назад после появления недорогих микроконтроллеров, быстродействия которых уже было достаточно для отслеживания высокоскоростных процессов в силовой части.
Одним из первых массовых устройств с полностью цифровыми контурами управления стали компьютерные источники бесперебойного питания, появившиеся в конце 1990-х годов. Однако в то время производительность недорогих контроллеров еще не позволяла полноценно управлять высокочастотными импульсными схемами, поэтому частота сигналов для управления силовыми транзисторами составляла всего 50 Гц, а их выходные напряжения имели форму прямоугольных импульсов (аппроксимированной синусоиды). С той поры многое поменялось, и сейчас почти все ведущие производители этого вида техники выпускают устройства с синусоидальными выходными напряжениями, формируемыми с помощью микроконтроллеров.
Цифровые контуры управления активно используются и в «серьезных» системах, например, в платформе MIPAQ Pro (Рисунок 1) [4], предлагаемой компанией Infineon для инверторов мощных электроприводов или солнечных электростанций. Одной из ее особенностей является программная реализация математической модели тепловых процессов, происходящих внутри кристаллов силовых полупроводниковых приборов, установленных в модулях. Эта модель позволяет на основе текущих значений напряжений силовых шин, тока нагрузки и известных параметров IGBT, рассчитать статические и динамические потери в каждом транзисторе в каждом цикле преобразования. Зная тепловые сопротивления кристалл-модуль, модуль-радиатор и радиатор-среда (с учетом работы системы охлаждения), а также текущую температуру внутри корпуса прибора, можно с высокой точностью определить, какими будут абсолютные температуры кристаллов после очередного цикла преобразования. Это позволяет не только предотвратить перегрев компонентов, но и максимально эффективно использовать их установочную мощность, ведь теперь, точно зная, что в данных условиях кристалл не расплавится, можно увеличить выходной ток модуля.
![]() |
||
Рисунок 1. | Пример цифрового контура управления платформы MIPAQ Pro [4]. |
Однако из-за большого объема работы, которую еще только предстоит сделать, это направление до сих пор остается «молодым» и «малоизученным». Но его уже нельзя назвать «недоступным». Сейчас на рынке присутствует достаточно большое количество быстродействующих микроконтроллеров, вполне пригодных для использования в качестве основы для цифровых контуров управления. Нужно только научиться их создавать. А вот доступной литературы, посвященной этому вопросу, пока еще очень мало, а та, что есть, иногда не выдерживает никакой критики.
В этой статье будут рассмотрены общие вопросы построения цифровых контуров управления на основе микроконтроллеров общего назначения. А в качестве примера будет рассмотрена схема управления импульсным преобразователем переменного напряжения [3, 5], реализованная на микроконтроллере семейства STM32 производства STMicroelectronics.
Общие особенности цифровых методов управления
Отличительной особенностью цифровых методов управления является минимальное количество аналоговых узлов, в большинстве случаев выполняющих лишь функцию интерфейса между существующей в физическом мире электрической схемой и ее виртуальной моделью. В общем случае, для построения цифрового контура управления необходим комплект аналоговых датчиков, формирующих на входах АЦП сигналы, пропорциональные реальным физическим параметрам: напряжению, току, температуре и т.п. Количество датчиков зависит от конкретной задачи и может быть разным. В самом простейшем случае, например, при реализации цифрового варианта метода управления по напряжению, достаточно лишь датчика выходного напряжения. Если же говорить о полноценном управлении силовою частью, тогда необходимо как минимум четыре датчика (Рисунок 2): для измерения входного и выходного напряжений, выходного тока и температуры ключевых компонентов системы.
![]() |
||
Рисунок 2. | Цифровой контур управления импульсным преобразователем. |
После оцифровки сигналов датчиков информация о состоянии «внешнего мира» поступает в программу, где обрабатывается по определенному алгоритму. Основным результатом работы программы являются сигналы управления силовыми ключами, которые для более рационального использования процессорного времени лучше формировать с помощью специализированных аппаратных модулей, например, таймеров.
Ключевым преимуществом такого подхода является исключительная гибкость. При использовании комплекта датчиков, как на схеме Рисунка 2, можно реализовать практически все методы управления, рассмотренные в [1, 2], причем со всеми сервисными функциями и защитами. А если учесть, что большинство современных микроконтроллеров имеет в своем составе как минимум один аппаратный интерфейс для обмена данными, то и реализовать в этом преобразователе функции удаленного управления, мониторинга или настройки тоже не составит технической сложности.
Эти преимущества, в свое время, и определили выбор такого подхода к реализации управления стабилизатором GF-9000 [5], ведь разработка на дискретных компонентах всего, что было в конечном итоге реализовано программно, привела бы к значительному усложнению сборки и настройки этого аппарата.
Особенности стабилизатора GF-9000
С полным перечнем технических характеристик стабилизатора GF-9000 (Рисунок 3), разработанного одесской компанией «Гофер», можно ознакомиться на ее официальном сайте [5]. Из его ключевых особенностей можно выделить максимальную мощность 9 кВА, обеспечиваемую во всем диапазоне входных напряжений от 150 В до 280 В (у традиционных стабилизаторов она обычно падает по мере увеличения отклонения напряжения) и при любых коэффициентах мощности нагрузки (аппарат может работать как на чисто индуктивную, так и на чисто емкостную нагрузку с коэффициентом мощности равным нулю). Использование импульсного способа преобразования позволяет восстановить нормальное значение выходного напряжения уже через 5 мс после изменения входного. И это далеко не предел быстродействия для данной технологии, теоретически способной корректировать форму синусоиды. Однако наиболее важным преимуществом стабилизатора GF-9000 является его компактность и малый вес, равный всего 13 кг (вес типичного стабилизатора такой мощности превысил бы 30 кг). Из-за этого он стал незаменимым прибором для людей, которым необходимо качественное напряжение «здесь и сейчас»: строителей, выездных музыкантов и т.п.
![]() |
||
![]() |
||
Рисунок 3. | Внешний вид стабилизатора GF-9000 (слева) и внутреннее устройство его прототипа (справа). |
Силовая часть стабилизатора GOFER-9000 (Рисунок 4) состоит из двух одинаковых каналов, работающих в многофазном режиме. Регулирование напряжения осуществляется методом вольтодобавки или вольтовычитания – в зависимости от соотношения напряжений на входе и выходе (Рисунок 5). Преобразование электрической энергии в каждом силовом канале производится двумя индуктивными приборами: трансформатором и дросселем. Такой подход к построению силовой части позволяет максимально уменьшить размеры и вес магнитопроводов индуктивных элементов [6]. В качестве силовых ключей используются высоковольтные IGBT с интегрированными антипараллельными диодами (IRG4PH40UD и IRG4PС50UD) производства компании International Rectifier, ныне ставшей частью Infineon. Частота работы трансформатора и накопительного дросселя равна, соответственно, 20 кГц и 40 кГц. Использование многофазного принципа преобразования позволило одновременно увеличить частоту пульсаций тока во входных и выходных цепях и уменьшить их амплитуду, что, свою очередь, дало возможность упростить входные и выходные сглаживающие фильтры, работающие на частоте 80 кГц.
![]() |
||
Рисунок 4. | Силовая часть стабилизатора GF-9000. |
![]() |
||
Рисунок 5. | Принцип регулировки напряжения стабилизатора GF-9000. |
Основой схемы управления является микроконтроллер STM32F103RBT6 с ядром, работающим на частоте 72 МГц (Рисунок 6). Датчики входного и выходного напряжений реализованы на основе 50-герцовых понижающих трансформаторов с возможностью подстройки коэффициента передачи с помощью подстроечных резисторов. В качестве измерителя выходного тока используется датчик Холла ACS756SCA-100B. Температура транзисторов измеряется с помощью двух терморезисторов – по одному в каждом канале. В системе присутствует также датчик балансировки на основе трансформатора тока, предназначенный для контроля равномерного распределения нагрузки между силовыми каналами. Первичные обмотки этого трансформатора образованы двумя проводами, размещенными в окне трансформатора таким образом, чтобы магнитные поля, создаваемые их токами, взаимно компенсировались. При неравномерной нагрузке возникает сигнал рассогласования, который снимается с вторичной обмотки трансформатора, оцифровывается и обрабатывается программой.
![]() |
||
Рисунок 6. | Схема управления стабилизатора GF-9000. |
Сигналы для управления силовыми транзисторами формируются с помощью двух таймеров. Кроме того, микроконтроллер формирует ШИМ-сигнал для управления вентилятором и несколькими индикаторными светодиодами. Один из аппаратных модулей UART используется для связи микроконтроллера с «внешним миром». В нормальном режиме работы через этот модуль происходит обмен данными с индикатором, управляемом отдельным микроконтроллером. При необходимости к этому модулю можно подключить компьютер со специализированным программным обеспечением, позволяющим получить необходимую диагностическую информацию.
Общая структура программного обеспечения
В аналоговых схемах процессы во всех узлах происходят параллельно. В одноядерных цифровых микроконтроллерах в каждый момент времени может выполняться только одна арифметико-логическая операция. Это заставляет четко делить программный код по уровням приоритетов выполнения. В общем случае, все операции, выполняемые ядром, можно разделить на три категории (Рисунок 7):
- операции, требующие немедленного выполнения;
- операции, требующие максимально быстрого выполнения;
- операции, выполняемые в фоновом режиме.
В число операций, требующих немедленного выполнения, должны попадать только инструкции, отвечающие за формирование сигналов управления силовыми транзисторами, поскольку малейшая задержка во времени их исполнения может привести, в лучшем случае, к джиттеру, а в худшем – к катастрофическому сбою в алгоритме формирования, например, появлению «ложных» импульсов, со всеми вытекающими отсюда последствиями.
![]() |
||
Рисунок 7. | Упрощенный алгоритм программного обеспечения. |
Операции, требующие немедленного выполнения, должны выполняться в прерываниях с самым высоким приоритетом. Вообще, в цифровых контурах управления импульсными преобразователями с использованием прерываний нужно быть очень осторожным. Классический подход к программированию микроконтроллеров – «на каждое событие свое прерывание» может сыграть злую шутку в виде создания очереди из второстепенных асинхронных прерываний, например, от модуля UART или интерфейсных кнопок. И пока они будут обрабатываться, код, находящийся в основном потоке программы и требующий действительно первоочередного выполнения, будет ожидать своей очереди.
Из-за этого в прошивке стабилизатора были использованы только прерывания от таймеров, в обработчиках которых выполнялся код, формирующий сигналы управления силовыми транзисторами (к сожалению, специфика силовой части не позволяла их формировать только аппаратно – каждый таймер приходилось регулярно перенастраивать). Все остальные события (завершение оцифровки, прием/передача байта данных по UART и т.п.) определялись в основном потоке программы путем проверки соответствующих флагов, но, самое главное, только тогда, когда отсутствовали более приоритетные задачи.
К операциям, требующим максимально быстрого выполнения, относится, в первую очередь, код, отвечающий за защиту преобразователя и нагрузки. Для силовой части стабилизатора и оборудования, подключенного к его выходу, самым опасным является превышение мгновенных значений напряжений и тока. Например, при обрыве нулевого провода действующее значение входного напряжения в сети может увеличиться до 400 В (амплитудное – до 570 В). Попытка уменьшить его до 230 В, скорее всего, приведет к пробою силовых транзисторов, поэтому при обнаружении высокого напряжения на входе силовую часть нужно отключить. Это необходимо сделать как можно быстрее, но при этом задержка в несколько десятков и даже сотен микросекунд вполне допустима.
Все остальные операции должны выполняться при наличии свободного процессорного времени. Их также можно разделить по уровням приоритета, поскольку среди них есть операции, которые можно выполнить в любое время, например, формирование пакета данных для передачи по UART, и такие, которые нужно выполнить в определенное время. К операциям, зависящим от времени, например, относится код, выполняемый в начале периода сетевого напряжения (расчет действующих значений напряжений и токов, защита от перегрузки по току и т.п.).
Таким образом, общий алгоритм программного обеспечения получается следующим (Рисунок 7). Сразу после сброса микроконтроллера выполняется блок инициализации, в котором происходит настройка периферийных модулей микроконтроллера и начальная инициализация переменных. В конце этого блока, как обычно, происходит включение прерываний, и программа переходит в основной цикл.
Основной цикл, периодически приостанавливаемый для обработки прерываний, выполняется до тех пор, пока не будет обнаружено событие, делающее дальнейшую работу стабилизатора невозможной, например, отключение одного из датчиков или обнаружение короткого замыкания в нагрузке. В этом случае основной цикл завершается и начинает выполняться цикл аварии, который будет выполняться до следующего сброса микроконтроллера.
Список функций, доступных в аварийном цикле, зависит от конкретной задачи. Например, в стабилизаторе GOFER-9000 при возникновении аварии продолжает поддерживаться обмен данными по UART, что позволяет определить причину отказа. В общем случае аварийный цикл не является обязательным – соответствующие блокировки можно достаточно просто реализовать и в основном цикле. Тут уже все зависит от решения и настроения программиста.
Основной цикл начинается с операций, требующих максимально быстрого выполнения. Программа построена таким образом, чтобы на момент начала каждой итерации основного цикла все АЦП завершили свою работу (об этом чуть позже). Таким образом, к началу выполнения основного алгоритма программа имеет самые свежие данные о состоянии системы. Поэтому неудивительно, что первым делом анализируются мгновенные значения напряжений и токов на предмет их нахождения в области допустимых значений. Кроме того, в этом блоке формируются суммы, используемые при последующем расчете средних и действующих значений напряжений, токов, температур и других параметров.
После обязательных операций, выполняемых в каждой итерации основного цикла, идет выполнение кода, привязанного к определенному времени. Например, в начале каждого периода сетевого напряжения на основе накопительных сумм, сформированных в течение прошлого периода, рассчитываются средние и действующие значения напряжений, токов и температур с последующей проверкой их значений, а код, отвечающий за синхронизацию с сетью, выполняется в моменты, когда предполагается, что абсолютное значение входного напряжения максимально. Если же в данной итерации (в данный момент времени) нет обязательных операций, тогда выполняется второстепенный код, например, отвечающий за работу светодиодных индикаторов или обмен данными по интерфейсу UART.
Особенности использования АЦП
Использование отдельного АЦП для оцифровки каждого аналогового сигнала в большинстве случаев является «непозволительной роскошью». Микроконтроллеры общего назначения обычно имеют всего один АЦП с входным мультиплексором, позволяющим сделать его многоканальным. Однако в каждый момент времени каждый АЦП способен работать лишь с одним сигналом. Это значит, что все входные напряжения должны оцифровываться по очереди, а часть процессорного времени необходимо тратить на перестройку входного мультиплексора, запуск преобразований и сохранение результатов измерений, ведь обычный АЦП имеет, как правило, всего один регистр для хранения оцифрованных данных.
В этом случае микроконтроллеры STM32 имеют ряд преимуществ по сравнению с другими микроконтроллерами в аналогичной ценовой категории. Например, АЦП микроконтроллеров этого семейства могут работать в режиме инжектированных преобразований с поддержкой до четырех каналов. Особенностью этого режима является отсутствие необходимости постоянного переконфигурирования АЦП. При использовании инжектированных преобразований АЦП настраивается один раз на этапе инициализации микроконтроллера. Каждому инжектированному каналу назначается конкретный вывод микросхемы (номер канала мультиплексора), на котором будет происходить измерение входного сигнала. При активизации инжектированного режима АЦП автоматически выполняет оцифровку сигналов на входах всех активных каналов с сохранением результатов измерений в индивидуальные для каждого канала регистры. Более того, запуск инжектированных преобразований можно привязать к определенным аппаратным событиям, например, к событиям, генерируемым таймерами. В этом случае оцифровка сигналов может происходить полностью автоматически с минимальными затратами процессорного времени.
Микроконтроллер STM32F103RBT6 имеет два АЦП, каждый из которых поддерживает до четырех инжектированных каналов. А в схеме управления стабилизатором есть семь сигналов, требующих оцифровки (входное и выходное напряжение, выходной ток, два датчика температуры, сигнал балансировки и опорное напряжение). Таким образом, в микроконтроллере STM32F103RBT6 были задействованы семь из восьми инжектированных каналов АЦП. При максимальной скорости оцифровки общее время, необходимое для обработки четырех сигналов, равно чуть меньше 25 мкс. Это позволило запускать инжектированные преобразования двух АЦП аппаратно – с помощью одного из таймеров, работающих на частоте 40 кГц. В итоге при использовании микроконтроллеров STM32 регулярную оцифровку семи входных сигналов удалось реализовать без затрат процессорного времени, за исключением времени выполнения кода инициализации, проводимой один раз после сброса микроконтроллера.
Контроль времени выполнения программы
Определить точное время выполнения того или иного фрагмента кода на этапе написания и отладки программы, особенно при использовании языков высокого уровня, практически нереально. Поэтому всегда существует риск, что процессор «не успеет» вовремя обработать входящую информацию. Ситуация усугубляется еще и тем, что ряд событий, требующих обработки процессором, в принципе не могут быть детерминированными. Например, пакет данных, принимаемых по UART, имеет переменную длину, поэтому на его обработку уйдет разное количество процессорного времени – чем длиннее пакет, тем больше времени необходимо, чтобы его проверить обработать и сформировать ответ. Это может привести, к ситуации, когда время, затрачиваемое ядром на обработку второстепенных задач, окажется больше времени между двумя последовательными преобразованиями АЦП одного и того же канала, и часть измерений будет безвозвратно потеряна. В лучшем случае это приведет к несистемным ошибкам в расчетах средних и действующих значений напряжений и токов, нарушению синхронизации с сетью, а в худшем – к полному краху программного обеспечения с возможностью выхода из строя силовой части.
Для исключения этого в программу добавлен модуль контроля времени выполнения программного кода (Рисунок 8), основным элементом которого является счетчик прерываний, инициируемый при запуске программы нулевым значением. В начале основного цикла происходит проверка значений этой переменной, и пока она равна нулю, основной поток приостанавливается до тех пор, пока ситуация не изменится. Счетчик прерываний увеличивается на единицу в обработчике прерываний таймера, запускающего АЦП на преобразование. Это значит, что в этот момент времени АЦП завершили оцифровку всех инжектированных каналов, и сейчас в их выходных регистрах находятся самые свежие данные о состоянии входных сигналов (за исключением самого первого прохода, когда оцифровка еще не проводилась).
![]() |
||
Рисунок 8. | Алгоритм контроля скорости выполнения программного кода. |
Теперь становится понятно, почему основной цикл «замораживается» до наступления прерывания. Такой алгоритм гарантирует, что операции, требующие максимально быстрого выполнения, включающие обработку результатов измерений, будут выполняться каждый раз с новыми данными без пропусков и многократной обработки одной и той же информации.
В общем случае, длительность одной итерации основного цикла ТИТЕР., равная сумме длительностей операций, требующих максимально быстрого выполнения и фоновых операций, должна быть меньше длительности между двумя прерываниями (25 мкс). В этом случае основной поток периодически будет находиться в «замороженном» состоянии, ожидая появления «свежих» результатов измерений АЦП (Рисунок 9а), и процессорного времени будет вполне достаточно для обработки данных.
Ситуация не будет критической, даже если время работы некоторых итераций основного цикла будет превышать 25 мкс (Рисунок 9б). В этом случае пропуска данных не будет, поскольку они все равно копируются из регистров АЦП во временные переменные. Самое главное в этом случае, чтобы средняя длительность итераций основного цикла была меньше 25 мкс. Тогда ядро, хоть и с некоторой задержкой, но все же будет успевать обрабатывать данные.
![]() |
||
Рисунок 9. | Принцип работы модуля самоконтроля. |
Но если суммарная длительность двух соседних итераций превысит 50 мкс, то данные будут утеряны. В этом случае значение счетчика прерываний станет больше единицы, и программа перейдет в аварийный цикл (Рисунок 9в).
Этот модуль особенно актуален на этапе разработки программы, когда ошибки в работе программиста неизбежны. Однако и в окончательной версии прошивки его лучше не отключать, поскольку на практике он не раз «спасал» ситуацию, обнаруживая скрытые проблемы, о которых мы даже не подозревали.
Список источников
- Русу А.П. Как управлять импульсными преобразователями с постоянной частотой переключений
- Русу А.П. Как работают импульсные преобразователи с гистерезисным управлением
- Русу А.П. Импульсное преобразование переменного тока
- IGBT-cборки MIPAQPro от Infineon – готовое решение для мощных преобразователей
- Стабилизатор напряжения импульсный GF-9000
- Русу А.П. Почему гальваническая развязка увеличивает размеры импульсных преобразователей электрической энергии