Хабрахабр

MPPT контроллер заряда на STM32F334C8T6

Но сказать это одно, а показать… уже куда интереснее и нагляднее, поэтому сегодня расскажу о своем небольшом вялотекущем проекте такого контроллера. В комментариях под моими предыдущими статьями неоднократно возникал вполне резонный вопрос: "Зачем делать dc/dc преобразователи на микроконтроллере, когда есть готовые?" и я в качестве ответа постоянно упоминал, как наиболее яркий пример, контроллер заряда с алгоритмом MPPT.

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

Фото МРРТ

Наличие данного алгоритма в контроллере позволяет в определенных условиях значительно повысить эффективность использования солнечных панелей. Собственно MPPT — это процесс поиска точки максимальной мощности у солнечной панели. 200... Когда производитель пишет на панели мощность, например, 100... 320 Вт, то имеет ввиду номинальную мощность солнечной панели при уровне инсоляции 1000 Вт/м2. 250... Разумеется производители не выносят панели на улицу и не ждут идеальных погодных условий, поэтому данная величина принята как стандартная и "генерируется" на лабораторном стенде.

Из этого следует, что на Севере солнечная панель не выдаст своей заявленной мощности, а вот в Африке легко. В реальных условиях при ясном небе максимальный уровень инсоляции имеет значения от 250 Вт/м2 где-нибудь в Норвегии и до 900-1000 Вт/м2 в Северной Африке. Вспомните погоду за последний месяц, много ли идеально солнечных дней вы видели? НО… Как только на небе появляются тучи, которые затеняют солнечную панель, то уровень инсоляции снижается. Если вы с Краснодара, то возможно много, а вот у жителей средней полосы облаков однозначно больше.

Теперь давайте разберемся что же такое ТММ… Для этого берем солнечную панель с заявленной мощностью 200 Вт (у меня это Delta BST200-24P) и снимаем с нее вольт-амперную характеристику (ВАХ) при уровне инсоляции в 1000 Вт/м2: Собственно в чем проблема… При снижение освещенности солнечной панели — изменяется расположение точки максимальной мощности (ТММ) на ВАХ реальной солнечной панели.

ВАХ солнечной панели

ТТХ солнечной панели

Так же если из этой точки опустить линию вниз, то она пересечет ВАХ — координаты этой точки являются тем самым результатом, который необходимо найти. Если посмотреть на график мощности, то на нем четко виден пик в котором панель отдает максимально возможную мощность — это и есть ТММ. Если говорить проще: "MPPT — это процесс поиска точки на ВАХ в которой произведение тока и напряжения имеет максимальное значение"

эффективность ее зависит не только от уровня инсоляции, но еще и от температуры. Дополнительно стоит обратить внимание, что солнечная панель может выдавать несколько больше, это нормальное явление, т.к. Если поставить панель под солнце, то через несколько часов она достаточно сильно нагреется и мощность упадет примерно на 10%.

Как ранее было сказано — уровень инсоляции будет значительно меняться в процессе эксплуатации: облака, пасмурная погода, рассвет и закат Солнца, соответственно будет изменяться и ВАХ солнечной панели: Теперь давайте разберемся что именно будет делать контроллер заряда и зачем ему МРРТ.

ВАХ от инсоляции

Задача контроллера заряда с MPPT — искать точку максимальной мощности для конкретных погодных условий. Например, живете вы где-нибудь в Воронеже, у вас тепло и много солнечной энергии и вы нашли ТММ и получаете максимальную отдачу мощности, но через 15 минут над вашими панелями встала туча и частично закрыла собой панели и значение инсоляции изменилось, а следовательно изменилась ВАХ панели. На графике изображены ВАХ для 4-х случаев: 1000, 800, 600 и 400 Вт/м2 и соответственно для каждого случая у нас будет своя точка на ВАХ, где произведение тока и напряжения будет иметь максимальное значение. Чтобы контроллер заряда мог подстроиться под новые условия ему необходимо с некоторой частотой, например, раз в 5 минут, производить вычисления и поиск ТММ для новой ВАХ.

Надеюсь вам стало понятно, что такое ТММ и зачем мы ее ищем, теперь можно перейти непосредственно в железу. Существует множество алгоритмов поиска ТММ, начиная от простейшего "0,8*Uxx" до различных сканирующих алгоритмов с нейронными сетями, но более подробно об алгоритма и их реализации в коде я расскажу в отдельной статье.

Во-первых, контроллер заряжает АКБ, а следовательно необходимо реализовать CC/CV управление (стабилизация тока и напряжения) на выходе и для этого понадобиться измерять ток и напряжение на выходе. Теперь необходимо решить что же должен уметь контроллер, чтобы обеспечить необходимый функционал. В-третьих, должен быть понижающий dc/dc, который опустит входное напряжение до 12 или 24В, в данном случае это будет синхронный buck. Во-вторых, для поиска ТММ необходимо измерять ВАХ солнечной панели, а значит нужно измерять ток и напряжение на входе. Это все позволит реализовать основной функционал устройства, в итоге функциональная схема будет выглядеть так:

Функциональная схема

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

Технические характеристики:

  • Входное напряжение: 15...60В
  • Выходное напряжение: 12/24В
  • Номинальный выходной ток: 20А
  • Алгоритмы МРРТ: да
  • Частота преобразования: 100 кГц
  • Защита от перегрева: да
  • Защита от сквозного тока: да
  • Защита АКБ: OVP и OCP
  • Интерфейсы: USB, Modbus
  • Ресурс: не менее 50 000 часов
  • Габаритные размеры: 110х90х20 мм

Из удобств было решено заложить гальванически развязанный USB для настройки и перепрошивки управляющего микроконтроллера + его можно использовать для отладки, если SWO вам не нравится. Особых изысков в данном решение не предполагается, основной уклон на повышенную надежность, эффективность алгоритмов ТММ и сохранение адекватной стоимости контроллера. От wi-fi и прочего радио отказался сразу, т.к. Так же для реализации удаленного управления и мониторинга заложил RS-485, который надежен, дешевый в реализации и позволяет организовать связь на расстояние до 1000 метров. контроллер обычно эксплуатируется в металлическом щите и как вариант в ж/б здании.

Внимательные могут заметить, что модуль управления похож на решение из прошлой статьи, только основательно переработанное. На КДПВ видно, что устройство состоит из двух печатных плат: 4-х слойных модуль управления и основная 2-х слойная плата. И действительно, после испытания предыдущей версии control board и после обсуждений в комментариях было решено внести ряд глобальных изменений:

  • Отказ от вертикального монтажа в разъем и переход к горизонтальному. Это позволило решить проблему с разъемом и обойтись обычными 2.54 мм PLS-ами, а так же значительно уменьшить высоту устройства. С вертикальной версией высота контроллера была бы 60 мм, а не 20 и был бы велик шанс отломить плату управления. Сейчас же она не выступает на фоне остальных компонентов и по прежнему занимает мало места;
  • Размеры платы уменьшены до 90х35 мм;
  • Контроллер STM32F334R8T6 заменен на более компактный и дешевый STM32F334C8T6. Эта замена так же привела к уменьшению количества каналов для управления полумостом с 5 до 4-х. Как показала практика данный контроллер не вывозит управление разом 5-ю полумостами, разве что совсем простые алгоритмы. Исходя из этого было решено отказаться от корпус LQFP-64 в пользу LQFP-48;
  • Добавлен гальванически развязанный USB, а если быть точнее, то мост USB-UART, т.к. в самом микроконтроллере нет аппаратного USB интерфейса;
  • С платы управления убрана микросхема PHY для RS-485, т.к. нужна она не всем и не всегда, но для ее возможного использования на разъем выведен UART и дополнительный gpio для управления прием/передачей. Так же теперь на основную плату можно поставить гальванически развязанный PHY и не быть привязанным к выбранному мною решению;
  • На отладочный разъем по мимо интерфейса SWD было решено вывести и SWO для более удобной отладки программы.

Плата управления

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

Датчик тока

Вариантов измерить постоянный ток не так много, самые эффективные и простые способы — токовый шунт и датчик на эффекте Холла. Для управления зарядом АКБ и измерения ВАХ солнечной панели необходимо измерять постоянный ток в диапазоне от 0 до 20А. Проблема решалась увеличением номинала шунта и цифровым фильтром, но тогда повышалась мощность, выделяемая на шунте в виде тепла, чего сильно не хотелось. В первой версии я опробовал связку "шунт + INA194", вариант в общем-то рабочий, но сам монитор оказался достаточно шумным и была проблема в измерение токов менее 3-4А.

в прошлом уже пытался их применить, но они сильно врали и у них низка полоса измерения. Изначально вариант с применением датчиков Холла я откинул сразу, а именно серии ACS (например, ACS758 или ACS711), т.к. Измерять мне нужно постоянный ток в системе, где скорость изменения тока не высока, а следовательно и полосы в 100 кГц хватит. Правда в одном из обсуждений человек рассказал об успешном опыте применения данных датчиков, оказалось, что относительно новые серии перестали реагировать на малейшие наводки, главное чтобы около них не было ничего железного или того, что может намагнититься. У Allegro есть две версии датчиков — DC и DC/AC, мне переменку измерять не нужно, а следовательно выбор очевиден в пользу DC, которые так же обладают бОльшим значением "вольт на ампер". Исходя из простоты и цены решения во второй версии MPPT контроллера я поставил ACS713ELCTR-30A. 0,5А с реальной погрешностью ±5%. Это позволило достаточно точно измерять не только большие значения тока, но и малые на уровне 0,3... Схема включения данного датчика крайне проста:

Схема датчика тока

5В с тем, что может измерить АЦП у микроконтроллера STM32, а именно с диапазоном 0... Включение стандартное, никакой магии в схеме нет, единственное что необходимо сделать — "согласовать" выходной диапазон датчика 0... У датчика выход напряжением, он линейны и увеличение выходного напряжения на 133 мВ означает увеличение тока, протекаемого через датчик, на 1А. 3,3В. Теоретически делитель напряжения можно было бы не ставить, т.к. Исходя из этого минимальное напряжение на выходе 0В, а максимальное 30А * 133 мВ/А = 3,99В. Возможно после тестирования и длительной обкатки устройства я все таки уберу делитель и поставлю повторитель напряжения на ОУ. максимальный ток всего 20А и следовательно напряжение на выходе будет в пределах 2,66В и никак не угрожает входу АЦП, но лучше перестраховаться.

Драйвер управления затворами транзисторов

Введение гальванической развязки 2-х напряжений и драйвера повысило бы цену преобразователя на 40%. Еще на стадии идеи я решил сразу отказаться от полной гальванической развязки управляющей схемы от силовой, это банально дорого, хотя и избавляет от наводок и защищает цифровую часть. Драйвер показал себя в работе очень стабильным и достаточным для управления парой mosfet-ов на частоте 100 кГц. Поэтому от любимых драйверов Infineon серии 1ED/1EDI пришлось отказаться и выбрать что-то приличное с бутстрепным питанием верхнего ключа, мой выбор пал на достаточно новое решение — NCP5183DR2G. Я выбрал второй вариант и пока он меня не подвел, хотя изначально относился скептически к надежности такого решения. Минус в нем я нашел один — отсутствие отдельного входа, например, ShutDown или Enable для выключения драйвера в случае аварии, поэтому для реализации защиты необходимо ставить дополнительную дискретную логику или использовать аппаратный вход FAULT в самом микроконтроллера STM32F334. Схема управления транзисторами выглядит так:

Схема драйвера

Вся остальная рассыпуха может быть и брендом по проще. Решение простое и понятное, единственное добавлю от себя — конденсатор С1 должен быть керамическим с диэлектриком X7R и желательно не самый поганый, оригинального Yageo/Murata/Samsung хватит всем. Кстати, о "муках выбора" номинала затворных резисторов R1 и R5 вы можете прочитать в данной статье.

Выходные конденсаторы

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

Было решено заменить выходные электролиты на твердотельные полимерные конденсаторы (как в ваших видеокартах), которые куда легче переносят работу на токах в десятки ампер и обладают ресурсом на порядок выше, чем у самого качественного электролитического конденсатора. В моем контроллере заряда целых 2 таких места: конденсаторы на входе и выходе. Минус у них один — цена, данное удовольствие от Panasonic стоит 2$/шт, но оно того стоит.

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

Фото МРРТ

Я думаю, что все "оценили" стоимость за конденсатор 120 мкФ 35В, электролит от Wurth стоит в 10 раз дешевле. Самые внимательные могут заметить, что выходные твердотельные конденсаторы разные на двух платах. Ну как альтернативу… есть такая азиатская компания Lelon, которая делает полный аналог (с их слов) конденсаторов от Panasonic. Исходя из этого я решил для тестов купить альтернативу конденсаторам 35SEK330M от Panasonic. На одну плату я поставил оригинал, на другую аналог, сами устройства у меня уже тестируются около месяца и пока разницы действительно не замечено, посмотрим какой будет итоговый ресурс, но для желающих уронить цену в 5 раз до 0,4$/шт советую задуматься.

Общие сведения по компонентам

Так как идея предполагает использование данного контроллера не только для изучения на столе, но и работу "в поле", то было решено использовать только проверенных производителей и не использовать китайские компоненты (кроме опыта с Lelon) и различные поделки с алиэкспресс. Хотелось бы отдельно сказать о политике выбора компонентов и решений. В принципе никто не запрещает вам поставить компоненты по проще, с того же алиэкспресс, но будьте готовы к снижению надежности и КПД контроллера. В моем варианте исполнения и в BOM-е фигурируют оригиналы с digikey от производителей типа Infineon, TI, ON, ST, Yageo, Bourns и прочие.

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

  • Кольцо откровенно с запасом выбрано, т.к. Индуктивность силового дросселя — 30 мкГн, намотан на кольце R32/20/10 из материала Kool Mu. планировались эксперименты с частотой и повышением тока;

  • Я пробовал работу и с 3-мя конденсатора, все отлично, так что если вы надумаете повторить, то смело оставляйте половину посадочных мест под выходные конденсаторы пустыми. Емкость выходных конденсаторов — около 300 мкФ, в реальности емкость набрана существенно бОльшая, что уменьшило выходные пульсации. По моим предположениям работать контроллер будет без каких-либо проблем; В принципе можно попробовать впаять 6 обычных электролитических конденсаторов, если нет возможности купить твердотельные.

  • Если у вас уже есть ключи или не смогли купить те, что заложены у меня, то выбирайте транзистор с сопротивлением канала не более 8 мОм и затвором не более 100 нКл. Транзисторы (IPD053N08N3GATMA1) я выбрал те, что были у меня в запасах и достаточно легко покупаются. В противном случае КПД достаточно сильно упадет и транзисторы будут существенно перегреваться.

Так же наверняка найдутся те, кому лень идти на github, поэтому оставлю полную схему устройства в формате PDF:

Для тех, кто не хочет связываться с покупкой софта или пиратством, есть принципиальная схема в PDF и Gerber-файлы, этого вам будет достаточно для самостоятельного заказа печатных плат и сборки МРРТ контроллера. Железная часть проекта выполнена в Altium Designer 19, так же проект можно открыть в Curcuit Studio.

Так же планирую пару статей касательно софтовой части управления dc/dc преобразователем, а именно про П-, ПИ-, ПИД-регуляторы, их реализацию, цифровые фильтры и соответственно про алгоритмы поиска ТММ. Теперь что касается софта… В ближайшее время я "причешу" тестовый проект на котором сейчас работают контроллеры и так же выложу на github, все желающие смогут посмотреть реализацию тех или иных модулей, а может и помочь в его написании и поиске ошибок.

в процессе работы вылезли небольшие, но неприятные мелочи, например, с некоторой вероятностью без прошивки на выводах МК может появиться лог. В дальнейшем предполагается еще одна ревизия железа, т.к. Данная проблема побеждается или предварительной заливкой прошивки перед первым включением контроллера или более правильный путь — установка резисторов 10 кОм, подтягивающих входы HIN и LIN на землю (GND). 1 и она откроет оба транзистора и приведет к КЗ. Хотя и в текущем состоянии контроллер работоспособен, но хочется в дальнейшем "вычистить" все потенциально проблемные места.

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

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

Проекты на Github

Теги
Показать больше

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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть