Схема непосредственного преобразователя напряжения широко используется в современной электронике: различные стабилизаторы напряжения (понижающие или повышающие), инверторы одно- и много-фазные. Для низковольтных маломощных преобразователей как правило используются аналоговые схемы управления, для мощных и/или высоковольтных уже выгоднее использовать цифровые системы управления на основе микроконтроллера.
К оригинальному принципу построения цифрового регулятора я пришёл без малого 20 лет назад. Принцип простой, как говорится, “лежит на поверхности”, позволяет получить отличное быстродействие, качество переходных процессов и отсутствие выбросов токов дросселя. Но вот, что интересно для меня, я нигде больше за эти 20 лет на практике не встретил данного подхода к построению регулятора по аналогичному принципу (плохо искал?).
Подразумевается, что читатель понимает: основы ТОЭ (теоретические основы электроцепей), принципы формирования ШИМ (широтно-импульсной модуляции)
Итак, к сути.
Регулятор тока дросселя
Основой принципа является непосредственное управления током дросселя преобразователя.
На рисунке ниже приведена схема непосредственного преобразователя напряжения. В зависимости от положения источника энергии (источника напряжения) либо со стороны конденсатора С1, либо со стороны конденсатора С2, преобразователь может быть понижающим (buck) или повышающим (boost) соответственно.
Пусть ключи VT1 и VT2 работают противофазно в режиме ШИМ модуляции с частотой fPWM (соответственно с периодом ТPWM=1/fPWM). Примем следующее допущение — за период ТPWM напряжения на конденсаторах С1 и С2 (равное соответственно U1 и U2) изменяются пренебрежимо мало и могут быть приняты за постоянные (то есть конденсаторы С1 и С2 можно заменить источниками постоянного напряжения). Тогда схему, приведенную выше, на время ТPWM можно заменить следующей.
Где: Напряжения источника E2 = U2 (напряжению на конденсаторе С2), а источника E1 = U1* = s*U1 (напряжение на конденсаторе С1 умноженное на скважность s ШИМ импульса управления ключом VT1).
Уравнение для данного участка цепи будет следующим:
(1)
Где: R - активное сопротивление дросселя;
L- индуктивность дросселя;
i(t) - ток дросселя.
Пусть нам необходимо ток дросселя i(t) привести к некоторому заданному значению Iset от некоторого текущего значения I0, путём задания напряжения U1* (управлять которым мы можем изменяя скважность s импульса управления ключом VT1).Тогда за время ТPWM формулу (1) можно привести к следующему виду:
(2)
Скважность импульса управления s ключом VT1 рассчитывается соответственно по формуле:
(3)
Вот всё, что надо, чтобы управлять током дросселя. Зная: текущие напряжения на конденсаторах С1 и С2, текущий ток дросселя L, необходимый ток дросселя, его индуктивность и сопротивление - рассчитывается скважность импульса управления ключом VT1. Понятно, что расчет скважности необходимо производить на каждом такте ШИМ.
Регулятор напряжения
В зависимости от того какой преобразователь нам необходимо получить понижающий или повышающий, обратная связь по напряжению может замыкаться либо с конденсатора С1, либо С2.
Рассмотрим случай понижающего преобразователя, то есть стоит задача стабилизировать напряжение на конденсаторе С2 на некотором уровне Uset.
При реализации регулятора тока дросселя, рассмотренного выше, входной источник напряжения (на рисунке не указан), конденсатор С1, транзисторы VT1, VT2 и дроссель L образуют управляемый источник тока, и соответственно исходную схему преобразователя можно заменить следующей.
Остаётся лишь замкнуть обратную связь, то есть на основе разности между уставкой Uset и напряжением на конденсаторе С2 сформировать управляющее воздействии для управляемого источника тока. Самый простой способ - пропорциональный регулятор.
Сигнал рассогласования подаётся на блок умножения с насыщением, с выхода последнего сигнал в свою очередь подаётся на управляемый источник тока.
Вычисления в блоке умножения с насыщением крайне просты, обозначим коэффициент усиления пропорционального регулятора как k, а выход как Iset , тогда:
Imin и Imax - ограничения тока дросселя снизу и сверху соответственно.
Расчёт регулятора напряжения также производится на каждом такте ШИМ.
Понижающий регулятор напряжения готов. Получившийся источник напряжения будет иметь следующую схему замещения.
То есть источник с напряжением холостого хода равного Uset и выходным сопротивлением R=1/k (где k - коэффициент усиления пропорционального регулятора).
Минимальный предел сопротивления источника (максимальный k) при котором источник с пропорциональным регулятором напряжения не начинает входить в автоколебания определяется значениями: частотой ШИМ (чем выше тем меньше можно сделать выходное сопротивление), номиналом С2 (чем больше номинал тем меньше можно сделать выходное сопротивление), индуктивностью L (чем меньше номинал тем меньше можно сделать выходное сопротивление) — при том частота ШИМ и номинал L довольно тесно связаны и манипулировать ими надо совместно.
Учёт влияния работы АЦП и ШИМ
Очевидно, что в реальном МК момент измерения (вернее сказать момент выборки АЦП) тока в дросселе непосредственного преобразователя и момент выдачи управляющего напряжения (регистров сравнения на таймер ШИМ) заметно отстоят друг от друга, а с учётом необходимости использования прелоад регистров таймера для корректной работы ШИМ, минимальное время между моментом измерения тока и выдачей управляющего воздействия (регистров сравнения) составляет половину периода ШИМ. Этот момент требует доработки алгоритма расчёта управляющего воздействия (скважности импульса управления транзистором VT1) для непосредственного регулятора тока.
Рассмотрим случай симметричной ШИМ.
Из иллюстрации хорошо видно, что между моментом измерения тока дросселя и выдачей управляющего воздействия (обновления регистров сравнения) регулятором тока, проходит время равное половине периода ШИМ. То есть к моменту выдачи управляющего воздействия значение тока дросселя будет не актуальным, он изменится. Соответственно необходимо учесть это изменение тока дросселя при расчёте скважности s транзистора VT1 регулятором тока по формуле (3).
За время половины периода ШИМ (ТPWM/2) ток дросселя изменится, согласно следующей формуле:
(4)
Где: U10* - управляющее воздействие, рассчитанной согласно формуле (2) на предыдущем такте ШИМ, а U20 - напряжение на конденсаторе С2, измеренное на предыдущем такте ШИМ.
Внимательные читатели должны были заметить, что в формуле (4) нет членов, связанных с сопротивлением дросселя R, при малых значениях R от них, как показали прогоны модели, можно отказаться, в угоду упрощения вычислений.
Подставив выражение (4) в (3) получим:
(5)
Опять же, как показало моделирование, членами связанных с сопротивлением дросселя R (при малых значениях последнего) можно отказаться.
Требование к вычислительной мощности МК
Наверняка у читателя может возникнуть вопрос: на сколько данный подход к построению регулятора требователен к вычислительной производительности МК и развитости его периферии (в первую очередь АЦП)?
Последняя реализация - 4-х канальный источник с частотой работы канала 100 КГц был успешно реализован на GD32E503RET6 (ARM® Cortex®-M33, 180 МГц).
Пояснения к модели
Оценить качество работы предлагаемого регулятора и до конца понять принцип его работы поможет моделька, реализованная мной в среде MatLab/Simulink. От вас потребуется знание собственно MatLab/Simulink и S-функций (регулятор реализован в ней).
Синий квадратик - уставка по напряжению, регулятор будет отрабатывать заданное здесь напряжение.
Жёлтый квадратик - ограничение тока, регулятор будет ограничивать ток дросселя в границах от “-” указанного до “+” указанного.
Зелёный квадратик - задание сопротивления нагрузки в диапазоне от 0 до 1000 Ом.
Все перечисленные значения можно менять “на лету” при запущенной в симуляцию модели.
Параметры, передаваемые S-функции:
Период тактового сигнала таймера ШИМ;
Период ШИМ в тактах таймера;
Мёртвое время между коммутациями транзисторов в тактах таймера;
Задержка запуска регулятора от начала запуска моделирования.
При прогонах модели рекомендую “поиграться” со значениями:
Индуктивности и сопротивлении дросселя, оценить влияние разности значений реальной индуктивности и используемой для рассчёта в регуляторе.
Номинала выходного конденсатора.
Частоты ШИМ.
Комментарии (27)
iShrimp
09.11.2024 09:40Можно ли в данном регуляторе реализовать функцию MPPT-контроллера?
По сути, MPPT контроллер является умным ограничителем выходной мощности. Т.е. на малых мощностях преобразователь работает как обычный понижающий, но на больших - при просадке напряжения источника в какой-то момент его мощность перестаёт расти и падает (в этой точке солнечные панели имеют резкий уклон ВАХ).
Контроллер должен отслеживать, по какую сторону от этой точки он находится. Теоретически, при небольшой частоте ШИМ это можно отследить по колебаниям напряжения и тока источника в моменты переключения транзистора. Если мощность выше в точке более низкого напряжения, значит можно увеличить коэффициент заполнения ШИМ, а если наоборот - значит, мы проскочили точку и его нужно уменьшить.
gleb_l
09.11.2024 09:40На самом деле идея интересная - если нагрузить панель на коммутируемую индуктивность, то в диапазоне линейности сердечника можно будет снять ее ВАХ для текущего значения освещенности прямо в цикле преобразования, а накопленную в индуктивности энергию тут же отдать в нагрузку! И уже после нескольких пробных скважностей найти максимум отдаваемой мощности.
Ivan_Kadochnikov Автор
09.11.2024 09:40Можно ли в данном регуляторе реализовать функцию MPPT-контроллера?
Есть модель цифрового экстремального регулятора как раз для солнечной панели. Реализовал, когда работал на "Полюсе". Там, кстати, именно подобный регулятор (что в статье) не нужен. Освежу модель (я её разработал ещё в 2010) и выложу здесь.
Flammmable
09.11.2024 09:40Очевидно, что в реальном МК момент измерения (вернее сказать момент выборки АЦП) тока в дросселе
И как же вы это сделаете? )) В смысле, как именно вы предполагаете измерить ток силами МК?
legustarasov
09.11.2024 09:40Простой способ - установить шунтирующий резистор и с помощью дифференциального усилителя (есть готовые INA321) измерять перепад напряжения на нем. Если не хочется терять энергию на резисторе, то можно поставить датчик тока на основе датчика Холла (например ASC712). Некоторые регуляторы умеют измерять ток по падению напряжения на активном сопротивлении самого дросселя.
Flammmable
09.11.2024 09:40Я-то в общем спрашивал автора статьи )) С тем чтобы понять, представляет ли он связанные с этим проблемы. Или же "А" на схеме для него некая абстракция.
Но раз уж вы начали отвечать, то:
Измерительный резистор тем точнее, чем больше его номинал. Но чем больше его номинал, тем больше энергии рассеивается на нём. На каком номинале в приведённой схеме вы предлагаете остановиться?
ASC712 или INA321 стоят кратно больше, чем условный STM32F030. То есть большая часть стоимости схемы -это будет как раз "А". Не смущает?
legustarasov
09.11.2024 09:40Очень странный вопрос, на мой взгляд. Конечно на схеме много абстракций. И конденсатор должен быть не один, и у транзисторов должны быть драйверы, и ток нужно измерять, и напряжения большие 3.3В, и фильтры перед АЦП и многое другое...
Да, конечно, номинал резистора надо считать исходя из того сколько мощности готовы рассеять и какая точность требуется. Это будет зависеть от входных в выходных данных. Вообще "классикой" токоизмерительных шунтов является падение 75мВ на номинальном токе. Но конкретное приложение считается.
Ну почему это контроллер должен быть самым дорогим элементом схемы? Да, чем более точную/мощную/компактную схему приходится применять более дорогие компоненты. А если заглянуть на цены российских компонентов вообще волосы встают дыбом. Странно что это может кого-то смущать. К тому же, в статье упоминается значительно более дорогой контроллер, по сравнению с тем что вы привели в пример.
Да, если у вас проект чуть сложнее мигания светодиодов, то конечно в нем будет несколько разных шин питания. Вы забыли, например, про 12..15В для затворов транзисторов... А что касается количества измеренных миллиампер на 1 отсчёт микроконтроллера - рассуждения сейчас бессмысленны без конкретных параметров схемы. Естественно уровни напряжения необходимо приводить к уровню АЦП, у линейки ACS есть целый ряд датчиков тока, которые подбираются под конкретную задачу.
Flammmable
09.11.2024 09:40У ASC712, как я вижу, напряжение питания 5В. У большинства современных МК 3,3В. Это потребует наличия двухуровневого дежурного питания. Но это ладно. Большей проблемой является то, что условный 12-битный АЦП внутри МК имеет 4096 отсчётов. И, соответственно, при Vref в 3,3В он будет иметь точность в 0,8мВ. ASC712 имеет чувствительность в 55мВ/А. Или 68,75 отсчётов АЦП. Или 1 отсчёт на 15мА тока дроссела. Что не то, чтобы кошмар как грубо, но накладывает ограничения. Да, можно в Vref подсунуть что-то силтно меньшее, чем 3,3В. Но у МК лишь один Vref. И его АЦП помимо тока должен заниматься измерениями напряжений. Которые будут скорее всего поболее 3,3. Их можно поделить резистивными делителями, но-но-но... В общем, метрология измерения тока в дросселе потянет на отдельную статью ))))
Ivan_Kadochnikov Автор
09.11.2024 09:40В последнем проекте (который 4-х канальный) для измерения тока дросселя используется связка шунт + INA240.
Да. Применять данный способ управления для обычного источника мощностью 10 Вт будет экономически не целесообразно.
А для специализированного источника тока с функциями ограничения мощности и специфической функцией ограничения тока, очень даже.
Flammmable
09.11.2024 09:40Какой номинал шунта, если не секрет? И каковы типичные токи через дроссель в том проекте?
Ivan_Kadochnikov Автор
09.11.2024 09:40Ток 12,5А. Шунт 3 мОм.
Flammmable
09.11.2024 09:40Ну да, у дорогих силовых устройст помимо головняка с кучей требований есть ещё и преимущества - можно обвешать их измериловкой с ног до головы. Я слышал лет 5-7 назад доклад о высокомощном усилителе, который с использованием ПЛИС корректировал свою мощность в зависимости от потока данных, поступающих на вход усилителя.
Ivan_Kadochnikov Автор
09.11.2024 09:40Например для задачи активного выпрямителя (одно- или трёх-фазного), когда ток переменный, в качестве датчика тока подойдут мои любимые трансформаторы тока (дешёвые, точные, быстродействующие и дубовые).
Не всё так однозначно и прямо "запредельно дорого".
Flammmable
09.11.2024 09:40Почитал вашу историю комментов - что-то вас вообще ни за что заминусовали.
Токсики, чтоб их )))
legustarasov
09.11.2024 09:40Хотел поинтересоваться: почему решили заняться разработкой своего стабилизатора? Если вы не отказываетесь от зарубежной базы (микроконтроллер же не отечественный используете), то выбор стабилизаторов достаточно велик на различные величины напряжений и токов. И частота 100кГц в этом плане достаточно низкая - сейчас они есть и 500кГц, и на 1МГц, что позволяет снизить величины дросселя и конденсаторов. Какие такие требования к стабилизатору побудили делать свой, а не взять готовую и отлаженную микросхему?
Ivan_Kadochnikov Автор
09.11.2024 09:40Это решение не для маломощных/дешёвых преобразователей, а для преобразователей, в которых оправдано использование цифровых схем регулирование (мощных или с какими-то специализированными требованиями к регулированию).
Статья по сути вводная для объяснения принципа заложенного: в реализации управления 3-х фазным активным выпрямителем (будет следующая статья), управления моментом синхронного двигателя.
DimErm
09.11.2024 09:40Статья не столько вводная, сколько демонстрирует отсутствие прогресса за двадцать лет. Примитивная моделька в матлабе, где не учтены множество факторов реального управления хотя бы мосфетами, как начиная с роста затвора происходят переходные процессы, какие внутренние эквивалентные емкости, индуктивности. Как влияют характеристики индуктора, какие резонансные...
И, главное, все это в литературе есть, причем давно. Контроллеры созданы, ключи внешние только подбирай. И утверждать, что в дальнейшем это будет основой силовой системы крайне опрометчиво. Достаточно сделать на 50 вт преобразователь с кпд 98 процентов и многое воспримется иначе
Ivan_Kadochnikov Автор
09.11.2024 09:40Примитивная моделька в матлабе, где не учтены множество факторов реального управления хотя бы мосфетами
Цель модельки - дать возможность оценить сам принцип построения регулятора. Принцип совершенно не привязан к конкретной элементной базе и может применяться и на IGBT-инверторах (с частотами ШИМ 5-20 кГц), и на SiC-MOSFET-инверторах (с частотами ШИМ до 100 кГц).
Моделирование же процессов коммутации силовых ключей необходимо для:
Оценки коммутационных помех.
Оценки коммутационных потерь.
Оценки выплесков напряжений на силовых ключах.
Всё это никак не связано с самим регулятором. А потому и нет никакой надобности усложнять модель более детальными моделями силовых ключей, которые только значительно замедлят скорость моделирования.
Достаточно сделать на 50 вт преобразователь с кпд 98 процентов и многое воспримется иначе
Регуляторы они вообще не про КПД. Регулятор - это про быстродействие и величину перерегулирования.
gleb_l
Все ШИМ-преоьразователи работают на принципе перекачки энергии из входной в выходную цепь порциями, не превышающими энергоемкости дросселя. Собственно, выходной интегрирующий элемент (конденсатор) позволяет цепям ООС управлять этой перекачкой со скоростью, порядково меньшей периода импульсов накачки дросселя. В чем преимущество управления скважностью на уровне отдельных полупериодов, если напряжение на выходном конденсаторе в течение цикла мы считаем константой? Я понимаю, например, если бы мы имели датчик мгновенного тока в цепи потребителя, и зная текущую потребность в энергии для выходной цепи, корректировали бы скважность еще до того, как напряжение на выходном конденсаторе упадет - то есть понимая возросшую потребность в энергии, увеличивали бы скважность так, чтобы к концу цикла напряжение на выходном конденсаторе оставалось бы в допуске и vice versa.
ABRogov
Автор похоже замаскировал контроль по току, через разницу Iset-I0. А откуда берется I0 не сказал. Если из прямого измерения, то это просто Peak/average/valley current-mode controller.
В своей практике я использую STM32G474 для full-bridge phase-shift peak-current mode преобразователя. Не знаю как на русском это коротко называется. Есть много других цифровых контроллеров подходящих для этого может быть даже лучше. Пример можно посмотреть в референс дизайне от TI TIDM-02000. Полный разбор, включая платы.
Ivan_Kadochnikov Автор
Главное преимущество предложенного регулятора - отсутствие выплесков/перерегулирования тока дросселя. Ток дросселя (за исключением аварийных режимов, связанных со сбоем аппаратуры) не превышает заданных пределов.
Регулятор же напряжения может быть любым (ПИ, ПИД, модальным и тд) и в том числе асинхронным по отношению к регулятору тока с более низкой частотой.
ABRogov
Это обычное преимущество систем с управлением по току дросселя.
Slope compensation вам о чем нибудь говорит? Субгармонические колебания? Читайте литературу, всё это описано вдоль и поперек. С 80х годов выпускаются стандартные микросхемы для такого режима управления вроде UCC2842.
Ivan_Kadochnikov Автор
А если преобразователь требует цифрового управления с динамическим изменением порогов стабилизации напряжения и токоограничения?
А если требуется реализовать регулятор мощности так же с динамическим изменением порога стабилизации мощности?
А для управления 3-х фазными инверторами тоже полно микросхем?
Ещё раз. Для меня самого удивительно, что подобный метод регулирования (простой и очевидный) в цифровых регуляторах я не встречал.
ABRogov
Я выше привел несколько микроконтроллеров которые умеют все это делать.
Это не аргумент. Плохо или вообще не искали. На тему peak current mode controller много как статей и книг, так и апноутов. Все разжаловано до мелочей с примерами.
Ivan_Kadochnikov Автор
peak current mode controller требует применение аналогового компаратора и специализированных таймеров (типа HRTIM), работающих в связке.
https://www.ti.com/lit/ug/tidueo1b/tidueo1b.pdf?ts=1731206609286&ref_url=https%253A%252F%252Fwww.ti.com%252Ftool%252FTIDM-02000
Страница 7.
Предлагаемый же мной метод будет работать на стандартном таймере с функцией PWM без наворотов.
ABRogov
Что такое I0 в ваших формулах? Ведь ток дросселя переменный? Это средний, минимальный или пиковый ток? Судя по рисунку, вы измеряете в паузе, то есть это valley current mode control или попытка измерить средний ток. При этом измеряете вы в одном, обновляете в другом, а реальные изменения происходят только в третьем периоде. То есть у вас задержка больше одного периода.
Вы бы показали частотный отклик своей системы. Реакцию на ступеньку нагрузки и т.п.
Может быть будет, но как.
Ivan_Kadochnikov Автор
Текущий ток дросселя.
Средний. Измеряется в середине "пилы" (середине импульса ШИМ).
Задержка между моментом измерения тока дросселя и обновлением регистров сравнения таймера составляет половину периода ШИМ.
По-моему я сделал даже честнее. )) Дал модельку для оценки. Там можно оценить (при некоторых доработках, требующих владения Simulink) все возможные реакции регулятора: сброс/наброс нагрузки, изменение питающего напряжения, чувствительность к номиналу дросселя и тд.
Как в статье описано. ))
Просто. Без снобизма. Разберитесь с моделькой. Там всё очень просто.
ABRogov
Вот и именно, лицензию на матлаб вы мне тоже предоставите? Почему бы сразу не привести стандартные, общепринятые критерии оценки регуляторов, такие как передаточная функция, частотный отклик и т.п? Полюбопытствуйте, как вообще статьи пишутся на эту тему, что и с чем там сравнивается, когда утверждается преимущество одного над другим. Хотя тут скорее "Чукча не читатель, чукча писатель, однако".
То есть вы предлагаете использовать прямую запись, без предзагрузки (preload). Вы хоть раз так делали? Я пробовал, ничего хорошего. В целом не очень понятно, от чего такая большая задержка между измерением и получением нового Кзап.
Это не соответствует вашему рисунку, там указано, что "момент измерения" происходит в середине паузы. В любом случае вы "изобрели" average current mode control - очень популярный в PFC.
Вы еще попробуйте посмотреть как оно себя поведет при отсутствии нагрузки, при КЗ и т.п.