Инвертор с чистым синусом за 15 минут или «силовая электроника — каждому»

Что такое силовая электроника? Без сомнения — это целый мир! Современный и полный комфорта. Многие представляют себе силовую электронику как что-то «магическое» и далекое, но посмотрите вокруг — почти все, что нас окружает содержит в себе силовой преобразователь: блок питания для ноутбука, светодиодная лампа, UPS, различные регуляторы, стабилизаторы напряжения, частотники (ПЧ) в вентиляции или лифте и многое другое. Большинство из этого оборудования делает нашу жизнь комфортной и безопасной. Разработка силовой электроники по ряду причин является одной из сложнейших областей электроники — цена ошибки тут очень высока, при этом разработка силовых преобразователей всегда привлекала любителей, DIYщиков и не только. Наверняка вам хотелось собрать мощный блок питания для какого-то своего проекта? Или может быть online UPS на пару кВт и не разориться? А может частотник в мастерскую?

Сегодня я расскажу о своем небольшом открытом проекте, а точнее о его части, который позволит шагнуть в мир разработки силовой электроники любому желающему и при этом остаться в живых. В качестве демонстрации возможностей я покажу как за 15 минут собрать инвертор напряжения из 12В DC в 230В AC с синусом на выходе. Заинтриговал? Поехали!

Причины появления проекта

В последние пару лет разработка силовых преобразователей составляет около 90% моих заказов, основные трудозатраты уходят в основном на разработку ПО и макетирование, проектирование схемотехники + финальная трассировка платы от общих затрат составляет обычно не более 10-15%. Тут приходит понимание, что процесс макетирования, в который входит разработка ПО, необходимо как-то сократить и оптимизировать.
Выхода как всегда есть минимум два: купить готовую отладку, например, у Texas Instrumets или Infineon, но они обычно заточены под конкретную задачу и стоят от 500 до 5000$, при этом нет гарантии, что будет похожий заказ и данное вложение с высокой вероятностью просто не окупится. Второй вариант — делать самому, но делать основательно это почти тоже самое, что запустить «+1 ревизию железа», что выльется в дополнительные траты для заказчика. Если делать не основательно, то как обычно все будет на соплях и где-нибудь что-то отвалится и пока макет, комплектующие и сроки. Спустя какое-то время, я обратили внимание на очевиднейшее решение. Оно настолько простое и очевидное, что долго удивлялся почему такого еще не сделал тот же TI или Infineon. Сейчас расскажу о своем «просветление».

Давайте рассмотрим несколько наиболее популярных топологий силовых преобразователей:

Теперь еще раз внимательно посмотрите. Я нарисовал специально без обвязки, только ключевые компоненты, чтобы было понятнее. Что общего в этих топологиях? Первым делом бросается в глаза то ряд общих моментов:

  • Все топологии включают в себя основные компоненты — конденсаторы, транзисторы и индуктивность (дроссель или трансформатор). Это 3 кита силовой электроники;
  • Транзисторы включены везде одинаково и образуют так называемый «полумост». Из него построены почти все топологии преобразователей;
  • Вариант включения связки «полумост + конденсатор» не меняется на всех топологиях. Меняется тип индуктивности и варианты включения полумостов.

Из этого можно сделать вывод, что имея некий стандартный модуль в виде связки «полумост + конденсатор» можно построить любой преобразователь, добавляя лишь нужный дроссель или трансформатор. Поэтому очевидным решения для упрощения прототипирования было создание вот такого модуля:

ТОП 3 — лучшие модели преобразователей и их технические характеристики

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

AVS IN-2000W

Автомобильный инвертор 12 в 220 высокой мощности до 2 киловатт. Выпускается в алюминиевом корпусе, чтобы содействовать отводу тепла. Есть встроенный кулер охлаждения. На корпусе имеются удобные монтажные отверстия, крепится через них на стенку грузовика или микроавтобуса. Способен выдавать ток силой до 10 Ампер.

Преимущества AVS IN:

  • разъём USB, что позволяет интегрировать зарядку для сотового или навигатора без дополнительного адаптера;
  • мощная встроенная защита от замыкания;
  • длительная и надёжная работа — до 5 лет непрерывной эксплуатации;
  • удобная клавиша включения.

Минусы:

  • дороговизна — 7 тысяч рублей и более;
  • чересчур короткие провода для подключения через клеммы АКБ;
  • невозможность интеграции с прикуривателем;
  • большой вес — более 2 килограммов;
  • всего 1 розетка для подключения, поэтому нужен отдельный тройник для питания нескольких устройств.

ROBITON R200

Инвертор на 150 Ватт, предназначенный для преобразования постоянного тока в переменный. Есть возможность подключения ноутбука, зарядников, различных электрических инструментов. Имеется удобный разъём USB, обеспечивающий дополнительные возможности. Выполнен с использованием передовых технологий, имеет систему многоуровневой защиты:

  • короткое замыкание;
  • перегрев;
  • перегрузка;
  • переполюсовка;
  • недостаточное входное напряжение.

Преобразователь 12 в 220 имеет силовую розетку типа F — контакты заземлены. Во время перегревов автоматически отключается. Наличие встроенного вентилятора.

WESTER MSW250 12-​220В+​USB

По соотношению выходной мощности и удобства эксплуатации инвертор от производителя Wester называют лучшим среди аналогов. Он выдаёт стабильное напряжение в 250 Ватт, пиковая нагрузка способна доходить до 500 Ватт. Легко интегрируется с прикуривателем — не нужно останавливаться в пути, чтобы подключить адаптер к клеммам АКБ.

Вот какие плюсы данного преобразователя отмечены экспертами:

  • наличие светодиодной индикации, позволяющей наблюдать за работой устройства, перегревом, спящим режимом;
  • относительно низкая стоимость — от 1700 рублей;
  • наличие отдельного USB-разъёма, интегрируемого с фотоаппаратом и телефонами;
  • качественная, плотная евророзетка, в которой вилки от различной бытовой техники не выпадают даже от сильных вибраций на бездорожье;
  • возможность подключения к прикуривателю, что исключает случайную переполюсовку и защищает выпрямитель от перегорания;
  • система автоматического распознавания низкого и чересчур высокого напряжения, самоотключение;
  • наличие отдельного предохранителя;
  • защита от короткого замыкания;
  • небольшой вес.

Есть и минусы:

  • не интегрируется с ноутбуками 2 А;
  • кулер громко шумит во время охлаждения.

Борьба добра со злом

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

Наверно идея так бы и осталась лежать на полке, если бы не 2 события. Во-первых, ко мне пришли в один месяц 2 заказчика и каждый хотел сложный и интересный в реализации преобразователь, а главное готовы были очень хорошо заплатить. Хотя учитывая, что он из Европы, то может для них этого и дешево еще оказалось)) Оба проекта для меня были интересны, например, один из них «трехфазный стабилизатор напряжения с гальванической развязкой (sic!)», то есть 3-х фазный PFC + 3 мостовых преобразователя (phase shifted) + синхронный выпрямитель + 3-х фазный инвертор. Все это на SiC и очень компактное. В общем я взялся за 2 больших заказа, каждый из них по ~800 человеко-часов и срок 6 месяцев. В итоге меня «заставили» искать пути оптимизации.

Во-вторых, мне неожиданно написали ребята из компании PCBway, многие наверняка у них платы заказывали, и предложили по сотрудничать. Они очень активно поддерживают открытые железячные проекты, то есть ту самую инициативу CERN — Open Source Hardware. Сотрудничество простое, понятное для обеих сторон — они снабжают меня бесплатно платами для моих проектов, а я их открываю, ну и выкладываю на их сайте, в других местах уже по желанию. Для меня это стало дополнительной мотивацией, а главное совесть моя чиста, т.к. я уже несколько лет заказываю у них платы и на прототипы, и для серийного производства при этом рассказываю о них знакомым и партнерам. Теперь мне за это еще и плюшка в виде бесплатных плат для мелких проектов, можно чаще писать на хабр))

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

↑ Вариант второй: нужна постоянка 12/24/36/48 В

Вольтаж зависит от трансформатора. Как его называют на профильных форумах — «БЖТ» — Большой Железный Трансформатор. От его данных зависит нужное для преобразование напряжение.


БЖТ можно использовать, например, от старого UPS.
Осциллограммы изображены для униполярного

режима. Режимы описаны в даташите. В униполярном режиме одна половина Н-моста работает как ШИМ, вторая — как переключатель полярности.

В биполярном

режиме оба плеча молотят как ШИМ, но при этом требуется дроссель на каждую половину моста и отдельная обратная связь для каждой половины. Синхронная.

Модуль EGS002 рассчитан на униполярный режим, поэтому другие не рассматриваю.

Ну, а теперь пора попробовать на практике то, что так красиво в теории.

Структура проекта

В начале статьи я упомянул, что расскажу сегодня лишь про одну часть — это силовой модуль полумоста
. Он один уже позволяет создать преобразователь, просто прикрутив управляющую схему, например, отладку STM32-Discovery, Arduino, TMS320, TL494 или чем вы там владеете. Привязка к какой либо платформе или МК нет вообще.

Только это не весь проект, а часть)) Из чего состоит готовый силовой преобразователь? В первую очередь силовая часть, чтобы она заработала нужен некий модуль управления, чтобы понять что происходит нужна индикация, а чтобы понять что происходит с безопасного расстояния еще и интерфейс, например, Modbus RTU или CAN.

В итоге общая структура проекта выглядит так:

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

Процесс самостоятельного изготовления трансформатора

Первичную обмотку делают из десяти витков и отвода от середины. Обмотку мотают следующим образом:

  1. В первую очередь нужно приготовить провод для намотки. Подойдёт провод, диаметр которого составляет от 0,8 до 1,2 мм.
  2. Нужно взять 12 15-сантиметровых жил такого провода. Концы жил нужно скрутить, чтобы они держались вместе, после чего намотать по всему каркасу пять витков. Мотать при этом нужно очень ровно, так как от качества намотки зависит очень многое.
  3. После этого обмотку нужно изолировать с помощью тканевой изоленты, и намотать точно такую же обмотку прямо на первый слой.
  4. Затем обмотку необходимо фазировать. Для этого с кончиков жил убирается лак, концы следует залудить.
  5. Трансформатор нужно подключить к схеме. Начало первой половины следует подключить с концом второй или наоборот. Таким образом, мы получим одну обмотку с отводом из средней точки.
  6. Через некоторое время первичную обмотку нужно изолировать и начать мотать повышающую.
  7. Обмотка состоит из 80 витков. Провод нужно мотать по рядам. Для того, чтобы витки влезли без каких-либо усилий, мотать следует на кольце.

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

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

Силовой модуль полумоста

Теперь пришло время подробнее посмотреть на сегодняшнего героя. Модуль универсален и позволяет работать с транзисторами Mosfet и IGBT, как низковольтными, так и высоковольтными ключами до 1200В.
Особенности модуля:

  • Гальваническая развязка управляющей (цифровой) стороны от силовой. Напряжение пробоя изоляции 3 кВ;
  • Верхний и нижний ключ независимы, каждый имеет свой гальванически развязанный драйвер и гальванически развязанный dc/dc;
  • Применен современный драйвер от компании Infineon — 1EDC60I12AHXUMA1. Импульсный ток открытия/закрытия — 6А/10А. Максимальная частота — 1 МГц (проверено до 1.5 МГц стабильно);
  • Аппаратная защита по току: шунт + ОУ + компаратор + оптрон;
  • Максимальный ток — 20А. Ограничен не ключами, а размером радиатора и толщиной медных полигонов.

В статье фигурирует 1-я ревизия модуля, она полностью рабочая, но будет 2-я ревизия, в которой устранятся чисто конструктивные недочеты и поменяются разъемы на более удобные. После завершения создания документации, закинул gerber в PCBway и мне через 6 дней в дверь постучался курьер и вручил вот такую прелесть:

Еще через неделю наконец-то привезли на собаках комплектующие из одного прекрасного отечественного магазина. В итоге все было смонтировано:

Перед тем, как двигаться дальше, давайте посмотрим на принципиальную схему модуля. Скачать ее можно тут — PDF.

Тут ничего сложного или магического нет. Обычный полумост: 2 ключа внизу, 2 вверху, можете паять по одному. Драйвер как выше писал из семейства 1ED, очень злой и бессмертный. Везде по питанию есть индикация, включая +12В на выходе dc/dc. Защита реализована на логическом элементе AND, в случае превышения тока компаратор выдаст +3.3В, они засветят оптрон и он притянет один из входов AND к земле, что означает установление лог.0 и ШИМ-сигнал с драйверов пропадет. AND с 3-мя входами использован специально, в следующей ревизии планирую сделать еще и защиту от перегрева радиатором и завести сигнал ошибки туда же. Все исходники будут в конце статьи.

Необходимые компоненты

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

№ п/пНазваниеТип компонентаКоличествоГде купить
1Atmega328Pмикроконтроллер1
2IRFZ44NMosfet транзистор2купить на AliExpress
3BD139транзистор2купить на AliExpress
4BD140транзистор2купить на AliExpress
522pFконденсатор2купить на AliExpress
610K,1%резистор1купить на AliExpress
716MHzкварцевый генератор1купить на AliExpress
80.1uFконденсатор3купить на AliExpress
94.7Rрезистор2купить на AliExpress
101N4148диод2купить на AliExpress
11LM7805регулятор напряжения1купить на AliExpress
12200uF,16Vконденсатор1купить на AliExpress
1347uF, 16Vконденсатор1купить на AliExpress
142.2uF,400Vконденсатор1купить на AliExpress

Внешний вид этих компонентов показан на следующем рисунке.

Внешний вид компонентов для сборки инвертора

Собираем макет инвертора

Долго думал на чем бы продемонстрировать работу модуля, чтобы и не сильно скучно, и полезно, и не сильно сложно, чтобы повторить мог любой. Поэтому остановился на инверторе напряжения, такие используют для работы с солнечными панелями, если что-то бахнет по низковольтной стороне — не страшно, а по высоковольтной — просто когда включите не суйте туда руки.
Сам инвертор до безобразия простой, кстати, МАП Энергия клепают именно такие, вот вам пример даже коммерческой реализации сей идеи. Работа инвертора заключается в том, чтобы сформировать из постоянного напряжения 12В переменное синусоидальной формы с частотой 50 Гц, ведь именно с таким привык работать обычный трансформатор на 50 Гц. Я использую какой-то советский, вроде ОСМ, 220В обмотка заводская и используется как вторичка, а первичная ~8В намотана медной шиной. Выглядит это так:

И это чудовище всего на 400 Вт! Вес трансформатора около 5-7 кг по ощущениям, если уронить на ногу, то в армию точно не возьмут. Собственно в этом и заключается минус инверторов с «железными» трансформаторами, они огромные и тяжелые. Плюс их в том, что данные инверторы оооочень простые, не требует никакого опыта для создания и конечно же дешевые.

Теперь давайте соединим модули и трансформатор. На самом деле модуль для разработчика должен представляться просто как «черный ящик» у которого есть вход 2-х ШИМов и 3 силовых вывода: VCC, GND и собственно выход полумоста.

Теперь из этих «черных ящиков» давайте изобразим наш инвертор:

Ага, понадобилось всего 3 внешних элемента: трансформатор + LC фильтр. Для последнего дроссель я изготовил просто намотав провод от модуля до трансформатора на кольцо из материала Kool Mu размер R32 с проницаемость 60, индуктивность около 10 мкГн. Конечно же дроссель надо бы рассчитать, но нам же надо за 15 минут)) Вообще если будете гонять что-то подобное на 400 Вт, то нужно кольцо размером R46 (это внешний диаметр). Емкость — 1-10 мкФ пленка, этого достаточно. На самом деле в качестве экономии можно конденсатор не ставить, ибо емкость обмотки трансформатора здоровая… в общем у китайцев и МАПа именно так и сделали)) Дроссель выглядит вот так:

Остается накинуть тестовую нагрузку на выход, у меня это пара светодиодных лампочек на 20 Вт (ничего другого наглядного не оказалось под рукой), сами они кушают 24Вт, КПД однако. Так же ток холостого хода трансформатора около 1А. С АКБ будет кушать около 5А. В итоге имеем такой стенд:

Так же в макете используется АКБ Delta HR12-17 соответственно на 12В и емкостью 17 А*ч. Управлять преобразователем будем с отладочной платы STM32F469-Discovery.

↑ Двухканальное зарядное устройство

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

При полном заряде ток в цепи становится практически нулевым, и зажигается индикация полного заряда батареи. При этом FSFA2100 может перейти в Burst mode, тем самым экономя электроэнергию. Сильно усложнять систему я не стал, не вижу практического смысла. В плюсовом проводе БП установлен диод, позволяющий запускать БП при подключенной батарее. Иначе защита даёт это сделать только после отключения батареи, и подключения её заново после пуска БП. Лишний диод, зато нет проблем. LED1и LED2 – индикация питания, LED3 и LED4 – индикация полного заряда. Порог включения светодиодов 14,2-14,3 В регулируется подбором R32 и R35.

Идеи, примененные здесь, собраны по крупицам в сети, так что на авторство не претендую. Шунты лучше подобрать по нужному току, у меня стоят 3 шт. по 0,47 R. Пока вроде нормально.


Вот такая колдобина получилась в результате.

Трансформаторы намотаны на сердечниках, аналогичных примененным мной в БП на сборках FSFR/FSFA. Первичка 40 витков литца 0.07?80. Вторичка 5+5 витков тоже литца 0.1?70. Индуктивность первички немного занижена, порядка 450-470 мкГн, так меньше проблем с запуском на этих трансах.

В процессе работы выяснилось, что сильно греются радиаторы с диодами выпрямителя, поэтому пришлось ломать голову на счет охлаждения. Как питать вентилятор? Искать на 24 В? Делать стаб? Подключать его только к одной батарее? Но тогда она будет более разряжена. Блин, да чем же я занимаюсь? Бросать то уже поздно… И тут мне на глаза попался дежурный БП на FSDM0265RN, что я как-то использовал для экспериментов с другими БП.

Исключён фрагмент. Полный вариант доступен меценатам и полноправным членам сообщества.

Небольшая доработка и получился БП для питания вентилятора и реле. Трансформатор заводской. На выходе в оригинале было два напряжения — 5 В и 18 В. Обмотка для 5 В намотана в два провода, поэтому не разбирая трансформатор, я ее разделил и соединил последовательно. Немного подстроил напряжение на выходе. Получилось 12 В для вентилятора и 25 В для питания реле (они у меня были на 24 В ). Всё в пределах нормы.

О назначении реле чуть ниже, а вот фото девайса.


Этот модуль делался после зарядника, поэтому пришлось немного покумекать, где и как его крепить.


Вот здесь он слева стоит торцом к основной плате.

Код

Изначально для управления предполагалось использовать мою STM32VL-Disco, полученную на выставке еще в 2010-м, но так случилось, что именно на этом макете ей суждено было умереть уже когда весь код написан и макет запущен. Забыл про щупы осциллографа и объединил 2 земли, аминь. В итоге все было переписано на STM32F469NIH6, именно эта отладка имелась под рукой, поэтому будет 2 проекта: для F100 и для F469, оба проверены. Проект собран для TrueSTUDIO, версия эклипса от ST. Портянка кода
#include «main.h» /********************************************* Sinus table **********************************************************/ uint16_t sinData[240] = {0,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, 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,0}; uint16_t sinStep; uint8_t sinStatus; /******************************************** Used functions ********************************************************/ void StartInitClock (void) { RCC->CR |= RCC_CR_HSEON; // Enable HSE while (!(RCC->CR & RCC_CR_HSERDY)); FLASH->ACR |= FLASH_ACR_LATENCY_5WS; RCC->PLLCFGR = 0x00; RCC->PLLCFGR |= RCC_PLLCFGR_PLLM_3; // Div for HSE = 8 RCC->PLLCFGR |= RCC_PLLCFGR_PLLN_4 | RCC_PLLCFGR_PLLN_5 | RCC_PLLCFGR_PLLN_6 | RCC_PLLCFGR_PLLN_7; // PLL mult x240 RCC->PLLCFGR |= RCC_PLLCFGR_PLLSRC; // Source HSE RCC->CR |= RCC_CR_PLLON; while((RCC->CR & RCC_CR_PLLRDY) == 0){} RCC->CFGR &= ~RCC_CFGR_SW; 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 RCC->CR |= RCC_CR_PLLSAION; while ((RCC->CR & RCC_CR_PLLSAIRDY) == 0) {} } void EnableOutputMCO (void) { RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN; // Enable clock port A GPIOA->MODER &= ~GPIO_MODER_MODER8; GPIOA->MODER |= GPIO_MODER_MODER8_1; // Alternative PP GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR8; // Very high speed RCC->CFGR |= RCC_CFGR_MCO1; // Source PLL RCC->CFGR &= ~RCC_CFGR_MCO1PRE; // Div = 1 } void InitIndicatorLED (void) { /* * LED1 — PG6 * LED2 — PD4 * LED3 — PD5 * LED4 — PK3 */ RCC->AHB1ENR |= RCC_AHB1ENR_GPIOGEN; RCC->AHB1ENR |= RCC_AHB1ENR_GPIODEN; RCC->AHB1ENR |= RCC_AHB1ENR_GPIOKEN; GPIOG->MODER &= ~GPIO_MODER_MODER6; GPIOG->MODER |= GPIO_MODER_MODER6_0; // Output PP GPIOD->MODER &= ~GPIO_MODER_MODER4; GPIOD->MODER |= GPIO_MODER_MODER4_0; // Output PP GPIOD->MODER &= ~GPIO_MODER_MODER5; GPIOD->MODER |= GPIO_MODER_MODER5_0; // Output PP GPIOK->MODER &= ~GPIO_MODER_MODER3; GPIOK->MODER |= GPIO_MODER_MODER3_0; // Output PP } void EnableIndicatorLED (void) { GPIOG->BSRR |= GPIO_BSRR_BR_6; GPIOD->BSRR |= GPIO_BSRR_BR_4; GPIOD->BSRR |= GPIO_BSRR_BR_5; GPIOK->BSRR |= GPIO_BSRR_BR_3; } void InitLowPWM (void) { /* * TIM1-CH1 — PA8 * TIM1-CH1N — PB13 */ RCC->APB2ENR |= RCC_APB2ENR_TIM1EN; RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN; RCC->AHB1ENR |= RCC_AHB1ENR_GPIOBEN; /*********** GPIO **********/ GPIOA->MODER &= ~GPIO_MODER_MODER8; GPIOA->MODER |= GPIO_MODER_MODER8_1; // Alternative output PP GPIOA->AFR[1] |= GPIO_AFRH_AFRH0_0; // Select TIM1-CH1 GPIOB->MODER &= ~GPIO_MODER_MODER13; GPIOB->MODER |= GPIO_MODER_MODER13_1; // Alternative output PP GPIOB->AFR[1] |= GPIO_AFRH_AFRH5_0; // Select TIM1-CH1N /*********** Timer *********/ TIM1->PSC = 2400-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->CCR1 = 500; // duty cycle 50% TIM1->CCER |= TIM_CCER_CC1E | TIM_CCER_CC1NE; // enable PWM complementary out to PB15 and to PA10 TIM1->CCER &= ~TIM_CCER_CC1NP; // active high level: 0 — high, 1 — low TIM1->CCMR1 &= ~TIM_CCMR1_OC1M; TIM1->CCMR1 |= TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1; // positiv PWM1_CH3 and PWM1_CH3N TIM1->BDTR &= ~TIM_BDTR_DTG; // clear register TIM1->BDTR |= TIM_BDTR_DTG_2 | TIM_BDTR_DTG_1 | TIM_BDTR_DTG_0; // value dead-time: = 31*Tdts = 32*41,6ns = 1.29us TIM1->BDTR |= TIM_BDTR_MOE | TIM_BDTR_AOE; // enable generation output and dead-time TIM1->CR1 &= ~TIM_CR1_DIR; // count up: 0 — up, 1 — down TIM1->CR1 &= ~TIM_CR1_CMS; // aligned on the front signal: 00 — front; 01, 10, 11 — center TIM1->CR1 |= TIM_CR1_CEN; // start count } void InitSinusPWM (void) { /* * TIM3-CH1 — PB4 * TIM3-CH2 — PC7 */ RCC->APB1ENR |= RCC_APB1ENR_TIM3EN; RCC->AHB1ENR |= RCC_AHB1ENR_GPIOBEN; RCC->AHB1ENR |= RCC_AHB1ENR_GPIOCEN; /*********** GPIO **********/ GPIOB->MODER &= ~GPIO_MODER_MODER4; GPIOB->MODER |= GPIO_MODER_MODER4_1; // Alternative output PP GPIOB->AFR[0] |= GPIO_AFRL_AFRL4_1; // Select TIM3-CH1 GPIOC->MODER &= ~GPIO_MODER_MODER7; GPIOC->MODER |= GPIO_MODER_MODER7_1; // Alternative output PP GPIOC->AFR[0] |= GPIO_AFRL_AFRL7_1; // Select TIM3-CH2 /*********** Timer *********/ TIM3->PSC = 5-1; // div for clock: F = SYSCLK / TIM3->ARR = 1000; // count to 1000 TIM3->CCR1 = 0; // duty cycle 0% TIM3->CCR2 = 0; // duty cycle 0% TIM3->CCER |= TIM_CCER_CC1E; // enable PWM out to PA8 TIM3->CCER &= ~TIM_CCER_CC1P; // active high level: 0 — high, 1 — low TIM3->CCER |= TIM_CCER_CC2E; // enable PWM complementary out to PA9 TIM3->CCER &= ~TIM_CCER_CC1P; // active high level: 0 — high, 1 — low TIM3->CCMR1 &= ~(TIM_CCMR1_OC1M | TIM_CCMR1_OC2M); TIM3->CCMR1 |= TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2M_1; // positiv PWM1_CH1 and PWM1_CH2 TIM3->CR1 &= ~TIM_CR1_DIR; // count up: 0 — up, 1 — down TIM3->CR1 &= ~TIM_CR1_CMS; // aligned on the front signal: 00 — front; 01, 10, 11 — center TIM3->CR1 |= TIM_CR1_CEN; // start count } void InitStepSinus (void) { RCC->APB1ENR |= RCC_APB1ENR_TIM6EN; // enable clock for basic TIM6 TIM6->PSC = 5-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 } /************************************* Main code *********************************************/ int main (void) { StartInitClock(); // EnableOutputMCO(); InitIndicatorLED(); InitLowPWM(); InitSinusPWM(); InitStepSinus(); EnableIndicatorLED(); while(1) { } } /****************************** Interrupts ******************************************************/ void TIM6_DAC_IRQHandler (void) { TIM6->SR &= ~TIM_SR_UIF; if (sinStatus == 0) {TIM3->CCR1 = sinData[sinStep];} if (sinStatus == 1) {TIM3->CCR2 = sinData[sinStep];} sinStep++; if (sinStep >= 240) { sinStep = 0; sinStatus = sinStatus ? 0 : 1; } } Вообще в своей другой статье ооочень подробно и наглядно рассказал как формировать синусоидальный сигнал, как писать код и прочее прочее. Прочитать можно — тут.

Прочитали? Хотите собрать? Держите проект:

  • Проект для F469
  • Проект для F100

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

Стоит обратить внимание, что я на один полумост (модуль) подаю 2 сигнала, рисующих синус, а на другой 2 сигнала задающие 50 Гц. При чем одна диагональ «красный+желтый», а другая «синий+зеленый». В статье, что дал выше про это подробно написано, если вдруг не поняли. Теперь как подали сигналы, накидываем на оба полумоста +12В и GND от лабораторного блока питания. Сразу АКБ не советую, если где-то ошиблись, то может сгореть что-то. Защита на плате спасает от превышения тока, но не от явных косяков, когда плюс и минус перепутали, а вот лабораторник спасает. 12В и 1А для тестов хватит. Берем щуп осциллографа, его земляной провод на выход первого полумоста, а сам щуп на выход другого полумоста и должна быть такая картинка:

Где синус спросите вы? Дело в том, что сопротивление входа осциллографа большое и он не представляет из себя нагрузку, поэтому ток не протекает и синусу взяться не откуда. Добавим нагрузку, я смастерил из резисторов 10 Ом нагрузку 90 Ом просто включив последовательно 9 штук. Цепляем нагрузку к выходам полумостов и видим такую картину:

У вас так же? Значит пришла пора подключать дроссель, трансформатор, нагрузку и пробовать запускать. Achtung! Нельзя включать данный макет без нагрузки, ибо на холостом ходе на выходе может быть до 350…380В. Чтобы такого не было нужна нагрузка или ОС.

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

Отключение при падении напряжения

Если вы используете в конструкции аккумуляторную батарею, которая параллельно работает в автомобиле, то рекомендуется позаботиться о том, чтобы автоматически отключался при низком заряде преобразователь с 12 на 220. Своими руками собрать простую схему отключения несложно. Если разрядится аккумулятор полностью, то вы не сможете завести двигатель даже с буксира. Поэтому внедрите в схему простой элемент – электромагнитное реле. Такие используются в автомобилях, поэтому найти его не составит труда.

У реле есть нижнее пороговое значение напряжения, при котором происходит замыкание контактов. Чтобы настроить более точно момент, необходимо подбирать сопротивление резистора R1. Оно должно быть равно сопротивлению обмотки реле, помноженному на коэффициент 0,1. Внедрить такую доработку можно без особого труда в преобразователь с 12 на 220. Своими руками подключить реле и резистор сможет даже начинающий электрик.

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

Включение

После включения получаем на выходе около 230В, выход конечно не стабилизированный и будет плавать 230В +-30В, для тестов пойдет, в другой статье доработаем макет как решусь рассказать про П и ПИ-регуляторы и их реализацию.
Теперь можно насладиться результатом работы, а при необходимости упихать все в коробку и даже применить в хозяйстве или на даче для обеспечения себя светом и прочими прелестями.

Вы наверняка заметили задержку между «щелчком», то есть подачей питания на Discovery и включением ламп — это время, которое МК потратил на инициализацию. Эту задержку можно уменьшить, если писать в регистр разом одну цифру, а не дробить запись регистра на кучу строк. Я раздробил исключительно для наглядности. Хотя и это не страшно, с кодом на HAL задержка в 3 раза дольше и народ как-то живет с ним))

Пока не забыл, исходники проекта:

  • Принципиальна схема — PDF
  • BOM — Excel
  • Gerber-files — RAR

Осталось посмотреть как там с температурами на плате, нет ли каких-то особо горячих мест. 5-6А это конечно мало, но если сквозной ток идет или еще какая серьезная ошибка, то этого хватит, чтобы превратить плату в чайник:

Как видите самым горячим элементом является dc/dc модуль для гальванической развязки, это который на 2 Вт, он нагревается аж до 34 градусов, ну еще и шунт. Сами же транзисторы и радиатор имеют температуру окружающей среды после 30 минут работы преобразователя))

Какие бывают преобразователи

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

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

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

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

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

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

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

Существует три вида преобразователей напряжения с 12 на 220 В:

  • Автомобильный;
  • Компактный;
  • Стационарный тип.

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

Благодарности и планы

В ближайшее время я планирую написать про DSP board и по управлять уже не с отладки discovery, а уже со «специализированного» модуля. Платы 2-й ревизии на него уже пришли от тех же PCBway, жду компоненты и сразу писать.
Надеюсь статья и сама идея вам понравились. В дальнейшем на этих же модулях покажу как собрать частотник, mppt контроллер, а может и еще чего интересного. Если у вас есть вопросы, то не стесняйтесь их задавать в комментариях или в личку, если у вас вдруг нет полноценного аккаунта, постараюсь ответить на все вопросы.

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

↑ Резюме

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


Так вот, мало того, что они на 110 В, так ещё и сами часы с синхронизацией от сети 60 Гц (наш стандарт 50 Гц). Естественно в работе они серьезно отставали и были у него больше как элемент интерьера, чем часы. Вот теперь эта задача решилась бы очень просто. Нашлось ещё одно возможное применение данного устройства.

А ведь есть еще и трехфазные версии! Не, всё, хватит экспериментов на сегодня!

Полезные свойства аппаратов

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

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

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

Купить или самому сделать?

Конечно, приобрести готовый инвертор – это не проблема. В любом магазине электротоваров выбор их просто огромен. И они отличаются по мощности, стоимости, вариантам исполнения. Но вот цена инвертора мощностью около 0,5 кВт составит не менее трех тысяч рублей – а это внушительная сумма. Причем подключить к нему много оборудования вряд ли получится.

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

Технические требования к конденсатору

Для бестрансформаторного БП подойдет конденсатор, рассчитанный на амплитудное (или большее) значение переменного напряжения. Если действующее значение напряжения равно 220 В, то амплитудное рассчитывается по формуле 220 * = 311 В (номинальное 400 В). Конденсаторы лучше выбрать плёночные, оптимально подходят емкостные элементы серии К73-17.

Конденсатор

Сферы применения

Инверторы используются в различных ситуациях:

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

Для выполнения каждой из этих задач выбирают соответствующие модели преобразователей. Чаще всего инверторы 12/220 используются автомобилистами.

Устройства с входным напряжением 12 В и 24 В не являются взаимозаменяемыми!

Рейтинг
( 1 оценка, среднее 4 из 5 )
Понравилась статья? Поделиться с друзьями:
Для любых предложений по сайту: [email protected]