Реклама ⓘ
Главная » Питание
Призовой фонд
на май 2024 г.
1. 1000 руб
Сайт Паяльник

Похожие статьи:


Реклама ⓘ

Повышающий DC-DC преобразователь с цифровым управлением

Идея создания данного устройства у меня возникла во время доработки другого моего проекта, в котором используется микроконтроллер и повышающий преобразователь на многим известной MC34063, достаточно простой и надёжный. В том проекте предполагалось, что выходное напряжение преобразователя должно изменяться в некоторых пределах. Для этого в схеме на MC34063 имеется резистивный делитель напряжения, изменяя номиналы резисторов которого можно менять уровень выходного напряжения. В изначальной версии того проекта я использовал джамперы, которые подключали резисторы разных номиналов к делителю напряжения. Такой метод очень прост и надёжен, но мне хотелось некоторой автоматизации процесса.  Я попытался вместо джамперов использовать ключи на n-mos транзисторах, которые управлялись микроконтроллером и подтягивали резисторы разных номиналов к делителю напряжения MC34063, но такой подход не принёс ожидаемого результата - из-за собственного сопротивления переходов транзисторов выходное напряжение менялось непредсказуемо. Также была попытка сделать преобразователь на микроконтроллере самого устройства, но и такой вариант тоже оказался нежизнеспособным, так как контроль выходного напряжения требовал частого его измерения и коррекции, что занимало валовую часть "процессорного времени" и не давало работать основной программе должным образом. Поэтому я пришёл к выводу, что необходим отдельный преобразователь напряжения с возможностью управления по какому-либо цифровому интерфейсу, желательно с минимальным количеством линий. Чего-то подходящего и недорогого от китайских товарищей на aliexpress я не нашёл. Тогда я решил делать свой, тем более, что по ходу моих предыдущих изысканий остались кое-какие наработки.

За основу был взят микроконтроллер STM32G030F6P6. Он достаточно недорогой, работает на частоте до 64MHz, имеет богатую периферию (в частности, АЦП, таймеры с возможностью вывода ШИМ сигнала на несколько каналов) и компактный корпус, а также может прошиваться по UART. Хотя использовать можно любой микроконтроллер, имеющий хотя бы по одному каналу АЦП, ШИМ и UART интерфейс. 

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

Аналоговая часть сделана по типовой схеме, аналогичной схеме "обвязки" MC34063:

Сигнал ШИМ подаётся на затвор транзистора Q1, а напряжение обратной связи снимается с резисторного делителя напряжения, подключенного между выходом преобразователя и "землёй", коэффициент его деления составляет 1/10, что даёт максимальное теоретическое выходное напряжение преобразователя - 33 Вольта (так как опорное напряжение АЦП - 3,3 вольта). Транзистор Q1 можно использовать и биполярный n-p-n структуры (например, 2SD789), для этого из схемы необходимо убрать резистор R2. Подбором резистора R3 регулируется напряжение обратной связи для точной установки выбранного уровня выходного напряжения (максимальное напряжение на делителе не должно превышать напряжение VREF АЦП модуля). Ёмкость конденсатора C4 выбирается исходя из диапазона необходимых выходных напряжений (50 - 300 uF, чем выше выходное напряжение, тем ниже ёмкость).

Цифровая часть, а точнее - программная, устроена достаточно просто. Микроконтроллер в бесконечном цикле считывает значение АЦП, сравнивает его с необходимым уровнем и в зависимости от результата убавляет или добавляет значение ШИМ сигнала. АЦП настроен на максимальную скорость измерения и разрядность 10 бит. ШИМ 9 разрядный, его таймер тактируется частотой 64MHz (частота ШИМ получается 64000000 / 512 = 125000Hz ровно). Установка необходимого уровня напряжения происходит в прерывании от UART.

При запуске преобразователя уровень выходного напряжения установлен в нуль и на выходе преобразователя будет уровень входного напряжения, проходящего через дроссель L1 и диод D1. Чтобы запустить процесс преобразования, необходимо задать уровень выходного напряжения. Это делается с помощью передачи команды по UART. Всего на данный момент поддерживается три команды: 1 - задать уровень выходного напряжения; 2 - задать интервал опроса АЦП (в миллисекундах); 3 - задать скорость нарастания/убывания ШИМ (в единицах). Каждая команда состоит из пяти байт: 1-й и 5-й байты маркеры начала и конца пакета (0xDC и 0xCD соотв.), 2-й  байт - маркер команды, 3-й и 4-й байты - "полезные" данные. См. таблицу ниже.

Команда Байт 1 Байт 2 Байт 3 байт 4 байт5 Значение
1 - Задать напряжение 0xDC 0xDC Целые Сотые 0xCD 0 - 32,00
2 - Задать интервал 0xDC 0xD0 Значение Не важно 0xCD 1 - 100
3 - Задать скорость 0xDC 0xD1 Значение Не важно 0xCD 1 - 5

Чтобы отправить команду, необходимо настроить UART управляющего микроконтроллера или компьютера на скорость 9600 бод, 8 бит, 1 - стоп бит, Parity - NO, и передать последовательно пять байт. Все значения задаются в шестнадцатеричном виде. Поясню на примере первой команды: например, надо задать выходное напряжение 12,38В, отправляем последовательно: 0xDC, 0xDC, 0x0C(12), 0x26(38), 0xCD - после получения пятого байта напряжение будет задано. Остальные две команды работают аналогично, за исключением того, что значение задаётся в 3-м байте, а 4-й не учитывается и может иметь любое значение (в пределах 0x00 - 0xFF).

Из сигналов управления, кроме входа "UART_RX", также есть вход сброса "RST"с активным низким уровнем. 

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

Данное устройство пока что было реализовано и опробовано только на макетке. Для имитации нагрузки я подключал резисторы различного номинала между выходом преобразователя и землёй с помощью кнопки и смотрел как компенсируются просадки напряжения на выходе. Просадки были в пределах +/-0,2V и достаточно быстро компенсировались ШИМ-ом. Это всё при условии установленного дросселя неизвестной индуктивности (намотанные мною на ферритовой гантельке 100 витков тонкого ~0.1-0.15 провода). При использовании транзистора 2N7002 и входным напряжением 5 Вольт (от USB) удалось поднять напряжение до 23 Вольт (при использовании менее подходящих транзисторов, например S9018 (npn) генерация становилась нестабильной уже на 15-17 вольтах). Нужно точно подбирать номиналы всех ключевых деталей для стабильной работы. 

Так как схема аналоговой части очень простая, не стоит ожидать от этого преобразователя больших токов и супер точного напряжения. Он может подойти для конструкций, питающихся от USB, где необходимо повышенное напряжение с током в несколько десятков mA и возможностью изменения его уровня "на лету". 

В конце статьи прикладываю весь проект в STM CubeIDE целиком. Его несложно адаптировать под другие микроконтроллеры не только от STM, главное наличие соответствующей периферии (АЦП, ШИМ, UART), в идеале вообще использовать микроконтроллер в 8-ногом корпусе для ещё большего удешевления конструкции и миниатюризации. Если использовать микроконтроллер с несколькими каналами АЦП и ШИМ, то можно сделать параллельно два или более канала преобразователя с разными напряжениями одновременно, добавив аналогичные аналоговые цепи. Я пробовал данную конструкцию с микроконтроллером STM32F103C8 (скорее всего, поддельным), 8-битным Nuvoton MS51FB9AE (имеет очень крутой 6-канальный ШИМ-контроллер при стоимости менее 0,5$). Результаты были аналогичными. Главное, разделить питание аналоговой части от микроконтроллера хотя бы с помощью LDO, а в идеале ещё и дросселем во избежание сброса МК из-за скачков питающего напряжения при включении генерации.

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

Список радиоэлементов

Обозначение Тип Номинал Количество ПримечаниеМагазинМой блокнот
U1 Линейный регулятор
AMS1117-3.3
1 Поиск в магазине ОтронВ блокнот
U2 МикросхемаSTM32G030F6P61 Поиск в магазине ОтронВ блокнот
Q1 MOSFET-транзистор
2N7002
1 Поиск в магазине ОтронВ блокнот
D1 Диод Шоттки
1N5819
1 Поиск в магазине ОтронВ блокнот
R1, R4 Резистор
1 кОм
1 Поиск в магазине ОтронВ блокнот
R2 Резистор
10 кОм
1 Поиск в магазине ОтронВ блокнот
R3 Резистор
9 кОм
1 Поиск в магазине ОтронВ блокнот
L1 Катушка индуктивности680 мкГн1 Поиск в магазине ОтронВ блокнот
С1,С3,С4 Конденсатор47 мкФ1 электролитическийПоиск в магазине ОтронВ блокнот
C2 Конденсатор0.1 мкФ1 керамическийПоиск в магазине ОтронВ блокнот
Добавить все

Скачать список элементов (PDF)

Прикрепленные файлы:

Теги:

Опубликована: 0 1
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (9) | Я собрал (0) | Подписаться

0
Публикатор #
На форуме автоматически создана тема для обсуждения статьи.
Ответить
0
BARS_ #
Уровень пульсаций по выходу? Реакция на резкое изменение нагрузки? Минимальное время выхода на заданное напряжение?

Микроконтроллер в бесконечном цикле считывает значение АЦП
Зачем, когда можно работать по прерываниям? А в случае бесконечного цикла любой обмен данными по UART, будет вызывать скачки напряжения по выходу. Плюс значения АЦП нужно усреднять и использовать хотя бы ПИ регулятор.

передать последовательно пять байт.
Зачем изобретать кривой протокол, если есть стандартные? Тот же MODBUS. Ну или на этот хотя бы CRC навесить. А заодно и добавить чтение параметров.
Ответить
0

[Автор]
AndrejChoo #
Выход на заданное напряжение зависит от его уровня и по замерам занимает не более 500 миллисекунд.
Уровень пульсаций померять мне нечем, нормального осциллографа не имеем. Мультиметром не определить. Схема преобразователя типовая, аналогичная mc34063. Не думаю, что пульсации будут выше или ниже. Принцип работы у них +/- одинаковый.
В прерывании уже обрабатывается UART. И если вместо stm32 поставить что-нибудь 8-битное медленное, ещё один обработчик прерывания по таймеру или окончанию измерения ацп точно будет дергать МК на векторы и давать скачки. А так измерение и коррекция идут с заданным интервалом.
Кривой протокол сделан для универсальности. Тем более он у меня отработан в других устройствах.
Сейчас данный преобразователь, только на 8-ногом stc8h1k08a у меня трудится в моем программаторе для параллельных флеш и еепром. При подаче нагрузки (там высокое напряжение коммутируется через реле), просадки напряжения мультиметром не фиксируется даже на уровне 21 Вольта (уровень vpp для старых уф еепром).
Что касаемо протокола, то можно сделать управление хоть пачкой импульсов и сбросом, это дело вкуса и фантазии.
Ответить
0
BARS_ #
Не думаю, что пульсации будут выше или ниже. Принцип работы у них +/- одинаковый.
Ошибаетесь. У 34063, как минимум, быстрее будет ОС отрабатывать. Так что принцип одинаковый лишь в силовой части. Да и то, 34063 не умеет менять скважность ШИМ.


В прерывании уже обрабатывается UART. И если вместо stm32 поставить что-нибудь 8-битное медленное, ещё один обработчик прерывания по таймеру или окончанию измерения ацп точно будет дергать МК на векторы и давать скачки. А так измерение и коррекция идут с заданным интервалом.
Вот и я про то же, как только в программе появляются прерывания, ни о каких "заданных интервалах" в главном цикле не может быть и речи. Потому и надо выносить работу с АЦП в прерывание с приоритетом выше, чем у UART. И никто никого не задергает. Зато при работе в цикле, работа будет тормозиться при приеме каждого байта по UART.

Кривой протокол сделан для универсальности.
О какой универсальности речь, когда универсальность - это стандартные протоколы, типа MODBUS?

просадки напряжения мультиметром не фиксируется даже на уровне 21 Вольта
Ну так даже дорогие мультиметры не увидят скачков, медленные они. А дешевыми, с 2 измерениями в секунду можно даже не пытаться что-то словить.
Ответить
0

[Автор]
AndrejChoo #
В любом случае это всего лишь рабочий прототип. Начальная версия. Для улучшений здесь масса возможностей: другой цифровой протокол, перенос ацп в прерывание, алгоритм обнаружения ошибки и т.д. главное приложить фантазию.
Ответить
0
Петя #
Цифровое управление, значит ?
А где обязательное в таких схемах ограничение тока дросселя (или ключа) ?

Как идея, очень грубая и слабо проработанная, схема не стоит внимания большого внимания.
Не понятно, какая была вообще цель - любой ценой воткнуть микроконтроллер даже туда, где он не нужен ?
Даже на LM555 можно изготовить преобразователь, который будет лучше выполнять свою функцию, чем эта, с цифровым управлением.
Ответить
0

[Автор]
AndrejChoo #
Спасибо за "конструктивную " критику.
Эта идея не новая. Подобных устройств на МК достаточно в сети. Правда в основном они с фиксированным выходным напряжением.
Комментарием выше Я писал, что данное устройство в уже переработанном виде (на очень дешёвом 8-ногом МК) уже успешно применено в другом моём проекте, где отлично справляется со своей задачей - устанавливает выходное напряжение без участия подстроечных резисторов или переключателей.
Ответить
0
ЁкарьТокарь #
А какую-нить мелкую ATTiny под енто дело нельзя чтоль было присобачить? Сразу надо STM32G ставить, задействовав аж целых два вывода!
Ответить
0

[Автор]
AndrejChoo #
Читайте комментарии выше. Это прототип. На stm-ke удобно разрабатывать, так как есть cube mx, который позволяет очень быстро накидать код не заморачивайся на инициализации периферии.
Пока статья ждала публикации данное устройство было реализовано на stc8g1k08a (so8, стоимостью около 0,3$) на том же алгоритме работы.
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическое сопротивление?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Регулятор мощности 2 кВт
Регулятор мощности 2 кВт
Солнечная панель 10Вт 12В поликристаллическая Бокс для хранения компонентов
вверх