Не для кого не секрет, что сложные современные преобразователи, например, online UPS, работают под управлением DSP/МК или ASIC. Основными поставщиками DSP для силовой электроники являются две компании — Texas Instruments и Infineon, но сегодня речь пойдет о продукции компании STMicroelectronics — серии STM32F334. Данная линейка МК предназначена для управления электроприводом и построения силовых преобразователей: PFC, инверторов, импульсных блоков питания, UPS и прочих.
Конечно, серия F334 не может противостоять «мощи» таких популярных решений как TMS320F28335 и прочим, но у нее есть одно важное преимущество — стоимость. Старший камень STM32F334R8T6 стоит 5$, имеет на борту необходимый набор периферии (HRPWM, ADC, компараторы) и производительность для построения достаточно мощных преобразователей (десятки кВт) с хорошей надежностью и устойчивостью к отказу.
Для разработчика электроники важна экосистема вокруг того DSP/МК с которым он работает: документация, отладочные средства, примеры кода и железа. У TI все это имеется, да — дорого, да — сложно купить, но есть и именно поэтому в большинстве современных решений в области электропривода и энергетики стоят TMS320. Компания ST же почему-то обошла вниманием серию F334, хотя документация хорошего качество как и на любой STM32 имеется, а вот примеры железа с полноценным кодом и отладочные платы отсутствуют (игрушка F3348-Disco не считается). Что же — будем исправлять этот недостаток.
В своей прошлой статье я рассказал о своем проекте «комплекта разработчика» и даже продемонстрировал один из компонентов — силовой модуль. Сегодня я расскажу о 2-м (всего их будет 3) модуле, который позволяет реализовать любую топологию преобразователя и при этом стоит в разы дешевле конкурентов. Проект разумеется открыт и все исходники можно посмотреть в конце данной статьи.
Идея
Я далеко не первый, кто задумался об использовании некоего универсального модуля на базе которого можно строить различные преобразователи с разными вариантами топологии. Такой подход позволяет иметь одну плату на все случаи жизни и главное — уменьшить количество кода, ведь модуль один и тот же, один раз настроил и забыл.
Давайте теперь посмотрим парочку примеров того, как данную идею уже реализовали другие люди/компании. Приведу всего два примера:
- TMS320F28379D Control card — стоимость 160$. Экосистема отличная, есть отладочные комплексы под нее, но цена… Она небольшая, если вы работаете в зажиточном R&D-центре, а если вы решили собрать UPS для себя или работаете в компании по проще? Да и модуль за 160$ спалить, мне кажется, всем жалко будет;
- VectorCARD К1921ВК01Т — отличное решение, да еще и на отечественном камне
народ в НИИ и ВПКшники ликуют, есть отладочный комплекс в виде частотника, аналог (pin-to-pin) с модулем от ti, но цена — 19 000 руб. Для сурового отечественного индастриала и ВПК дешево, а остальным не очень.
И так, что же хотелось сделать в итоге… Модуль, который можно использовать и как отладочное средство и как компонент в мелкой серии. От сюда ряд требований, которые у меня набрались:
- Наличие HRPWM и быстрого АЦП
- RS-485 на борту
- UART с выходом на разъем для подключения дисплея (совместим с Nextion)
- Реализация аппаратной защиты на логике
- Питание 12В, чтобы использовать один AC/DC на 12В модуль и для «мозга» и для драйверов силовой части
- Стоимость хотя бы в 3 раза ниже стоимости TMS320F28379D Control card, то есть 50$ максимум
- Вход датчика температуры для радиатора
- Парочка GPIO, например, реле дернуть
- Вход и выход сигналов синхронизации, чтобы можно было параллелить работу нескольких устройств
В итоге получилась вот такая структурная схема:
Стоит сразу отметить, что мне удалось еще и значительно снизить стоимость модуля. Заказывал я комплектующие на 5 плат, где компоненты обошли в ~70$, то есть 14$/модуль. Тут правда хитрость — это стоимость всех компонентов, но без печатной платы. Арифметика простая: заказать 5 плат в 4 слоя стоит 80-100$, то есть еще 14-20$ на каждый модуль, согласитесь не гуманно? При количество 100 штук, стоимость платы уже составляет 1,5$/шт, поэтому в обозримом будущем я планирую заказать 100-200 плат (посмотрю как дешевле выйдет) и у желающих будет возможность купить платы в разы дешевле, чем 14$. Те, кому надо 20-30 плат или 100$ вас не смущают, смогут уже сами заказать, благо гербера подготовленные так же будут.
Разработка
В схемотехнике модуля нет ничего сложного и непонятного, для начала предлагаю вам открыть принципиальную схему, чтобы вы понимали о чем речь и я расскажу о том, как структурная схема выше превратилась в готовое решение. Скачать схему можно тут — PDF.
- У модуля есть 1 «основной разъем», где на 12 пинов выведены питание 12В, парочка GPIO, дополнительный UART (вдруг захотите ESP прикрутить), RS-485 и вход/выход для синхронизации устройств;
- Имеется 5 каналов, все они абсолютно одинаковые. На каждый канал выведена комплементарная пара High result PWM (HRPWM), которая позволяет управлять полумостом. Так же 2 канала АЦП для реализации обратной связи по току и напряжению и вишенка на торте — вход ошибки (fault). Например, у вас КЗ в силовой части, компаратор засек превышение тока и выдал лог. 1 в знак аварии, так вот подача «1» на данный вход прерывает работу устройства;
- Сигнал ошибки с входа fault поступает в 2 места: на вход BKIN у микроконтроллера и через инвертор на вход логического элемента AND. Вход BKIN тоже является аппаратной защитой и выключит генерацию ШИМ даже если МК завис, но я захотел перестраховаться и добавил еще логику чтобы она точно разорвала подачу сигнала;
- На модуле в отдельный разъем CWF-4 выведен интерфейс SWD для удобной отладки, а так же на второй разъем выведен UART и питание для подключения дисплея или связи с другими модулями. Сейчас популярны дисплеи Nextion, поэтому разъем под них рассчитан и еще я делаю свою HMI панель с аналогичным способом связи (UART, +5D, GND);
- Плата содержит PHY для интерфейса RS485 с терминирующим резистором и ESD защитой. Выбор на данный интерфейс пал по причине, что он есть где угодно, ибо является промышленным стандартом. Например, вы захотите объединить свой инвертор напряжения с дизелем и будет удобно отправлять/получать команды. Да и в любом ПЛК так же есть RS485;
- Еще установил небольшую энергонезависимую память для хранения настроек или еще чего полезного.
Данная принципиальная схема в итоге превратилась в 4-х слойную печатную плату размером 115х40 мм. В принципе вы можете развести свой вариант в 2 слоя, но габариты вырастут. Мне важно было получить ширину не более 40 мм, чтобы после установки в разъемы PBD общая высота была 47-50 мм — по размеру электролитических конденсаторов 35х50 мм. Выглядит плата следующим образом:
К сожалению когда я заказывал платы, то вместо черной маски указал зеленую — главное фиаско этой ревизии)) Кто не понял как вставляется модуль, то предлагаю посмотреть вот сюда:
На первой картинке так же можно заметить некую плату с кучей разъемов и особо без компонентов. Это что-то вроде «материнской платы» для более удобного прототипирования. Разъемы BH-10 (IDC-10) раздают те самые 5 каналов управления + на клеммники выведены интерфейсы общения и установлен разъем питания. Все это позволяет не колхозить кучу проводов. «Материнские платы» заказывались отдельно, поэтому придут чуть позже и после проверки будут доступные исходники.
Сборка
Как и для прошлого модуля печатные платы были заказаны в PCBway, ребят предоставили бесплатные платы и еще трафарет. Последний существенно облегчил мне жизнь и сэкономил время, 5 плат с 200+ компонентами на каждой были собраны за 1 час. Через 2 недели после заказа мне курьеры принесли вот такую прелесть:
Да, маску я не изменил в бланке заказа, но видимо чувствуя это мне позолотили ручку покрыли платы иммерсионным золотом чтобы не грустил. Для моей задачи это не критично, но за счет отличной планарности контактов паяльная паста наносится равномернее и компоненты не ведет в стороны даже если термопрофиль для печи выбран не очень оптимальный.
Трафарет был заказан с рамкой из алюминиевого профиля, т.к. трафаретный принтер у меня имеется, а без рамки его туда не закрепить. Если принтера у вас нет, то заказывайте без рамки: вы сможете нанести пасту (на пару минут дольше провозитесь) и при этом еще сэкономите деньги, т.к. трафарет без рамки весит примерно 400 гр, а с рамкой 1,8 кг. Из-за такого веса вы сразу попадаете на доставку курьером, т.к. почта больше 2 кг не возит, только EMS и платить вам придется на 30-40$ больше, так что учтите. Сам трафарет выглядит вот так:
Теперь необходимо установить плату в принтер и нанести пасту. Тут пара советов. Во-первых, если берете пасту на алиэкспресс, то только 500 гр банки, она в них лучшего качества (видимо хранят ее правильно). Во-вторых, пасту храните в холодильнике. В-третьих, после использования трафарет обязательно вымойте от пасты, обычная губка и капелька моющего (фэри лучше всего) творят чудеса, затем высушите трафарет и после высыхания обмотайте в пищевую пленку, если не будете его использовать больше недели. Наносим пасту на плату:
После нанесения получаем вот такую заготовку:
На данном этапе я перестрахуюсь: удалю пасту для корпуса LQFP-64 под микроконтроллер STM32F334R8T6. Дело в том, что я мог накосячить где-то системе питания и есть вероятность, что +12В попадут на МК и спалят его, а мне не хотелось бы истреблять камни по 5$. Поэтому я запаяю на этом этапе все, кроме микроконтроллера, разъемов и зуммера. Их я установлю уже в ручную после проверки напряжений +3.3В и +5В. Теперь самый скучный этап — устанавливать компоненты, но ничего скоро и домой планирую прикупить себе pick place станок, буду только пить кофе))
Компоненты установлены и теперь отправляем их в печь:
Теперь остается проверить уровни напряжения на выходе dc/dc и если все в норме, то запаиваем оставшиеся компоненты паяльником/феном, идем отмываем плату от остатков флюса и получаем вот такой результат:
Подключаем программатор, например, китайский свисток st-link, но я вам настоятельно советую приобрести фирмовый st-link v.2-ISOL с гальванической развязкой. Тут все как у админов с бекапами: «Одни уже спалили ноутбук и начали использовать изоляторы, другие пока не начали использовать изоляторы». Если ценник на родной st-link вас пугает, то есть вариант вместе с китайским свистком приобрести и модуль изолятора на Али, они обычно реализованы на ADuM-ах. Чтобы не мучиться с цоколевкой при подключении отладчика я сделал шнур для подключения именно этих модулей, теперь точно ошибку при подключение не допустить:
Остается проверить готов ли модуль к работе, читается ли МК, чтобы уже спокойно приступить к написанию кода. Для этого можно установить утилиту STM32CubeProgrammer. Открываем ее, у вас должен определиться ваш отладчик, если вы увидели в правом верхнем углу его id, то нажимаем Connect и если все смонтировано правильно, то увидим id микроконтроллера, ядро, серию самого МК (у меня F334):
Вот и все! Модуль готов с работе и разработке различных преобразователей.
Исходники
- Принципиальная схема — PDF
- Список компонентов (BOM) — Excel
- Gerber-файлы для заказа печатных плат — RAR
- Проект с pinout для STM32CubeMX — IOC
Заключение
Теперь есть 2 модуля для разработки, этого уже достаточно чтобы собрать преобразователь. Конечно будет и 3-й модуль, но без HMI можно жить, а желающие могут приобрести nextion по своему карману. В следующей статье уже можно будет и собрать полноценный преобразователь, реализовать П- и ПИ-регуляторы о которых так усердно просили в комментариях. Для очевидности результатов последующие статьи будут по конкретным топологиям: их разбор, расчеты, прототипирование, код и начну скорее всего с топологии buck и boost, как самых простых и часто встречающихся.
Хотелось бы еще поблагодарить ребят из PCBway, которые помогают с платами любой сложности отличного качества. Благодаря им проект двигается достаточно активно и за пару месяцев мне удалось сделать то, что было лень реализовать предыдущие пару лет.
Надеюсь статья была вам интересна, если у вас заранее есть каике-то вопросы по топологии buck, то вы можете озвучить их в комментариях или ЛС, а я при написании следующей статьи постараюсь на них ответить и тем самым сделать материал полезнее.
Автор: Илья