Схема dc преобразователя с алиэкспресс. Модуль понижающего преобразователя напряжения DC-DC

Повышающие DC-DC преобразователи находят широкое применение в электронике. Они могут применяться как отдельные модули питания конкретных объектов, так и могут входить в часть электрической схемы. Например, можно поднять напряжение пятивольтного аккумулятора и питать от него через повышающий преобразователь нагрузку напряжением 12В (усилитель, лампу, реле и т.д.). Еще пример, в некоторых охранно-пожарных сигнализациях на линиях контроля около 30В постоянного тока, а сам блок контроля и управления работает от 12В, поэтому в последние внедряют повышающие преобразователи и они являются частью схемы блоков контроля и управления.

Микросхема МС34063 представляет собой импульсный конвертор, поэтому она обладает высокой эффективностью (КПД) и имеет три схемы включения (инверторную, повышающую и понижающую). В этой статье будет описан исключительно повышающий (Step Up) вариант.

МС34063 выполняется в корпусах DIP-8 и SO-8. Расположение выводов показано ниже.

Основные технические параметры MC34063.

Входное напряжение ………. от 3 до 40 Вольт

Выходное напряжение ………. от 1.25 до 38 Вольт

Максимальный ток на выходе ………. 1.5 Ампер

Максимальная частота ………. 100кГц

Максимальный ток на выходе это пиковый ток на внутреннем транзисторе и он значительно больше тока нагрузки, поэтому не стоит надеяться, что преобразователь будет держать 1.5A на выходе. Ниже представлен калькулятор, который позволит правильно посчитать ток.

Другую интересующую информацию по параметрам и внутреннему устройству микросхемы можно найти в .

Схема повышающего DC-DC преобразователя на MC34063.

Опишу работу простыми словами. В микросхеме MC34063 есть генератор, генерирующий импульсы с определенной частотой. Генератор, взаимодействуя с другими узлами, управляет выходным транзистором, коллектор которого соединен с выводом 1, а эмиттер с выводом 2.

Когда выходной транзистор открыт, дроссель L1 заряжается входным напряжением через резистор R3.

После закрытия выходного транзистора, дроссель отключается от земли и в этот момент происходит его разряд (самоиндукция). Энергия дросселя уже с противоположной полярностью и большая по силе поступает на диод VD1. После выпрямления напряжения диодом, оно поступает на выход схемы, накапливаясь в конденсаторе C3. Помимо накопления, данный конденсатор сглаживает пульсации.

Схема конвертирует напряжение постоянного тока с 5В до 12В. Чуть ниже пойдёт речь об изменении номиналов элементов под нужные напряжения.

Резисторами R1 и R2 задается напряжение на выходе. Резистор R3 ограничивает выходной ток до минимума, при превышении определенной мощности.

Конденсатор C2 задает частоту преобразования.

Элементы.

Все резисторы мощностью 0.25Вт кроме R3 (0.5-1 Ватт).

В качестве L1 я взял готовый дроссель на 470мкГн, намотанный медным эмалевым проводом на гантель из феррита и отмотал три слоя, уменьшив тем самым индуктивность до 75мкГн (индуктивность больше расчетной допускается, а меньше нельзя).

Дроссель должен выдерживать пиковый выходной ток (в моем случае 1.5А).

Также можно взять кольцо из порошкового железа (жёлтого цвета) наружным диаметром 18мм, внутренним 8мм, толщиной 8мм и намотать медным проводом (диаметром 0.6мм и более) 30-40 витков (при 30 витках индуктивность получилась 55мкГн). Кольцо можно взять больше моего, но меньше не рекомендую.

Диод VD1- Шоттки, либо быстродействующий (типа SF, UF, MUR, HER и т.д.) на ток не менее 1А и обратное напряжение в два раза больше выходного (в моем случае 40В).

У микросхемы МС34063 есть отечественный аналог КР1156ЕУ5, они полностью взаимозаменяемы.

Расчет преобразователя на MC34063 под другое напряжение и ток.

Расчет займет не более одной минуты. Для этого необходимо воспользоваться . Помимо номиналов программа высчитает пиковый выходной ток, и в случае его превышения выдаст сообщение.

Калькулятор считает минимальную индуктивность, поэтому ее можно брать с положительным запасом (произойдут незначительные изменения лишь в КПД).

Пару слов…

Расчетная частота (50кГц в моем случае) является минимальной и может значительно отличаться и изменяться в зависимости от входного напряжения и тока нагрузки.

При выходном токе 200мА происходит достаточно сильный нагрев микросхемы MC34063, и работать в таком режиме долгое время возможно не сможет.

Рекомендую использовать MC34063 в тех случаях, когда нужно питать слаботочную часть схемы или отдельную нагрузку током до 150-250мА, а для нагрузки 3-5А предлагаю обратить внимание на повышающие DC-DC преобразователи, построенные на базе и .

Печатная плата повышающего преобразователя на MC34063 (из 5В в 12В)

Для питания различной электронной аппаратуры весьма широко используются DC/DC преобразователи. Применяются они в устройствах вычислительной техники, устройствах связи, различных схемах управления и автоматики и др.

Трансформаторные блоки питания

В традиционных трансформаторных блоках питания напряжение питающей сети с помощью трансформатора преобразуется, чаще всего понижается, до нужного значения. Пониженное напряжение и сглаживается конденсаторным фильтром. В случае необходимости после выпрямителя ставится полупроводниковый стабилизатор.

Трансформаторные блоки питания, как правило, оснащаются линейными стабилизаторами. Достоинств у таких стабилизаторов не менее двух: это маленькая стоимость и незначительное количество деталей в обвязке. Но эти достоинства съедает низкий КПД, поскольку значительная часть входного напряжения используется на нагрев регулирующего транзистора, что совершенно неприемлемо для питания переносных электронных устройств.

DC/DC преобразователи

Если питание аппаратуры осуществляется от гальванических элементов или аккумуляторов, то преобразование напряжения до нужного уровня возможно лишь с помощью DC/DC преобразователей.

Идея достаточно проста: постоянное напряжение преобразуется в переменное, как правило, с частотой несколько десятков и даже сотен килогерц, повышается (понижается), а затем выпрямляется и подается в нагрузку. Такие преобразователи часто называются импульсными.

В качестве примера можно привести повышающий преобразователь из 1,5В до 5В, как раз выходное напряжение компьютерного USB. Подобный преобразователь небольшой мощности продается на Алиэкспресс.

Рис. 1. Преобразователь 1,5В/5В

Импульсные преобразователи хороши тем, что имеют высокий КПД, в пределах 60..90%. Еще одно достоинство импульсных преобразователей широкий диапазон входных напряжений: входное напряжение может быть ниже выходного или намного выше. Вообще DC/DC конвертеры можно разделить на несколько групп.

Классификация конвертеров

Понижающие, по английской терминологии step-down или buck

Выходное напряжение этих преобразователей, как правило, ниже входного: без особых потерь на нагрев регулирующего транзистора можно получить напряжение всего несколько вольт при входном напряжении 12…50В. Выходной ток таких преобразователей зависит от потребности нагрузки, что в свою очередь определяет схемотехнику преобразователя.

Еще одно англоязычное название понижающего преобразователя chopper. Один из вариантов перевода этого слова - прерыватель. В технической литературе понижающий конвертер иногда так и называют «чоппер». Пока просто запомним этот термин.

Повышающие, по английской терминологии step-up или boost

Выходное напряжение этих преобразователей выше входного. Например, при входном напряжении 5В на выходе можно получить напряжение до 30В, причем, возможно его плавное регулирование и стабилизация. Достаточно часто повышающие преобразователи называют бустерами.

Универсальные преобразователи - SEPIC

Выходное напряжение этих преобразователей удерживается на заданном уровне при входном напряжении как выше входного, так и ниже. Рекомендуется в случаях, когда входное напряжение может изменяться в значительных пределах. Например, в автомобиле напряжение аккумулятора может изменяться в пределах 9…14В, а требуется получить стабильное напряжение 12В.

Инвертирующие преобразователи - inverting converter

Основной функцией этих преобразователей является получение на выходе напряжения обратной полярности относительно источника питания. Очень удобно в тех случаях, когда требуется двухполярное питание, например .

Все упомянутые преобразователи могут быть стабилизированными или нестабилизированными, выходное напряжение может быть гальванически связано с входным или иметь гальваническую развязку напряжений. Все зависит от конкретного устройства, в котором будет использоваться преобразователь.

Чтобы перейти к дальнейшему рассказу о DC/DC конвертерах следует хотя бы в общих чертах разобраться с теорией.

Понижающий конвертер чоппер - конвертер типа buck

Его функциональная схема показана на рисунке ниже. Стрелками на проводах показаны направления токов.

Рис.2. Функциональная схема чопперного стабилизатора

Входное напряжение Uin подается на входной фильтр - конденсатор Cin. В качестве ключевого элемента используется транзистор VT, он осуществляет высокочастотную коммутацию тока. Это может быть либо . Кроме указанных деталей в схеме содержится разрядный диод VD и выходной фильтр - LCout, с которого напряжение поступает в нагрузку Rн.

Нетрудно видеть, что нагрузка включена последовательно с элементами VT и L. Поэтому схема является последовательной. Как же происходит понижение напряжения?

Широтно-импульсная модуляция - ШИМ

Схема управления вырабатывает прямоугольные импульсы с постоянной частотой или постоянным периодом, что в сущности одно и то же. Эти импульсы показаны на рисунке 3.

Рис.3. Импульсы управления

Здесь tи время импульса, транзистор открыт, tп - время паузы, - транзистор закрыт. Соотношение tи/T называется коэффициентом заполнения duty cycle, обозначается буквой D и выражается в %% или просто в числах. Например, при D равном 50% получается, что D=0,5.

Таким образом D может изменяться от 0 до 1. При значении D=1 ключевой транзистор находится в состоянии полной проводимости, а при D=0 в состоянии отсечки, попросту говоря, закрыт. Нетрудно догадаться, что при D=50% выходное напряжение будет равно половине входного.

Совершенно очевидно, что регулирование выходного напряжения происходит за счет изменения ширины управляющего импульса tи, по сути дела изменением коэффициента D. Такой принцип регулирования называется (PWM). Практически во всех импульсных блоках питания именно с помощью ШИМ производится стабилизация выходного напряжения.

На схемах, показанных на рисунках 2 и 6 ШИМ «спрятана» в прямоугольниках с надписью «Схема управления», которая выполняет некоторые дополнительные функции. Например, это может быть плавный запуск выходного напряжения, дистанционное включение или защита преобразователя от короткого замыкания.

Вообще конвертеры получили столь широкое применение, что фирмы производители электронных компонентов наладили выпуск ШИМ контроллеров на все случаи жизни. Ассортимент настолько велик, что просто для того чтобы их перечислить понадобится целая книга. Поэтому собирать конвертеры на дискретных элементах, или как часто говорят на «рассыпухе», никому не приходит в голову.

Более того готовые конвертеры небольшой мощности можно купить на Алиэкспрес или Ebay за незначительную цену. При этом для установки в любительскую конструкцию достаточно припаять к плате провода на вход и выход, и выставить требуемое выходное напряжение.

Но вернемся к нашему рисунку 3. В данном случае коэффициент D определяет, сколько времени будет открыт (фаза 1) или закрыт (фаза 2) . Для этих двух фаз можно представить схему двумя рисунками. На рисунках НЕ ПОКАЗАНЫ те элементы, которые в данной фазе не используются.

Рис.4. Фаза 1

При открытом транзисторе ток от источника питания (гальванический элемент, аккумулятор, выпрямитель) проходит через индуктивный дроссель L, нагрузку Rн, и заряжающийся конденсатор Cout. При этом через нагрузку протекает ток, конденсатор Cout и дроссель L накапливают энергию. Ток iL ПОСТЕПЕННО ВОЗРАСТАЕТ, сказывается влияние индуктивности дросселя. Эта фаза называется накачкой.

После того, как напряжение на нагрузке достигнет заданного значения (определяется настройкой устройства управления), транзистор VT закрывается и устройство переходит ко второй фазе - фазе разряда. Закрытый транзистор на рисунке не показан вовсе, как будто его и нет. Но это означает лишь то, что транзистор закрыт.

Рис.5. Фаза 2

При закрытом транзисторе VT пополнения энергии в дросселе не происходит, поскольку источник питания отключен. Индуктивность L стремится воспрепятствовать изменению величины и направления тока (самоиндукция) протекающего через обмотку дросселя.

Поэтому ток мгновенно прекратиться не может и замыкается через цепь «диод-нагрузка». Из-за этого диод VD получил название разрядный. Как правило, это быстродействующий диод Шоттки. По истечении периода управления фаза 2 схема переключается на фазу 1, процесс повторяется снова. Максимальное напряжение на выходе рассмотренной схемы может быть равным входному, и никак не более. Чтобы получить выходное напряжение больше, чем входное, применяются повышающие преобразователи.

Пока только следует напомнить собственно о величине индуктивности, которая определяет два режима работы чоппера. При недостаточной индуктивности преобразователь будет работать в режиме разрывных токов, что совершенно недопустимо для источников питания.

Если же индуктивность достаточно большая, то работа происходит в режиме неразрывных токов, что позволяет с помощью выходных фильтров получить постоянное напряжение с приемлемым уровнем пульсаций. В режиме неразрывных токов работают и повышающие преобразователи, о которых будет рассказано ниже.

Для некоторого повышения КПД разрядный диод VD заменяется транзистором MOSFET, который в нужный момент открывается схемой управления. Такие преобразователи называются синхронными. Их применение оправдано, если мощность преобразователя достаточно велика.

Повышающие step-up или boost преобразователи

Повышающие преобразователи применяются в основном при низковольтном питании, например, от двух-трех батареек, а некоторые узлы конструкции требуют напряжения 12…15В с малым потреблением тока. Достаточно часто повышающий преобразователь кратко и понятно называют словом «бустер».

Рис.6. Функциональная схема повышающего преобразователя

Входное напряжение Uin подается на входной фильтр Cin и поступает на последовательно соединенные L и коммутирующий транзистор VT. В точку соединения катушки и стока транзистора подключен диод VD. К другому выводу диода подключены нагрузка Rн и шунтирующий конденсатор Cout.

Транзистор VT управляется схемой управления, которая вырабатывает сигнал управления стабильной частоты с регулируемым коэффициентом заполнения D, так же, как было рассказано чуть выше при описании чопперной схемы (Рис.3). Диод VD в нужные моменты времени блокирует нагрузку от ключевого транзистора.

Когда открыт ключевой транзистор правый по схеме вывод катушки L соединяется с отрицательным полюсом источника питания Uin. Нарастающий ток (сказывается влияние индуктивности) от источника питания протекает через катушку и открытый транзистор, в катушке накапливается энергия.

В это время диод VD блокирует нагрузку и выходной конденсатор от ключевой схемы, тем самым предотвращая разряд выходного конденсатора через открытый транзистор. Нагрузка в этот момент питается энергией накопленной в конденсаторе Cout. Естественно, что напряжение на выходном конденсаторе падает.

Как только напряжение на выходе станет несколько ниже заданного, (определяется настройками схемы управления), ключевой транзистор VT закрывается, и энергия, запасенная в дросселе, через диод VD подзаряжает конденсатор Cout, который подпитывает нагрузку. При этом ЭДС самоиндукции катушки L складывается с входным напряжением и передается в нагрузку, следовательно, напряжение на выходе получается больше входного напряжения.

По достижении выходным напряжением установленного уровня стабилизации схема управления открывает транзистор VT, и процесс повторяется с фазы накопления энергии.

Универсальные преобразователи - SEPIC (single-ended primary-inductor converter или преобразователь с несимметрично нагруженной первичной индуктивностью).

Подобные преобразователи применяются в основном, когда нагрузка имеет незначительную мощность, а входное напряжение изменяется относительно выходного в большую или меньшую сторону.

Рис.7. Функциональная схема преобразователя SEPIC

Очень похожа на схему повышающего преобразователя, показанного на рисунке 6, но имеет дополнительные элементы: конденсатор C1 и катушку L2. Именно эти элементы и обеспечивают работу преобразователя в режиме понижения напряжения.

Преобразователи SEPIC применяются в тех случаях, когда входное напряжение изменяется в широких пределах. В качестве примера можно привести 4V-35V to 1.23V-32V Boost Buck Voltage Step Up/Down Converter Regulator. Именно под таким названием в китайских магазинах продается преобразователь, схема которого показана на рисунке 8 (для увеличения нажмите на рисунок).

Рис.8. Принципиальная схема преобразователя SEPIC

На рисунке 9 показан внешний вид платы с обозначением основных элементов.

Рис.9. Внешний вид преобразователя SEPIC

На рисунке показаны основные детали в соответствии с рисунком 7. Следует обратить внимание на наличие двух катушек L1 L2. По этому признаку можно определить, что это именно преобразователь SEPIC.

Входное напряжение платы может быть в пределах 4…35В. При этом выходное напряжение может настраиваться в пределах 1,23…32В. Рабочая частота преобразователя 500КГц.При незначительных размерах 50 x 25 x 12мм плата обеспечивает мощность до 25 Вт. Максимальный выходной ток до 3А.

Но тут следует сделать замечание. Если выходное напряжение установить на уровне 10В, то выходной ток не может быть выше 2,5А (25Вт). При выходном напряжении 5В и максимальном токе 3А мощность составит всего 15Вт. Здесь главное не перестараться: либо не превысить максимально допустимую мощность, либо не выйди за пределы допустимого тока.


Сегодня мы рассмотрим инструкцию пошагового создания универсального DC DC преобразователя. Для чего нужен он нужен?

Чтобы полноценно ответить на этот вопрос, ознакомимся с характеристиками:

Входное напряжение 10–25В
Выходное напряжение 0–30В
Выходной ток до 2А (тут есть некоторые особенности, их затронем при расчете дросселя)

Как видим из характеристик, такой преобразователь можно использовать в автомобиле для повышения или понижения напряжения 12В. Также можно подключить такой самодельный DC DC преобразователь на выход компьютерного блока питания и без переделки получать с него разные напряжения.

Ну или же можно взять блок питания от ноутбука и опять же получать на выходе любое напряжение. Это очень удобно, поскольку не нужно заботиться о питающем напряжении.

Повышающий/понижающий DC DC преобразователь - схема


Тут у нас всем знакомая tl494, ей уже много лет, но она до сих пор не сдает свои позиции.

К слову, мы уже рассматривали, как создать .

Сначала была идея создать DC DC преобразователь на UС3843, но она оказалась неудачной. Плюс если делать регулировку по току, то нужно ставить второй шунт, а это снижает итоговый КПД устройства.

В изделии по схеме есть регулировка напряжения, тока, а также установлен драйвер полевика. С ним немного уменьшился нагрев.


Также можно увидеть, что ограничена максимальная ширина выходного импульса, так как при максимальном заполнении схема уходила в непонятный режим, жрала много тока, но на выходе напряжение падало.


Максимальное выходное напряжение равняется 30В.


Если нужно больше, то придется пересчитать номинал вот этих резисторов:


Причем с таким расчетом, чтобы при нужном выходном напряжении в точке делителя было 5В.


Также у нас ограничен ток, он составляет 2А. Если нужно больше, то необходимо пересчитать вот этот резистор:


Тут уже немного сложнее. Для начала необходимо выяснить сколько вольт упадет на шунте. К примеру, нам нужен ток 4А. Тогда смотрим, при каком токе на резисторе упадет 0,4В.


Теперь пересчитываем резистор. Нужно, чтобы в точке деления переменного и постоянного резистора, напряжение было 0,4В. Для этого можно воспользоваться онлайн-калькулятором.


Схему и печатную плату можно скачать ниже.

Файлы для скачивания:

Принцип работы DC DC преобразователя по схеме

Точка отсчета - устройство выключено.


Подаем питание. Ключ разомкнут, а значит ток течет через катушку индуктивности, конденсатор и диод прямо в нагрузку и выходной конденсатор.


Дальше происходит замыкание ключа. В этот момент в катушке L1 накапливается энергия. Проходной конденсатор был заряжен напряжением питания, и поскольку после замыкания ключа он оказывается включенным параллельно индуктивности L2, то он ее заряжает. Напряжение с L2 не может уйти в нагрузку, так как там стоит диод и у него на катоде напряжение выше, чем на аноде.


Теперь ключ снова размыкаем, и напряжение на L1 складывается с напряжением самоиндукции.


Таким образом, на проходной конденсатор и нагрузку идет уже повышенное напряжение.


Изменяя коэффициент заполнения ШИМ, мы изменяем выходное напряжение.


Если ширина импульса достаточно маленькая, то и величина самоиндукции меньше, а, следовательно, выходное напряжение уменьшается. Преимущество такой схемы перед обыкновенным повышающим DC DC преобразователем в том, что здесь установлен проходной конденсатор, который в случае короткого замыкания не даст выйти из строя схеме.

Монтаж повышающего/понижающего DC DC преобразователя своими руками

Как уже говорилось выше, некоторые компоненты схемы необходимо рассчитать, благо в сети есть много готовых онлайн калькуляторов.

  • Смотрите также
Как же в реальной жизни их намотать катушки с нужной индуктивностью? Те, у кого есть ESR метр скажут, что тут нет ничего сложного, мотаешь и смотришь параметры.


Но этот ESR метр показывает с очень большой погрешностью, поэтому предлагает воспользоваться программой DrosselRing. В ней вводим все необходимые параметры, а также указываем какой у нас сердечник. Если никаких нет под рукой, то достаем 2 одинаковых желтых кольца из компьютерного блока питания.


Ну и осталось намотать наши дроссели, это уже не составит особого труда.


Получилось довольно-таки неплохо. Казалось бы, все сложности уже позади, но нет, впереди еще разводка печатной платы DC DC. Преобразователя. Чтобы максимально компактно расположить все элементы, понадобится немало времени.


Для крепления можно сделать плату немного больше и добавить по бокам отверстия, но это уже на ваше усмотрение.


Плата готова, просверлены отверстия, настала очередь запайки. Тут есть один важный момент: необходимо поднять силовые элементы выше над платой, так как потом их невозможно будет достать отверткой.


Теперь необходимо установить транзистор и диод на радиатор. Мы используем вот такой алюминиевый профиль, он имеет неплохие габариты и сможет нормально охлаждать схему.

Пролог.

У меня есть два мультиметра, и оба имеют один и тот же недостаток – питание от батареи напряжением 9-ть Вольт типа «Крона».

Всегда старался иметь в запасе свежую 9-тивольтовую батарею, но, почему-то, когда требовалось что-то измерить с точностью выше, чем у стрелочного прибора, «Крона» оказывалась либо неработоспособной, либо её хватало всего на несколько часов работы.

Порядок намотки импульсного трансформатора.

Намотать прокладку на кольцевой сердечник столь малых размеров очень сложно, а мотать провод на голый сердечник неудобно и опасно. Изоляция провода может повредиться об острые грани кольца. Чтобы предотвратить повреждение изоляции, притупите острые кромки магнитопровода, как описано .

Чтобы во время укладки провода, витки не «разбегались», полезно, покрыть сердечник тонким слоем клея «88Н» и просушить до намотки.



Вначале мотаются вторичные обмотки III и IV (см. схему преобразователя). Их нужно намотать сразу в два провода. Витки можно закрепить клеем, например, «БФ-2» или «БФ-4».

У меня не нашлось подходящего провода, и я вместо провода расчётного диаметра 0,16мм использовал провод диаметром 0,18мм, что привело к образованию второго слоя в несколько витков.


Затем, так же в два провода, мотаются первичные обмотки I и II. Витки первичных обмоток также можно закрепить клеем.

Преобразователь я собрал методом навесного монтажа, предварительно связав х/б нитью транзисторы, конденсаторы и трансформатор.


Вход, выход и общую шину преобразователя вывел гибким многожильным проводом.


Настройка преобразователя.

Настройка может потребоваться для установки необходимого уровня выходного напряжения.

Я так подобрал количество витков, чтобы при напряжении на аккумуляторе 1,0 Вольт, на выходе преобразователя было около 7 Вольт. При этом напряжении, в мультиметре зажигается индикатор разряда батареи. Таким образом, можно предотвратить слишком глубокий разряд аккумулятора.

Если вместо предложенных транзисторов КТ209К будут использованы другие, тогда придётся подобрать количество витков вторичной обмотки трансформатора. Это связано с разной величиной падения напряжения на p-n переходах у различных типов транзисторов.

Я испытывал эту схему на транзисторах КТ502 при неизменных параметрах трансформатора. Выходное напряжение при этом снизилось на вольт или около того.

Также нужно иметь в виду, что база-эмиттерные переходы транзисторов одновременно являются выпрямителями выходного напряжения. Поэтому, при выборе транзисторов, нужно обратить внимание на этот параметр. То есть, максимально-допустимое напряжение база-эмиттер должно превышать необходимое выходное напряжение преобразователя.


Если генерация не возникает, проверьте фазировку всех катушек. Точками на схеме преобразователя (см. выше) отмечено начало каждой обмотки.


Чтобы не возникало путаницы при фазировке катушек кольцевого магнитопровода, примите за начало всех обмоток, например , все выводы выходящие снизу, а за конец всех обмоток, все выводы выходящие сверху.


Окончательная сборка импульсного преобразователя напряжения.

Перед окончательной сборкой, все элементы схемы были соединены многожильным проводом, и была проверена способность схемы принимать и отдавать энергию.


Для предотвращения замыкания, импульсный преобразователь напряжения был со стороны контактов заизолирован силиконовым герметиком.


Затем все элементы конструкции были размещены в корпусе от «Кроны». Для того, чтобы передняя крышка с разъёмом не утапливалась внутрь, между передней и задней стенками была вставлена пластинка из целлулоида. После чего, задняя крышка была закреплена клеем «88Н».


Для зарядки модернизированной "Кроны" пришлось изготовить дополнительный кабель со штекером типа Джек 3,5мм на одном из концов. На другом конце кабеля, для снижения вероятности короткого замыкания, были установлены стандартные приборные гнёзда, вместо аналогичных штекеров.

Доработка мультиметра.

Мультиметр DT-830B сразу же заработал от модернизированной «Кроны». А вот тестер M890C+ пришлось немного доработать.

Дело в том, что в большинстве современных мультиметров задействована функция автоматического отключения питания. На картинке показана часть панели управления мультиметра, где обозначена данная функция.


Схема автоотключения (Auto Power Off) работает следующим образом. При подключении батареи, заряжется конденсатор С10. При включении питания, пока конденсатор C10 разряжается через резистор R36, на выходе компаратора IC1 удерживается высокий потенциал, что приводит к отпиранию транзисторов VT2 и VT3. Через открытый транзистор VT3 напряжение питания и попадает в схему мультиметра.


Как видите, для нормальной работы схемы, нужно подать питание на С10 ещё до того, как включится основная нагрузка, что невозможно, так как наша модернизированная «Крона», напротив, включится только тогда, когда появится нагрузка.


В общем, вся доработка заключалась в установке дополнительной перемычки. Для неё я выбрал место, где это было сделать удобнее всего.

К сожалению, обозначения элементов на электрической схеме не совпали с обозначениями на печатной плате моего мультиметра, поэтому точки для установки перемычки нашёл так. Прозвонкой выявил нужный вывод выключателя, а шину питания +9V определил по 8-ой ножке операционного усилителя IC1 (L358).


Мелкие подробности.

Сложно было приобрести всего один аккумулятор. Их в основном продают, либо парами, либо по четыре штуки. Однако некоторые комплекты, например, «Varta», поставляются по пять аккумуляторов в блистере. Если Вам повезёт так же, как и мне, то Вы сможете разделить с кем-нибудь такой комплект. Аккумулятор я купил всего за 3,3$, тогда как одна «Крона» стоит от 1$ до 3,75$. Есть, правда, ещё «Кроны» и по 0,5$, но те и вовсе мёртворождённые.

Импульсные преобразователи и силовая электроника в целом, всегда оставались чем-то сакральным для большинства любителей и профессионалов в области разработки электроники. В статье освещается пожалуй самая интересная тема в среде DIY-щиков и фанатов альтернативной энергетики - формирование синусоидального напряжения/тока из постоянного.

Думаю многие из вас наверняка видели рекламу, либо читали статьи, где была фраза «чистый синус». Вот именно о нем и пойдет речь, но не о маркетинговой составляющей, а о исключительно технической реализации. Я постараюсь максимально понятно рассказать о самих принципах работы, о стандартных (и не очень) схемотехнических решениях и самое главное - напишем и разберем ПО для микроконтроллера STM32, которое и сформирует нам необходимые сигналы.

Почему STM32? Да потому, что сейчас это самый популярный МК в СНГ: по ним много обучающей русскоязычной информации, есть куча примеров, а главное эти МК и средства отладки для них - очень дешевые. Скажу прямо - в коммерческом проекте я бы поставил только TMS320F28035 или подобный DSP из серии Piccolo от TI, но это уже совсем другая история.

Важно одно - STM32 позволяет стабильно управлять простыми «бытовыми» силовыми преобразователями от которых не зависит судьба мира работа какой-нибудь АЭС или ЦОДа.

Вот такую картину управляющих сигналов необходимо получить, чтобы превратить ток постоянный в переменный. И да - тут именно синус! Как в том фильме: «Видишь суслика? - Нет. - А он есть...»

Интересно узнать каким образом формируется синус? Хочется узнать как все-таки качают нефть киловатты энергии? Тогда добро пожаловать под кат!

1. Топологии для формирования синусоидального сигнала

Если спросить у толпы электронщиков: «Как можно сформировать синусоидальный сигнал?», то посыпятся предложения с десятком различных методов, но какой нужен нам? Давайте оттолкнемся от изначальной задачи - нам нужно превратить, например, 380В 10А в переменное напряжение 230В. В общем это «классический» случай, его мы можете увидеть в любом хорошем on-line UPS или инверторе. Получается нам надо преобразовать мощность около 4 кВт да еще и с хорошим КПД, не слабо, да? Я думаю подобное условие поубавит количество вариантов «рисования» синуса. Так что же нам остается?

В силовых преобразователях до 6-10 кВт применяется две основные топологии: полный мост и «полумост» со сквозной нейтралью. Выглядят они следующим образом :

1) Топология со сквозной нейтралью

Данная топология очень чаще всего встречается в бюджетных ИБП с синусом на выходе, хотя и такие авторитеты как APC и GE не брезгуют применять ее даже на достаточно больших мощностях. Что же их побуждает к этому? Давайте рассмотрим достоинства и недостатки данной топологии.

Плюсы:

  • Минимально возможное количество силовых транзисторов, а значит потери в 2 раза меньши и стоимость устройства тоже ниже
  • Сквозной ноль. Это упрощает процесс сертификации, особенно CE и ATEX. Связано это с тем, что сквозной ноль позволяет системам защиты по входу (например, УЗО) срабатывать так же при возникновение аварии в выходных цепях после преобразователя
  • Простая топология, что позволяем максимально уменьшить стоимость изделия при мелко-
    и средне серийном производстве

Минусы:

  • Необходимость двухполярного источника питания. Как видите на схему инвертора надо подавать ±380В и еще ноль
  • Удвоенное количество высоковольтных конденсаторов. Высоковольтные конденсаторы большой емкости и с малым ESR на мощностях от 3-4 кВт начинают составлять от 20 до 40%
    стоимости компонентов
  • Применение электролитических конденсаторов в «делителе». Они сохнут, подобрать конденсаторы с одинаковыми параметрами практически нереально, а если учесть, что параметры электролитов меняются в процессе эксплуатации, то и бессмысленно. Заменить на пленку можно, но дорого
Основные плюсы и минусы определены, так когда необходима это топология? Мое субъективное мнение: на мощностях до 500-1000 Вт, когда основополагающим требованием является стоимость, а не надежность. Явный представитель такого ширпотреба - это стабилизаторы от «А-электроника»: дешево, кое-как работает да и ладно. Для 60% потребителей в нашей стране этого достаточно и доступно по цене. Делаем выводы.

2) Мостовая топология

Мостовая топология… наверное самая понятная и самая распространенная топология в силовых преобразователях, а главное доступная разработчикам даже с небольшим опытом. После 10 кВт вы не встретите ничего другого кроме моста одно- или трехфазного. За что же его так любят?

Плюсы:

  • Очень высокая надежность. Она в основном обусловлена качеством системы управления силовыми транзисторами и не зависит от деградации компонентов
  • Входная емкость требуется в разы, а то и на порядок меньше. Необходимо лишь обеспечить расчетное значение ESR. Это позволяет использовать пленочные конденсаторы при сохранение себестоимости. Пленочные конденсаторы - не сохнут, лучше ведут в суровых температурах, рабочий ресурс на порядок выше, чем у электролитов
  • Минимальные пульсации напряжения на транзисторах, а значит можно применить транзисторы на меньшее напряжение
  • Простота и понятность алгоритмов работы. Это приводит к значительному уменьшению времени на разработку изделия, а также на его пуско-наладочные работы

Минусы:

  • Увеличенное количество силовых транзисторов, а значит необходимо более серьезное охлаждение. Увеличение цены на транзисторах, но за счет меньшего количества конденсаторов это скорее даже плюс
  • Повышенная сложность драйвера, особенно при требованиях к наличию гальванической развязки
Как видите из реальных минусов мостовой топологии лишь повышенное требование к охлаждению транзисторов. Многие подумают: «Тепла выделяетсябольше - значит КПД ниже!». Не совсем так… За счет уменьшенных выбросов ЭДС и более «жесткой» системы управления КПД у двух приведенных топологий примерно равный.

В 70% случаев мне приходится применять мостовую схему не только в DC/AC инверторах, но и в других преобразователях. Это связано с тем, что проектирую в основном промышленные решения и все чаще для европейских заказчиков, а там принято на дорогие промышленные устройства давать гарантию 5-15 лет. Классическое требование: «Хотим железку, чтобы можно было давать гарантию 10 лет», тут уже выбирать не приходится. Конечно, когда люди хотят устройство с минимальной ценой, то тут необходимо уже отталкиваться от конкретной задачи при выборе топологии.

Небольшой итог : в данной статье будет приведено ПО для работы мостового преобразователя (Н-мост или Full Bridge), но сам принцип формирования синуса одинаковый для всех топологий. Код можно будет также адаптировать и под 1-ю топологию, но это вы уже сами.

2. Формирование переменного тока с помощью мостового преобразователя

Для начала давайте разберем как вообще работает мостовой преобразователь. Смотрим на схемку и видим транзисторы VT1-VT4. Они позволяют нам подавать на нашу абстрактную нагрузку (резистор, например) тот или иной потенциал. Если мы откроем транзисторы VT1 и VT4, то получится следующее: VT4 один конец нагрузки подключит к минусу (GND), а транзистор VT1 подключит к +380В, на нагрузке появится разность потенциалов «380В - 0В», которая не равна нулю, а значит через нагрузку начнет протекать ток. Я думаю все помнят, что ученые договорились - ток протекает «от плюса к минусу». Получаем такую картину:

Что мы получили открыв VT1 и VT4? Мы подключили нашу нагрузку к сети! Если резистор заменить на лампочку, то он она бы просто загорелась. И еще мы не просто включили нагрузку, а определили направление тока, протекающего через нее. Это очень важно! А что было в это время с VT2 и VT3? Они были закрыты… совсем… намертво… Что будет если все таки VT2 или VT3 были так же открыты? Смотрим:

Предположим, что открылись транзисторы VT1, VT4 и VT2. Вспоминаем закон Ома, смотрим сопротивление канала у высоковольтных транзисторов, например, IPP60R099P7XKSA1 и видим 0.1 Ом, у нас их 2 последовательно - значит сопротивление цепи VT1 и VT2 у нас около 0.2 Ом. Теперь посчитаем ток, которые пойдет через эту цепь: 380В / 0.2 Ом = 1900А. Думаю всем понятно, что это КЗ? Так же думаю всем понятно почему VT2 и VT3 должны быть закрыты?

Данный «феномен» называется - сквозной ток . И именно с ним идет большая война в силовой электронике. Как его избежать? Создать систему управления, алгоритм которой будет жестко запрещать одновременной открытие лишнего транзистора.

Зачем же нужны тогда транзисторы VT2 и VT3? Помните я писал, что очень важно направление тока? Давайте вспомнит что такое переменные ток. Собственно это ток, который имеет что-то переменное, в данном случае направление тока. У нас в розетке протекает ток, который меняет свое направление 100 раз в секунду. Давайте теперь закроем VT1 и VT4, а затем откроем транзисторы VT2 и VT3 и получим такую картину:

Как видите направление тока (обозначено стрелками) изменилось на противоположное. Использование моста позволило нам менять направление тока, о чем это говорит? Да, мы получили переменный ток!

Прошу обратить внимание, что у моста есть как бы 2 диагонали: первая диагональ образована VT1+VT4, а вторая диагональ образована с помощью VT2+VT3. Данные диагонали работают по очереди, коммутирую ток сначала в одну сторону, а потом в другую.

Вот мы получили переменный ток, скажите вы, но не все так просто… У нас есть стандарт - сетевое напряжение. Оно нормируется двумя основными параметрами: напряжение и частота. Давайте пока разберемся с частотой, ибо вопрос напряжения простой и чисто схемотехнический.

И так частота… что о ней известно - она 50 Гц (бывает 60Гц в Штатах). Период сигнала равен 20 мс. Синусоида штука симметричная в данном случае, а значит наши 2 полуволны (положительная и отрицательная) имеют одинаковую длительность, то есть 10 мс + 10 мс. Надеюсь тут все понятно.

Что это значит в физическом смысле? Да то, что нам нужно менять направление тока в нагрузке каждые 10 мс. Получаем, что сначала у нас открыта 10 мс диагональ VT1+VT4, а затем она закрывается и на следующие 10 мс открывается диагональ VT2+VT3.

Что значит открыть транзистор и какой сигнал на него подавать

Давайте отвлечемся немного на принцип управления транзисторами. Я использую полевые N-канальные транзисторы с изолированным затвором (Mosfet).

«Открытый транзистор» - это транзистор, на затвор (G) которого подали положительный потенциал (+10..18В) относительно истока (S) и транзистор изменил сопротивление канала (S-D) с бесконечно большого (2-100 МОм) на малое (обычно 0.1 - 1 Ом). То есть транзистор начал проводить ток.

«Закрытый транзистор» - это транзистор, затвор (G) которого подтянули к истоку (S) и его сопротивление изменилось с маленького до бесконечно большого. То есть транзистор перестал проводить ток.

Для лучше ознакомления с принципом работы полевого транзистора или IGBT - советую вам прочитать пару глав в книге Семенова «Основы силовой электроники» или другой источник, можно и википедию для начала.

Для управления мы подаем сигнал с Широтно-Импульсной Модуляцией или более привычная аббревиатура - ШИМ. Особенность данного сигнала в том, что у него есть 2 состояния: нижнее напряжение (GND) и верхнее напряжение (VCC), то есть подавая его на затвор транзистора мы или открываем его или закрываем - иного не дано. Про ШИМ тоже советую почитать дополнительно, ибо я вам описал для ленивых поверхностно.


И так, для того, чтобы у нас мост менял направление тока каждые 10 мс нам нужно подать на него ШИМ сигнал, период которого равен 20 мс, а скважность 50%. Это значит, что у нас из 20 мс плечо половину времени (10 мс) открыто и проводит ток, а другую половину закрыто. Подавать такой ШИМ нам надо на все ключи, но с одним условием - на диагональ VT1+VT4 мы подаем прямой ШИМ, а на диагональ VT2+VT3 уже инверсный. Если говорить более по-умному, то сигнал, подаваемый на диагонали должен иметь сдвиг 180 0 . Я думаю в этот момент у вас голова закипела в попытках понять текст, поэтому смотрим на его визуальное представление:

Теперь все понятно? Нет? Тогда подробнее… Как видите я отметил специально моменты открытия и закрытия транзисторов: открываются на «плюсе» и закрываются на «минусе». Также сигналы противоположны, то есть инверсные: когда синий сигнал «плюс», то зеленый сигнал «минус». Синий сигнал мы подаем на один на одну диагональ, а зеленый сигнал на другую - как видно на осциллограмме, наши диагонали никогда не открываются одновременно. Переменный ток готов!

Смотри на период. Специально показал осциллограмму с выходов контроллера, чтобы мои слова не были абстракцией. Период сигнала составляет 20 мс, одна диагональ открыта 10 мс и создает положительную полуволну, другая диагональ так же открывается на 10 мс и создает уже отрицательную полуволну. Теперь надеюсь всем понятно, а кто и сейчас не понял - пишите в ЛС, проведу для вас индивидуальное занятие на пальцах. В подтверждение моих слов осциллограмма показывает наши заветные 50 Гц! Только расслабляться рано…

Мы получили переменный ток с частотой 50 Гц, но в розетке у нас синусода, а тут меандр - не дело. Формально можно подавать меандр на выход и питать им большинство нагрузок, например, импульсному блоку питанию все равно: синус или меандр. То есть для включения ноутбуков, телефонов, телевизоров, телефонов и прочего вам уже хватит, но если вы подключите двигатель переменного тока, то все будет очень плохо - он начнет греться и КПД его ощутимо меньше, а в итоге скорее всего сгорит. Вы думаете у вас нет двигателей дома? А компрессор холодильника? А циркулярный насос отопления? Последние вообще горят как будто из дерева сделаны. Такая же ситуация с глубинными насосами для скважин, да и вообще много с чем. Получается, что синусоидальный сигнал на выходе инвертора, стабилизатора или ИБП все таки бывает важен. Что же - надо его создать! Сейчас начнется совсем взрыв мозга…

3. Формирование синусоидальной формы сигнала с помощью ШИМ

Если говорить откровенно, то я не знаю как данный раздел преподнести на доступном языке. Вдруг кто не поймет, то прошу вас или погуглить дополнительно, или написать в комментарии или ЛС - попытаюсь персонально вам объяснить. Глаза боятся, а руки делают…

Давайте посмотрим как выглядит обычный график синуса:

Видим 2 оси: одна ось с периодом пи, пи/2 и далее, вторая с амплитудой от -1 до +1. В нашей задаче период измеряется в секундах и составляет 20 мс или 10 мс на каждую полуволну. Тут все просто и понятно, а вот с амплитудой веселее - просто примите как аксиому, что амплитуда у нас от 0 до 1000. Это значение скважности, которую устанавливает микроконтроллер, то есть 100 - это 10%, 500 - 50%, 900 - 90%. Логика думаю понятна. В следующей главе вы поймете почему от 0 до 1000, а пока перестроим наш график под наши значения:

Вот так выглядит график синуса курильщика, который соответствует нашей задачи. Как видите отрицательный полупериод я не обозначил, т.к. у нас он реализуется не с помощью синусоидального сигнала, а с помощью изменения направления тока переключением диагоналей моста.

По оси Х у нас время, а по оси Y скважность нашего ШИМ-сигнала. Нам нужно нарисовать синус с помощью ШИМа. Вспоминаем геометрию в школе, как мы строили графики? Правильно, по точкам! А сколько точек? Давайте построим синус по нескольким точкам О1(0,0) + О2(5,1000) + О3(10,0) + О4(15, -1000) + О5(20, 0) и получаем такой синус:

Построили и видим, что в принципе данный сигнал больше похож на синус чем обычный меандр, но это все равно не синус пока что. Давайте увеличим количество точек. Это кстати называется «дискретность сигнала» или в данном случае «дискретность ШИМа». А как узнать координаты этих точек? С крайними то просто было…

Расчет значений для формирования синуса

Как выше я говорил - синус у нас вполне себе симметричный. Если мы построим 1/4 периода, то есть от 0 до 5 мс, то дублируя этот кусок дальше - мы можем строить синус бесконечно долго. И так формула:


И так по порядку:
  • n - значение скважности в данной дискретной точке
  • A - амплитуда сигнала, то есть максимальное значение скважности. У нас это 1000
  • pi/2 - 1/4 периода синуса попадает в pi/2, если считаем 1/2 периода, то pi
  • x - номер шага
  • N - количество точек
Давайте для примера сделаем удобно условие, что у нас 5 точек. Получается у нас 1 шаг = 1 мс, это позволит легко график построить. Шаг дискретизации считается просто: период в котором строим график (5 мс) делим на количество точек. Давайте приведем формулу к человеческому виду:


Получаем шаг дискретизации 1 мс. Формулу для вычисления скважности оформим, например, в excel и получим следующую таблицу:

Теперь вернется к нашему графику синуса и построим его снова, но уже для большего количества точек и посмотрим как он изменится:

Как видим сигнал куда больше похож на синус, даже с учетом моего мастерства в рисовании, а точнее в уровне лени)) Я думаю результат не требует объяснений? По результатам построения выведем аксиому:

Чем больше точек, чем выше дискретизация сигнала, тем идеальнее форма синусоидального сигнала


И так, сколько же точек будем использовать… Понятно, что чем больше, тем лучше. Как посчитать:
  1. Использую для статьи старенький микроконтроллер STM32F100RBT6 (отладка STM32VL-Discovery), его частота 24 МГц.
  2. Считаем сколько тактов будет длиться период 20 мс: 24 000 000 Гц / 50 Гц = 480 000 тиков
  3. Значит половина периода длится 240 000 тиков, что соответствует частоте 24 кГц. Хотите повысить несущую частоту - берите камень шустрее. 24 кГц наши уши все таки услышат, но для тестов или железки, стоящей в подвале пойдет. Чуть позже я планирую перенести на F103C8T6, а там уже 72 МГц.
  4. 240 000 тиков… Тут логично напрашивается 240 точек на половину периода. Таймер будет обновлять значение скважности каждые 1000 тиков или каждые 41,6 мкс
С дискретностью ШИМа определились, 240 точек на пол периода с запасом хватит, чтобы получить форму сигнала как минимум не хуже, чем в сети. Теперь считаем таблицу, так же в excel как самый простой вариант. Получаем такой график:

Исходник таблицы и значений можно взять по ссылке - .

4. Управление мостовым преобразователем для формирования синуса

Мы получили таблицу синуса и что с ней делать? Нужно передавать эти значения с определенным шагом дискретизации, который у нас известен. Все начинается с того, что таймер инициализировался - время 0, скважность ноль. Далее мы отсчитываем шаг дискретизации 41,66 мкс и записываем в таймер значение ШИМа из таблицы 13 (0,13%), отсчитываем еще 41,66 мкс и записываем 26 (0,26%) и так далее все 240 значений. Почему 240? У нас 120 шагов на 1/4 периода, а нам надо нарисовать 1/2 периода. Значения скважности те же, только после того как они достигли 1000 мы записываем ее в обратной последовательность и получаем спад синуса. На выходе мы будем иметь вот такую осциллограмму:

Как видите мы получили кучу значений ШИМа в четко заданном периоде и его длительность составляет: 240 шагов х 41,66(!) мкс = 9998,4 мкс = 9,9984 мс ~ 10 мс. Мы получили половину периода для частоты сети 50 Гц. Сигнала как видите опять два и они в противофазе, как раз то, что нужно для управления диагоналями моста. Но позвольте, где же синус спросите вы? Настал момент истины! Давайте теперь сигнал с выхода микроконтроллера подадим на ФНЧ, я сделал простой ФНЧ на RC-цепочки с номиналами 1,5 кОм и 0,33 мкФ (под рукой просто были) и получил такой результат:

Вуаля! Вот он наш долгожданный синус! Красный луч осциллографа - это сигнал до ФНЧ, а желтый луч - сигнал уже после фильтрации. ФНЧ обрезал все частоты выше 321 Гц. У нас остался основной сигнал 50 Гц, ну и конечно его гармоники с небольшой амплитудой. Если хотите идеально очистить сигнал, то сделайте ФНЧ с частотой среза около 55-60 Гц, но пока это не важно, нам надо было лишь проверить получился ли у нас синус или нет. Кстати… у меня синхронизация осциллографа включена по желтому лучу (стрелка справа экрана) и мы видим внизу экрана его частоту - идеальные 50 Гц. Что еще можно пожелать? Пожалуй все, осталось определиться какой сигнал и куда подавать. Давайте рассмотрим такую картинку:

Если вы обратите на саааамую первую осциллограмму в статье, то увидите, что сигнал в желтом и синем лучше имеют одинаковую фазу, то есть они в одно время становятся положительными и открывают транзисторы. Эти 2 сигнала открывают диагональ VT1+VT4. Соответственно 2 других сигнала так же имеют одинаковую фазу и открывают другую диагональ. Теперь мы не просто меняем направление тока, но и задаем амплитуду с помощью ШИМ таким образом, чтобы она изменялась по синусоидальному закону. Теперь рассмотрим эту же схемку, но уже с токами:

Как видим ток через нагрузку протекает в противоположную сторону, меняя направление с частотой 50 Гц, а модулированный ШИМ, подаваемый на транзисторы VT1 и VT2 позволяет нарисовать синусоидальную форму сигнала на полуволнах.

ФНЧ (фильтр низкой частоты) выполнен на индуктивности L1 и конденсаторе C2. Частоту среза для данного фильтра советую считать менее 100 Гц, это позволит минимизировать пульсации напряжения по выходу.

На десерт покажу часть схемы реального устройства с подобной топологией и фильтром, она большая, поэтому скачиваем PDF-ку .

5. Борьба со сквозными токами

Я думаю не для кого не секрет, что нет ничего идеального? Тоже самое и с Mosfet-ами, у них есть ряд недостатков и мы рассмотрим один из них - большая емкость затвора. То есть, чтобы нам открыть транзистор надо не просто подать напряжение, но и этим самым напряжением зарядить конденсатор, поэтому фронт и спад сигнала затягивается. Это приводит к тому, что на границе сигналов может возникать момент времени, когда один транзистор еще полностью не закрылся, а другой уже начал открываться.

Подробнее о данном явление советую почитать, например, в этой статье . Я лишь расскажу как с ним бороться. Чтобы транзисторы успели нормально закрыться до открытия следующего плеча между управляющими сигналами вводят dead-time или проще говоря - временную задержку. У нас такая задержка будет введена между управляющими сигналами на транзисторах VT3 и VT4, т.к. именно они обеспечивают коммутацию полуволн. На транзисторах с модулируемым ШИМом (VT1 и VT2) такие задержки уже есть - синус начинается со скважности 0% и заканчивается тоже 0%. Эта задержка длиной в 1 шаг дискретизации, то есть 41.6 мкс.

И так - надо реализовать мертвое время между синим и зеленым лучом/сигналом. На любом контроллере такую задержку можно сделать программным способом, но это не есть хорошо - программа подвиснет или задержится и пыщ-пыщ ваше устройство и квартира уже объяты огнем. Поэтому в силовой электронике стоит применять только аппаратные средства. На всех специализированных motor control аппаратный deadtime предусмотрен на всех выходах ШИМа и каналах, но STM32 это все таки МК общего назначения, поэтому тут все проще, но нашу функцию он выполнит.

Нам понадобится таймер TIM1, только он умеет вставлять аппаратную задержку между сигналами, в разделе про написание ПО я расскажу как это сделать, а сейчас смотрим на результат и на то, что вообще должно быть:

Чтобы увидеть задержку «растягиваем» сигнал на осциллографе, т.к. он имеет небольшую длительность около 300 нс. Необходимое время длительности deadtime необходимо рассчитывать для каждой конкретной задачи, чтобы защитить транзисторы от сквозных токов. Длительность задержки настраивается при иннициализации (настройке) таймера TIM1. Данная задержка присутствует и на фронте и на спаде сигнала.

6. Написание встроенного ПО для микроконтроллера STM32

Вот мы и подошли наверное к самой важной и интересной части. Физику процесса мы разобрали, принцип работы вроде понятен, необходимый минимум защит тоже определен - осталось только все это реализовать в реальном железе. Для этого я использую платку STM32VL-Discovery, получил ее кстати еще в 2011 году во времена, когда ST раздавали отладки бесплатно на своих конференциях и с тех пор она лежала запакованная - открыл упаковку всего пару месяцев назад, вроде срок годности не прошел))) Выглядит мой «стенд» для написание кода вот так:

Теперь пройдемся по подключению. Так как мне необходимо формировать два сигнала с разной частотой, то пришлось задействовать выходы ШИМ на разных таймерах. TIM1 формирует сигнал, который задает основную частоту 50 Гц и подает их на транзисторы VT3 и VT4. Используется канал ШИМа №3 + его комплементарный выход. Да да, в STM32 аппаратный deadtime можно настроить только между обычным и комплементарным выходом одного канала, что мне сильно не понравилось. Сам процесс формированию синуса передан таймеру TIM2, тут уже не нужна задержка (ранее писал почему) и он вполне сгодится для формирование модулированного сигнала на VT1 и VT2.

Используемые выходы:

  • PA10 - обычный выход ШИМ, канал №3 таймера TIM1, который генерирует 50 Гц на транзистор VT3
  • PB15 - комплементарный выход канала №3 таймера TIM1, который подается на транзистор VT4
  • PA0 - выход ШИМ канала №1 таймера TIM2. Подает модулированный сигнал на VT1
  • PA1 - выход ШИМ канала №2 таймера TIM2. Подает модулированный сигнал на VT2
Проект реализован в среде Keil 5, он будет в конце статьи прикреплен к архивом. Рассказывать как создавать проект и подобные очевидные вещи надеюсь не стоит, если такие вопросы возникают, то советую посмотреть как это делать в гугле или на youtube. Весь код написан на CMSIS (регистры), т.к. использовать в системе управления преобразователем какие-либо дополнительные уровни абстракции просто грех! У ST это библиотеки SPL и более актуальные HAL. Для интереса поработал и с теми и с теми, вывод - хлам полный. HAL так вообще безумно тормознутый и для приложений с жестким реал-таймом просто не подходит от слова совсем. В некоторых критичных моментах регистры были в разы быстрее, об этом кстати нашел не одну статью на просторах интернета.

Некоторые наверняка спросят: «А почему не задействовать DMA?» Сделать это можно и нужно, но данная статья носит скорее ознакомительный характер, да и сам МК не делает ничего сложного в плане вычислений, поэтому в производительность ядра тут точно не упереться. DMA - это хорошо, но без DMA можно обойтись без каких-либо потенциальных проблем. Давайте уточним, что нам нужно сделать в программе:

  1. Создать массив с нашими 240 точками синуса
  2. Настроить цепи тактирования на частоту 24 МГц, выбрав источник внешний кварцевый резонатор
  3. Настроить таймер TIM1 на генерацию ШИМ 50 Гц с включенным deadtime
  4. Настроить TIM2 на генерацию ШИМ с несущей частотой 24 кГц
  5. Настроить таймер TIM6, который генерирует прерывания с частотой 24 кГц. В нем мы будем отправлять следующее значение скважности из таблицы в таймер TIM2, а также чередовать генерацию полуволн
Ничего сложного, правда? Тогда поехали…

6.1. Создание таблицы синуса

Тут все просто, обычный массив. Единственное, что стоит помнить - у нас 120 точек от 0 до 1000. Нам нужно добавить в таблицу еще 120 точек, но в обратной последовательности:

Uint16_t sin_data = {13,26,39,52,65,78,91,104,117,130,143,156,169,182,195,207,220,233,246,258, 271,284,296,309,321,333,346,358,370,382,394,406,418,430,442,453,465,477,488,500, 511,522,533,544,555,566,577,587,598,608,619,629,639,649,659,669,678,688,697,707, 716,725,734,743,751,760,768,777,785,793,801,809,816,824,831,838,845,852,859,866, 872,878,884,891,896,902,908,913,918,923,928,933,938,942,946,951,955,958,962,965, 969,972,975,978,980,983,985,987,989,991,993,994,995,996,997,998,999,999,999,1000, 999,999,999,998,997,996,995,994,993,991,989,987,985,983,980,978,975,972,969,965, 962,958,955,951,946,942,938,933,928,923,918,913,908,902,896,891,884,878,872,866, 859,852,845,838,831,824,816,809,801,793,785,777,768,760,751,743,734,725,716,707, 697,688,678,669,659,649,639,629,619,608,598,587,577,566,555,544,533,522,511,500, 488,477,465,453,442,430,418,406,394,382,370,358,346,333,321,309,296,284,271,258, 246,233,220,207,195,182,169,156,143,130,117,104,91,78,65,52,39,26,13};

6.2. Настройка системы тактирования

Настройка тактирования в STM32 весьма гибкая и удобная, но есть несколько нюансов. Сама последовательность выглядит следующим образом:

1) Переключаемся на тактирование от встроенной RC-цепочки (HSI) на внешний кварц (HSE), дальше ждем флага о готовности

RCC->CR |= ((uint32_t)RCC_CR_HSEON); // Enable HSE while (!(RCC->CR & RCC_CR_HSERDY)); // Ready start HSE
2) Flash память контроллера работает несколько медленнее, чем ядро для этого настраиваем тактирование флеши. Если этого не сделать, то программа запустится, но будет периодически падать: пара кВт и нестабильное ПО - вещи несовместимые.

FLASH->ACR = FLASH_ACR_PRFTBE | FLASH_ACR_LATENCY; // Cloclk Flash memory
3) Выставляем делители для системной шины тактирования (AHB) и для шин периферии, коих аж две штуки: APB1 и APB2. Нам нужна максимальная частота, поэтому ничего не делим и коэффициенты деления делаем равными 1.

RCC->CFGR |= RCC_CFGR_HPRE_DIV1; // AHB = SYSCLK/1 RCC->CFGR |= RCC_CFGR_PPRE1_DIV1; // APB1 = HCLK/1 RCC->CFGR |= RCC_CFGR_PPRE2_DIV1; // APB2 = HCLK/1
4) Настраиваем множитель частоты (PLL) предделитель, который стоит перед ним и делит частоту кварца на 2. Получаем, что 8 МГц поделили на 2 и получили 4 МГц. Теперь надо их умножить на 6, чтобы на выходе были 24 МГц. Перед записью регистров предварительно сотрем их содержимое на всякий случай.

RCC->CFGR &= ~RCC_CFGR_PLLMULL; // clear PLLMULL bits RCC->CFGR &= ~RCC_CFGR_PLLSRC; // clearn PLLSRC bits RCC->CFGR &= ~RCC_CFGR_PLLXTPRE; // clearn PLLXTPRE bits RCC->CFGR |= RCC_CFGR_PLLSRC_PREDIV1; // source HSE RCC->CFGR |= RCC_CFGR_PLLXTPRE_PREDIV1_Div2; // source HSE/2 = 4 MHz RCC->CFGR |= RCC_CFGR_PLLMULL6; // PLL x6: clock = 4 MHz * 6 = 24 MHz
5) Теперь надо включить множитель частоты (PLL) и дождаться флага о готовности:

RCC->CR |= RCC_CR_PLLON; // enable PLL while((RCC->CR & RCC_CR_PLLRDY) == 0) {} // wait till PLL is ready
6) И наконец-то настраиваем источник тактирования для системной шины (AHB) выход нашего множителя частоты, на котором заветные 24 МГц. Предварительно содержимое регистра чистим, устанавливаем нужный бит и ждем флага готовности:

RCC->CFGR &= ~RCC_CFGR_SW; // clear SW bits RCC->CFGR |= RCC_CFGR_SW_PLL; // select source SYSCLK = PLL while((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_1) {} // wait till PLL is used
В итоге у нас получается вот такая функция настройки тактирования:

Void RCC_Init (void){ RCC->CR |= ((uint32_t)RCC_CR_HSEON); // Enable HSE while (!(RCC->CR & RCC_CR_HSERDY)); // Ready start HSE FLASH->ACR = FLASH_ACR_PRFTBE | FLASH_ACR_LATENCY; // Cloclk Flash memory RCC->CFGR |= RCC_CFGR_HPRE_DIV1; // AHB = SYSCLK/1 RCC->CFGR |= RCC_CFGR_PPRE1_DIV1; // APB1 = HCLK/1 RCC->CFGR |= RCC_CFGR_PPRE2_DIV1; // APB2 = HCLK/1 RCC->CFGR &= ~RCC_CFGR_PLLMULL; // clear PLLMULL bits RCC->CFGR &= ~RCC_CFGR_PLLSRC; // clearn PLLSRC bits RCC->CFGR &= ~RCC_CFGR_PLLXTPRE; // clearn PLLXTPRE bits RCC->CFGR |= RCC_CFGR_PLLSRC_PREDIV1; // source HSE RCC->CFGR |= RCC_CFGR_PLLXTPRE_PREDIV1_Div2; // source HSE/2 = 4 MHz RCC->CFGR |= RCC_CFGR_PLLMULL6; // PLL x6: clock = 4 MHz * 6 = 24 MHz RCC->CR |= RCC_CR_PLLON; // enable PLL while((RCC->CR & RCC_CR_PLLRDY) == 0) {} // wait till PLL is ready RCC->CFGR &= ~RCC_CFGR_SW; // clear SW bits RCC->CFGR |= RCC_CFGR_SW_PLL; // select source SYSCLK = PLL while((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_1) {} // wait till PLL is used }

6.3. Настройка таймера TIM1 и «мертвого времени»

Я приведу общую настройку таймера, она подробно описана в reference manual - назначение каждого регистра советую почитать. Да и базовые статьи по работе с ШИМ в интернете есть. Сам код у меня весьма неплохо прокомментирован, поэтому привожу сразу код функции инициализации таймера TIM1, а самые интересные моменты разберем:

Void PWM_50Hz_Init (void){ RCC->APB2ENR |= RCC_APB2ENR_TIM1EN; // enable clock for TIM1 RCC->APB2ENR |= RCC_APB2ENR_IOPAEN; // enable clock for port A RCC->APB2ENR |= RCC_APB2ENR_IOPBEN; // enable clock for port B RCC->APB2ENR |= RCC_APB2ENR_AFIOEN; // enable clock for alternative gpio /****************************** Setting PA10 **************************************/ GPIOA->CRH &= ~GPIO_CRH_CNF10; // setting out alternative push-pull for PWM GPIOA->CRH |= GPIO_CRH_CNF10_1; GPIOA->CRH &= ~GPIO_CRH_MODE10; GPIOA->CRH |= GPIO_CRH_MODE10; // gpio speed 50 MHz /***************************** Setting PB15 ***************************************/ GPIOB->CRH &= ~GPIO_CRH_CNF15; // setting complementary for CH3N GPIOB->CRH |= GPIO_CRH_CNF15_1; GPIOB->CRH &= ~GPIO_CRH_MODE15; GPIOB->CRH |= GPIO_CRH_MODE15; // gpio speed 50 MHz /************************** Config PWM channel ************************************/ TIM1->PSC = 480-1; // div for clock: F = SYSCLK / TIM1->ARR = 1000; // count to 1000 TIM1->CR1 &= ~TIM_CR1_CKD; // div for dead-time: Tdts = 1/Fosc = 41.6 ns TIM1->CCR3 = 500; // duty cycle 50% TIM1->CCER |= TIM_CCER_CC3E | TIM_CCER_CC3NE; // enable PWM complementary out TIM1->CCER &= ~TIM_CCER_CC3NP; // active high level: 0 - high, 1 - low TIM1->CCMR2 &= ~TIM_CCMR2_OC3M; TIM1->CCMR2 |= TIM_CCMR2_OC3M_2 | TIM_CCMR2_OC3M_1; // positiv PWM TIM1->BDTR &= ~TIM_BDTR_DTG; // clear register TIM1->BDTR |= TIM_BDTR_DTG_2 | TIM_BDTR_DTG_1 | TIM_BDTR_DTG_0; // value dead-time TIM1->BDTR |= TIM_BDTR_MOE | TIM_BDTR_AOE; // enable generation output /*******************************************************************************/ TIM1->CR1 &= ~TIM_CR1_DIR; // count up: 0 - up, 1 - down TIM1->CR1 &= ~TIM_CR1_CMS; // aligned on the front signal TIM1->
Скважность у нас фиксированная и никогда не изменяется, как и частота. Именно этот таймер задает время и последовательность работы диагоналей:

TIM1->CCR3 = 500; // duty cycle 50%
Длительность паузы «мертвого времени» зависит сильно от временной параметра TDTS, которое настраивается тут:

TIM1->CR1 &= ~TIM_CR1_CKD; // div for dead-time: Tdts = 1/Fosc = 41.6 ns
Его длительность составляет 1 тик тактовой частоты. Если посмотреть в reference manual, то можно увидеть, что биты CKD могут, например, сделать Tdts равным 2, 8 тикам и прочее.

Самое же время паузы устанавливается тут:

TIM1->BDTR |= TIM_BDTR_DTG_2 | TIM_BDTR_DTG_1 | TIM_BDTR_DTG_0;
Если отроете reference manual RM0041, то увидите вот такие формулы для расчета DT. Как видите параметр Tdts там основнополагающий:

6.4. Настройка таймера TIM2, формирующий синус

Тут все еще проще, объяснять что-то в настройке наверно нет смысла, ибо комментарии и так избыточны. Если будут вопросы - жду их в комментариях.

Void PWM_Sinus_Init (void){ RCC->APB1ENR |= RCC_APB1ENR_TIM2EN; // enable clock for TIM2 RCC->APB2ENR |= RCC_APB2ENR_IOPAEN; // enable clock for port A RCC->APB2ENR |= RCC_APB2ENR_AFIOEN; // enable clock for alternative gpio /****************************** Setting PA0 ***************************************/ GPIOA->CRL &= ~GPIO_CRL_CNF0; // setting out alternative push-pull for PWM1_CH1 GPIOA->CRL |= GPIO_CRL_CNF0_1; GPIOA->CRL &= ~GPIO_CRL_MODE0; GPIOA->CRL |= GPIO_CRL_MODE0; // gpio speed 50 MHz /****************************** Setting PA1 ***************************************/ GPIOA->CRL &= ~GPIO_CRL_CNF1; // setting out alternative push-pull for PWM1_CH1 GPIOA->CRL |= GPIO_CRL_CNF1_1; GPIOA->CRL &= ~GPIO_CRL_MODE1; GPIOA->CRL |= GPIO_CRL_MODE1; // gpio speed 50 MHz /*************************** Config PWM channel ***********************************/ TIM2->PSC = 0; // div for clock: F = SYSCLK / TIM2->ARR = 1000; // count to 1000 TIM2->CCR1 = 0; // duty cycle 0% TIM2->CCR2 = 0; // duty cycle 0% TIM2->CCER |= TIM_CCER_CC1E; // enable PWM out to PA8 TIM2->CCER &= ~TIM_CCER_CC1P; // active high level: 0 - high, 1 - low TIM2->CCER |= TIM_CCER_CC2E; // enable PWM complementary out to PA9 TIM2->CCER &= ~TIM_CCER_CC1P; // active high level: 0 - high, 1 - low TIM2->CCMR1 &= ~(TIM_CCMR1_OC1M | TIM_CCMR1_OC2M); TIM2->CCMR1 |= TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2M_1; // positiv PWM1_CH1 and PWM1_CH2 /*******************************************************************************/ TIM2->CR1 &= ~TIM_CR1_DIR; // count up: 0 - up, 1 - down TIM2->CR1 &= ~TIM_CR1_CMS; // aligned on the front signal: 00 - front; 01, 10, 11 - center TIM2->CR1 |= TIM_CR1_CEN; // start count }

6.5. Настройка прерываний от таймера TIM6

Настраиваем сам таймер на частоту 24 кГц:

Void TIM6_step_init (void){ RCC->APB1ENR |= RCC_APB1ENR_TIM6EN; // enable clock for basic TIM6 TIM6->PSC = 1-1; // div, frequency 24 kHz TIM6->ARR = 1000; // count to 1000 TIM6->DIER |= TIM_DIER_UIE; // enable interrupt for timer TIM6->CR1 |= TIM_CR1_CEN; // start count NVIC_EnableIRQ(TIM6_DAC_IRQn); // enable interrupt TIM6_DAC_IRQn }

6.6. Реализация основного алгоритма управления

Основные события происходят в генерируемом таймером TIM6 прерывании. Прерывание генерируется каждые 41,66 мкс, если помните это наш шаг дискретизации. Соответственно в прерывании записывается значение скважности из таблицы в регистр CCRx . Также в данном прерывании определяется какая диагональ в данный момент времени отрисовывается, путем инверсии флага sin_status после каждого полупериода. Мы выводим 240 точек, инвертируем флаг, что вызывает переход управления к другому каналу, когда уже и он отрисовал, то флаг опять инвертируется и все повторяется. Код основного алгоритма:

Void TIM6_DAC_IRQHandler(void){ TIM6->SR &= ~TIM_SR_UIF; if(sin_status == 0){TIM2->CCR1 = sin_data;} if(sin_status == 1){TIM2->CCR2 = sin_data;} sin_step++; if(sin_step >= 240){ sin_step=0; sin_status = sin_status ? 0: 1; } }

Итоги

Скачиваем проект, компилируем и заливаем в ваш микроконтроллер и получаем рабочий инвертор. Вам остается только сделать мост и подавать на него сигналы:

Одну из своих схем моста я чуть ранее выложил в PDF-ке можете пользоваться сколько угодно, надеюсь она вам поможет в освоение силовой электроники.

Надеюсь статья вам понравилась. Если у вас возникли вопросы по применению данного кода в реальном железе, то буду рад ответить на них. Также прошу не воспринимать данный код как что-то готовое, это ядро преобразователя, которое реализует основную функцию. Все «плюшки» и прочую избыточность вы можете добавить сами. Голое ядро проекта позволит вам понять как оно работает и не тратить кучу времени на разборку кода.

Материалы

UPD1: хотелось бы поблагодарить пользователя за ряд найденных ошибок, в основном в таблице синуса - она изменена. Те, кто использовали код или саму таблицу прошу скопировать ее снова, в статье уже исправленный вариант.