Оглавление:

Arduino - солнечное зарядное устройство PV MPPT: 6 шагов (с изображениями)
Arduino - солнечное зарядное устройство PV MPPT: 6 шагов (с изображениями)

Видео: Arduino - солнечное зарядное устройство PV MPPT: 6 шагов (с изображениями)

Видео: Arduino - солнечное зарядное устройство PV MPPT: 6 шагов (с изображениями)
Видео: MPPT зарядка Li-ion на CN3163 2024, Ноябрь
Anonim
Image
Image
Понижающий преобразователь
Понижающий преобразователь

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

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

ЕСЛИ ВАМ НРАВИТСЯ МОИ УСИЛИЯ, ПОЖАЛУЙСТА, ГОЛОСОВАТЬ ЭТИ ИНСТРУКЦИИ.

Шаг 1. Что такое MPPT и зачем он нам нужен?

Наши солнечные панели глупы и не умеют понимать состояние батареи. Предположим, у нас есть солнечная панель 12 В / 100 Вт, и она будет давать выходную мощность от 18 В до 21 В в зависимости от производителя, но батареи рассчитаны на номинальное напряжение 12 В, в условиях полной зарядки они будут 13,6 В и будут 11,0 В при полной нагрузке. увольнять. Теперь предположим, что наши батареи заряжаются на 13 В, панели выдают 18 В, 5,5 А при 100% эффективности работы (100% невозможно, но давайте предположим). Обычные контроллеры имеют ШИМ-регулятор напряжения ckt, который понижает напряжение до 13,6, но не имеет усиления по току. он обеспечивает защиту только от перезарядки и тока утечки на панели в ночное время.

Итак, у нас 13,6 В * 5,5 А = 74,8 Вт.

Мы теряем примерно 25 ватт.

Чтобы столкнуться с этой проблемой, я использовал конвертер smps buck. такие преобразователи имеют КПД выше 90%.

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

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

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

Шаг 2: КАК РАБОТАЕТ MPPT?

Я не собираюсь подробно это обсуждать. так что, если вы хотите понять это, взгляните на эту ссылку -Что такое MPPT?

В этом проекте я отслеживал входные характеристики V-I и выходные V-I. умножив входное V-I и выходное V-I, мы можем получить мощность в ваттах.

Допустим, у нас есть 17 В, 5 А, т.е. 17x5 = 85 Вт в любое время суток. в то же время наша мощность составляет 13 В, 6 А, т.е. 13x6 = 78 Вт.

Теперь MPPT будет увеличивать или уменьшать выходное напряжение до по сравнению с предыдущей входной / выходной мощностью.

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

Шаг 3: реализация MPPT на Arduino

Это мозг этого зарядного устройства. Ниже приведен код Arduino для регулирования вывода и реализации MPPT в одном блоке кода.

// Iout = выходной ток

// Vout = выходное напряжение

// Vin = входное напряжение

// Pin = входная мощность, Pin_previous = последняя входная мощность

// Vout_last = последнее выходное напряжение, Vout_sense = текущее выходное напряжение

пустое регулирование (float Iout, float Vin, float Vout) {if ((Vout> Vout_max) || (Iout> Iout_max) || ((Pin> Pin_previous && Vout_sense <Vout_last) || (PinVout_last)))

{

если (рабочий_цикл> 0)

{

duty_cycle - = 1;

}

analogWrite (buck_pin, duty_cycle);

}

иначе если ((VoutVout_last) || (Пи

{

если (рабочий_цикл <240)

{duty_cycle + = 1;

}

analogWrite (buck_pin, duty_cycle);

}

Pin_previous = Пин;

Vin_last = Вин;

Vout_last = Vout;

}

Шаг 4: понижающий преобразователь

Я использовал N-канальный МОП-транзистор, чтобы сделать понижающий преобразователь. Обычно люди выбирают МОП-транзистор с P-каналом для переключения на высокой стороне, и если они выбирают МОП-транзистор с N-каналом для той же цели, то потребуется ИС драйвера или загрузочная обвязка ckt.

но я модифицировал понижающий преобразователь ckt, чтобы иметь переключение на низком уровне с использованием N-канального МОП-транзистора. Я использую N-канал, потому что это низкая стоимость, высокая номинальная мощность и меньшее рассеивание мощности. В этом проекте используется МОП-транзистор логического уровня IRFz44n, поэтому он может напрямую управляться выводом PWM Arduino.

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

как вы можете видеть в ckt выше, я поместил МОП-транзистор на -ve напряжения, таким образом используя + 12В от панели в качестве земли. Эта конфигурация позволяет мне использовать N-канальный МОП-транзистор для понижающего преобразователя с минимальным количеством компонентов.

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

Я подключил Arduino к входным клеммам Solar и использовал его линию -ve в качестве заземления для Arduino. мы можем легко измерить входное напряжение на этом этапе, используя делитель напряжения ckt согласно нашим требованиям. но не можем так легко измерить выходное напряжение, потому что у нас нет общей земли.

Для этого есть хитрость. вместо того, чтобы измерять напряжение на выходном конденсаторе, я измерил напряжение между двумя отрицательными линиями. используя Solar -ve в качестве земли для Arduino и выход -ve в качестве измеряемого сигнала / напряжения. Значение, полученное в результате этого измерения, следует вычесть из измеренного входного напряжения, и вы получите реальное выходное напряжение на выходном конденсаторе.

Vout_sense_temp = Vout_sense_temp * 0,92 + float (raw_vout) * volt_factor * 0,08; // измеряем напряжение между входной землей и выходной землей.

Vout_sense = Vin_sense-Vout_sense_temp-diode_volt; // изменяем разницу напряжений между двумя землями на выходное напряжение..

Для измерения тока я использовал токоизмерительные модули ACS-712. Они были запитаны от Arduino и подключены к входу gnd.

внутренние таймеры модифицированы для усиления ШИМ 62,5 кГц на выводе D6. который используется для управления МОП-транзистором. Для обеспечения защиты от обратной утечки и обратной полярности потребуется выходной блокирующий диод. Для этой цели используется диод Шоттки с желаемым номинальным током. Значение индуктора зависит от требований к частоте и выходному току. Вы можете использовать доступные онлайн калькуляторы понижающего преобразователя или использовать нагрузку 100uH 5A-10A. никогда не превышайте максимальный выходной ток индуктора на 80% -90%.

Шаг 5: Последний штрих -

Image
Image

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

Я обновлю окончательный код и завершу схему ckt очень скоро.

Шаг 6: ОБНОВЛЕНИЕ: - Фактическая принципиальная схема, спецификация и код

Конкурс огней 2017
Конкурс огней 2017

ОБНОВИТЬ:-

Я загрузил код, бомбу и схему. он немного отличается от моего, потому что его легче сделать.

Рекомендуемые: