Солнце, ветер и вода ver 0.3.5

Инновации в яхту — солнечный контроллер специального назначения

сезон третий с половиной

Кризис — это когда не хочется хотеть чего-то хотеть

© Квртет-И

В первой статье цикла я рассказал как появилась парусная яхта. На момент постройки она была укомплектована малосильным (менее 1 л.с.) электрическим двигателем. Как оказалось на практике такого двигателя, в принципе, хватает для парковки, он бесшумный и без запаха по сравнению с бензиновым, но совершенно не тянет в штормовую погоду. Всего один внезапный шторм решил судьбу мотора и передо мной встала задача обеспечения на судне двигателя, способного вытянуть 2,5-х тонную яхту в аналогичный шторм. Выбор мотора это отдельный квест, почитайте об этом в предыдущей статье. В итоге был выбран стационарный яхтенный электромотор — TORQEEDO CRUISE 4FP. Мотор имеет питание 48В, а стандартная электросеть яхтенного оборудования — 12В. Пока модернизация идет полным ходом, самое время создать контроллер гибридной энергосети, который, для начала, будет обеспечивать заряд аккумулятора с базовым напряжением 48В не только от двух старых солнечных батарей. Назову его КГЭ-1. Очевидно, что при возросшей энерговооруженности яхты, потребуется значительно увеличить емкость аккумуляторов. Именно поэтому КГЭ-1 должен быть готов принять питание от других возможных источников энергии — ветряк, бензогенератор, дополнительные СБ, резервные аккумуляторы и даже педальный генератор. Решать задачу буду так, как она и поставлена — модульно. Структурная схема устройства будет содержать один общий микроконтроллер, назову его УМ — управляющий модуль, и некоторое количество периферийных модулей (Контроллеры солнечных батарей), работающих на общий аккумулятор.

image-loader.svg

Принцип работы КГЭ-1: Энергия, получаемая от каждого источника квантуется и забрасывается в аккумулятор. В качестве «катапульты» используется обычный дроссель. Заброс энергии продолжается до тех пор пока в аккумуляторе есть свободная емкость. Периферийный модуль по факту является обратноходовым преобразователем с внешним управлением.

image-loader.svg

Схема проста и состоит из недорогих деталей и при этом позволяет получить КПД более 90%. 

Здесь АКБ это общий силовой аккумулятор. R2, R3, C3, Iskra и конвертер 48/11 это общий управляющий модуль — УМ. Остальная часть схемы соответствует периферийному модулю и будет тиражироваться под каждый отдельный источник.

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

Все это имеет смысл только при максимально высоком КПД преобразования и именно поэтому КГЭ-1 работает по принципу mppt, настраивая каждый периферийный модуль максимальное значение выходного тока. Это и будет соответствовать максимуму отбираемой у источника мощности. Например, солнечные панели на движущейся яхте априори имеют неравные условия, одна может быть полностью освещена, на другую падает тень о леера или паруса. Через несколько минут ситуация может измениться.

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

УМ состоит из микроконтроллера, схемы измерения напряжения аккумулятора и блока питания.

Требования к микроконтроллер (в последующем МК):

  1. измерение напряжения и тока — минимум 9;

  2. выходной сигнал ШИМ с высокой частотой — минимум 4 выхода ШИМ;

  3. малое энергопотребление;

  4. доступность в продаже и «некусучая цена».

Микроконтроллер Iskra Neo, программируемый контроллер на базе ATmega32U4, вполне удовлетворяет всем характеристикам и доступен по цене. Он имеет  20 портов ввода-вывода общего назначения, 7 портов с поддержкой ШИМ, 12 портов, подключенных к АЦП с напряжением от 0 до 5В. МК сможет дать частоту ШИМ f= { F_{CPU}} / (K* 2^n)= 62,5кГц

где f — частота ШИМ,=16 МГц — тактовая частота микроконтроллера, K=1 — коэффициент предделителя счетчика, n = 8 бит — разрядность счетчика.

Теперь делитель напряжения R2 и R3. Делитель напряжения нужен, чтобы преобразовывать напряжение АКБ 38,4–56,7В в напряжение от 0 до 5 В.

Для безопасности выходное напряжение на резисторах беру меньше 50,707 и получаем 3,5В. Так как у микроконтроллера есть внутреннее сопротивление, и оно подключено параллельно к R3, то надо соблюдать условие, что R3<

Так как делитель подключен к АКБ постоянно, то и ток через него течет постоянно, а этот ток является прямыми потерями поэтому целесообразно выбирать резистор R3, как можно больше. Объединяя первое и второе условия, он должен быть до 5кОм.

Первый удовлетворяющий требованиям резистор для R3 из сетки сопротивлений = 3,6кОм.

Тогда R2=(U_{дел}*R3/U_{3})-R3= 55,4 кОм

Ближайший по сетке 56,4кОм.

Теперь надо рассчитать потери в делителе: Pдел.потери= 0,05415 Вт, это составляет 0,135%, считаю, что это приемлемо.

Конденсатор C3 является фильтром высокочастотных помех.

Взял конденсатор с емкостью C3 = 0,1 мкФ потому что был под рукой, проверяю:

x_{c}=1/(2*\pi*f*C)= 25,4 Ом

Коэффициент деления помехи равен R_{c}/(R_{c}+R2) <= 45*10^{-5}

Коэффициент деления полезного сигнала = 0,06

Коэффициент подавления помехи относительно сигнала нашел как отношение двух коэффициентов деления = 133

image-loader.svg

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

После этого приступаю к расчету обратноходового преобразователя. В моем случае нет необходимости в гальванической развязке, поэтому сосредоточусь на однообмоточном дросселе. Во время импульса он накапливает энергию в сердечнике, а во время паузы перебрасывает ее в аккумулятор. Вначале рассчитаю сколько энергии надо запасти и передать за один импульс, по формуле: W_3=P_{сб}/f = 0,64*10^{-3} Вт*c

где Wз — энергия, которую дроссель сможет запасти за один импульс, Pсб — максимальная мощность СБ (или другого источника), Pсб=40Вт, f — частота ШИМ.

Теперь приступаю к расчету индуктивности катушки (дросселя). 

Время одного импульса ton = TD,

где T — это период, D — скважность (для меандра D=0,5).

Максимальный ток Imax. При открытии транзистора ток будет нарастать практически линейно, тогда выведу формулу для Imax через Iср = 2,05А (из характеристик СБ). I_{ср}=S/T, где S=I_{max}*t_{on}/2, T=1/f— период

image-loader.svg

Сразу рассчитаем T=16 мкс, ton=8 мкс, I_{max}=2*I_{cp}/(f*t_{on})=8,2A

Могу найти индуктивность катушки (дросселя) по формуле: L=U_{сб}*t_{on}/(I_{max}-0)= 19,02 мкГн

где Uсб=19,5В — рабочее напряжение солнечной батареи (из характеристик СБ).

Надо узнать среднеквадратичное значение первичного и вторичного тока (тока катушки в первый и второй полупериод).

Ipri=Imax=8,2А. I_{RMS(pri)}=I_{pri}*\sqrt{D/3}=3,35A.

I_{sec}=U_{сб}*I_{pri}/U_{max(акб)}

где Umax (акб) — максимальное напряжение на которое можно зарядить аккумулятор и равно оно в моем случае 56,7 В.

 I_{RMS(sec)}=I_{sec}*\sqrt{D/3}=2,86A

Теперь можно приступать к выбору сердечника.

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

Входные данные таблицы:

  • Диаметр провода (dпр) возьму равным 0,5 мм. 

  • магнитная проницаемость,  

  • наружный диаметр,  

  • внутренний диаметр,  

  • высота,  

  • путь магнитной линии,  

  • площадь поперечного сечения,  

  • индукция насыщения,  

  • максимальная напряженность,  

  • удельные потери,

  • остаточная индукция. 

Все эти параметры можно найти в даташите сердечников.

Содержание табличного расчета:

Вначале рассчитал количество витков, которое надо намотать, чтобы получить нужную индуктивность. N=\sqrt{L*l/(m_0*m*S_e)},

L — индуктивность в Гн, l — путь магнитной линии в м, m0 — абсолютная магнитная проницаемость вакуума, m — магнитная проницаемость сердечника, Se — площадь поперечного сечения в м. После подстановки значений округлили до целого. 

Длина одного витка: l_{1вит}= ((d_{нар}-d_{внут})+d_{пр})+( h+d_{пр} )*2 

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

H_{RMS}=( N / { l_{1вит}}  )* I_{RMS(pri)}, B_{RMS}= {m_{0}*m*I_{RMS(pri)}*N} /{l},

где l — путь магнитной линии в м, m0 — абсолютная магнитная проницаемость вакуума в Гн/м.

Для того, чтобы найти потери мне не хватает объема, так что считаю объем: V=\pi*h*{({ d_{нар}}^{2}-{ d_{внут}}^{2})} /{2},  

А теперь мощность потерь в сердечнике: P_{потерь}=P_{уд.потери}* 10^{-3}*V*10^{-3},  

Удельные потери даны в мВт/см^3, поэтому в формуле надо их перевести в Вт, объем я считал до этого в мм и также в формуле переведу его в см3.

Считаю на сколько максимально нагревается сердечник. Для этого вначале посчитаю площадь открытой поверхности сердечника.
S_{закр}=d_{пр}*l_{1вит}*N, S_{сердечника}= \pi*({2*( ({ d_{нар}}) ^{2} -({ d_{внут}}) ^{2})} /{4}+ d_{нар}*h+d_{внут}*h), S_{откр}= S_{сердечника}- S_{закр}.

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

t= ({ { P_{потерь}} \over {S _{откр}}  })^{0,833},

Температура не должна превышать температуру плавления олова (припоя).

Выбираю красно-серый кольцевой сердечник с распределенным зазором Т94–2. Расчетные потери 0,138 Вт, температура перегрева 20 градусов.

image-loader.svg

Расчет входного и выходного фильтра.

требования к конденсаторам:

  1. Емкость должна быть больше рассчитанной (ниже);

  2. иметь возможность пропускать высокую переменную составляющую тока;

  3. иметь низкое сопротивление (ESR);

    C_{вх}={ { I_{ср}*dt} \over {dU} },

С_{вых}={ { I_{фвых}*(T-ton)} \over {dU} },

где dt = ton (только для входной емкости), Iср =2,05А (из характеристик СБ), Свх = 328 мкФ, Свых = 150,4 мкФ.

I_{фвых}= \sqrt{ I_{RMS(sec)}^{2}-I_{out}^{2}}=3,25 А;

I_{out}= { P_{сб}} / { U_{max(акб)}}=2,24 А.

Выбрал конденсатор B41858C9687M. Его емкость = 680 мкФ. Максимальный ток 2,683 А. На входной ставлю два в параллель, чтобы выполнить условие по току. На выходной фильтр — один.

Обязательно считаю потери: Рпот=ESR*I_{фвых},

Потери на входном фильтре Рпот вх=0,14 Вт, на выходном — Рпот вых=0,1 Вт.

Приступаю к расчету транзистора.

Требования к транзистору:

  1. Мощность потерь должна быть маленькой (меньше 2,5% от максимальной мощности)

    R_{канала}> {{2,5* P_{ сб}} \over {100* I_{RMS}^{2}}}» src=«https://habrastorage.org/getpro/habr/upload_files/a3b/8e2/1d6/a3b8e21d6eea1cd591769ce3280a7a20.svg» />, </em></p></li><li><p><em>Допустимое напряжение закрытого канала должно быть с запасом.</em></p><p><em><img alt= {{(U_{max (акб)}+ dU_{падение на диоде})} \over { \sqrt{2}/2} }» src=«https://habrastorage.org/getpro/habr/upload_files/4ff/cf8/fdd/4ffcf8fdd4b090cb8269ba5c2bb66ef8.svg» />

  2. Допустимый ток исток-сток значительно выше I_{max}=8,2A,

  3. Использовать то, что есть.

По этим требованиям выбрал транзистор IRF530N сопротивление канала 0,11 Ом (в максимальных значениях), максимальное напряжение сток исток 100В.

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

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

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

I_{откр}= {{q_{затвора}} \over { t_{r}+ t_{d(on)}} }= 1,18А — ток перезаряда затвора при открытии,

I_{закр}= {{q_{затвора}} \over { t_{f}+ t_{d(off)}} }= 0,6А — ток перезаряда затвора при закрытии,

где qзатвора = 37нКл — заряд затвора, tr = 22нс — время, за которое транзистор открывается, tf = 25нс — время, за которое транзистор закрывается, td (on) = 9,2нс — задержка перед открытием, td (off) = 35нс — задержка перед закрытием. Все эти величины можно найти в даташите по транзистору.

Нужно сделать так, чтобы ток, который поступает на затвор, был больше или равен, чем ток закрытия (Iзакр). Очевидно, что выходы УМ не способны генерировать такие токи в затвор, да и напряжение там менее 5 В. Глядя на входные характеристики транзистора, видно, что сопротивление канала снижается пропорционально росту напряжения затвора вплоть до 10 В. Прямое управление силовым ключом транзистора от УМ приведет к более медленному процессу открытия и закрытия канала. Как следствие потери возрастут  пропорционально времени переходного процесса и транзистор попросту нагреется до бессовестных значений.

Говоря человеческим языком, если хочешь чтобы транзистор заработал по-настоящему, обеспечь ему на затворе больше 10 В и больше 1А.

Для этого ставлю усилитель сигнала. Можно конечно построить усилитель на транзисторах, но гораздо проще использовать специальные микросхемы. Так как общий провод управляющего сигнала подключен к истоку транзистора, то схема называется «Ключ нижнего плеча», соответственно, буду искать микросхему, которая называется «драйвер нижнего плеча». Выберу микросхему TC4420CPA, которая обеспечивает усиление сигнала до 18В, и тока до 6А. Ввиду того, что напряжение питания микроконтроллера 7–12В, целесообразно использовать один общий блок питания для драйверов нижнего плеча и контроллера, а напряжение выбрать, например, 11В, что выше 10В, но ниже 12В. Надо ограничить ток перезаряда затвора, как сказал выше. Для этого надо поставить резистор R1 на затворе: R_{1}= {U_{ус}} / { I_{ср.от.зак.}},

где Uус — напряжение питания микроконтроллера (=11В), I_{ср.от.зак.}= {{ I_{откр}+I_{закр}} \over 2}

Ближайший резистор по таблице сопротивлений 13Ом, поэтому возьму его.

Потери при открытии и закрытии на затворе оптимизированы по максимуму и стремятся к нулю. 

Потери в открытом канале (когда транзистор включен):

W_{потери отк.канала}={R_{отк.канала}*(I_{max(откр)}^{2}+ I_{max(закр)}^{2})*{({t_{on}} over {2}-(t_{r}+t_{d(on)}))} \over 2}

Приводя энергию к времени периода, получаю мощность потерь чуть менее 0,9 Вт. Корпус транзистора рассеивает до 3 Вт, но что-то меня терзают смутные сомнения — поставлю на него радиатор в несколько квадратных сантиметров.

Диод — самый главный по потерям в этой схеме. Ему надо уделить особое внимание.

Требования:

  1. Максимальное обратное напряжение должно быть больше 57, 6 с запасом;

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

  3. минимизация мощностей потерь, а это значит минимизация мощностей на прямом и обратном ходу;

  4. с минимальным обратным током в закрытом состоянии

  5. с минимальным напряжением в открытом состоянии

    Выбрал диод MBR10100G, так как он подходит по большинству параметров.

    Для измерения тока выходной цепи оказалось проще всего воспользоваться готовым «тройка-модулем» для контроллеров iskra. Просто впаял его прямо на плату.

    В завершении расчета складываю все потери и… расчетный КПД получается более 94%. Превосходный результат для самоделки. Соберем и проверим!

    ДиаграммаДиаграмма

image-loader.svg

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

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

У устройства много тяжелых габаритных деталей: конденсаторы, транзистор, диод, дроссель. В условиях морского судна они постоянно испытывают перегрузки. Их надо закрепить в корпусе и надежно прикрутить. Соединение УМ и периферийных модулей сделаю с помощью шлейфа. В каждом периферийном модуле установлю DIP-переключатель для установки адреса модуля в системе.

image-loader.svg

Корпуса печатаю на 3D принтере и вот устройство готово! Перехожу к самому интересному — программированию.

Итак, исходные данные для управления:

  • напряжение АКБ, снимаемое с делителя R2R3,

  • напряжение, пропорциональное выходному току каждого периферийного модуля приходит с интегрированных в них тройка-модулей,

  • для температурной компенсации пришлось добавить по 1-wire сети датчик температуры АКБ,

  • Зарядная характеристика АКБ из паспорта аккумулятора.

Выходные данные:  

  • управляющий ШИМ-сигнал для каждого периферийного модуля,

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

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

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

  1. считал и нормализовал сигналы с датчиков,

  2. выполнил фильтрацию помех,

  3. оцифровал зарядную характеристику,

  4. подготовил библиотеку ШИМ,

  5. подготовил итератор для сканирования источника на предмет максимальной отдачи,

  6. итератор запускается по условию, что мощность отдачи изменилась на 5%,

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

  8. подготовить динамический текст для отправки интегральной пользовательской информации по запросу с телефона по ВТ,

  9. так как в ардуино нет системных часов, для определения ночи предпринял простой прием, если суммарная мощность всех источников меньше собственного потребления КГЭ-1, значит наступила ночь,

  10.  сделал ограничение тока заряда при достижении максимального уровня энергии в АКБ, просто наступает ночь,

  11.  при наступлении ночи УМ гасит периферию и засыпает на 30 минут, потом просыпается и проводит сканирование. Если опять ночь — то снова ложится спать. Так удается сэкономить энергию аккумулятора, ведь ночью поступлений от источников нет.

ПС. Подходит к концу второй сезон использования девайса на яхте. Краткий итог: До установки КГЭ-1, по наблюдениям, в солнечный июльский день приходило примерно 200–250 Вт*часов. КГЭ-1 молодец, он выжимает до 400 Вт*часов за сутки с тех же солнечных батарей.

© Habrahabr.ru