Съдържание:

Arduino - PV MPPT слънчево зарядно устройство: 6 стъпки (със снимки)
Arduino - PV MPPT слънчево зарядно устройство: 6 стъпки (със снимки)

Видео: Arduino - PV MPPT слънчево зарядно устройство: 6 стъпки (със снимки)

Видео: Arduino - PV MPPT слънчево зарядно устройство: 6 стъпки (със снимки)
Видео: Buck converter using Arduino - For MPPT solar charger 2024, Юли
Anonim
Image
Image
Конвертор на долари
Конвертор на долари

На пазара има много контролери за зареждане. обикновените евтини контролери на зареждане не са ефективни за използване на максимална мощност от слънчеви панели. Тези, които са ефективни, са много скъпи.

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

АКО ХАРЕСВА МОЕТО УСИЛИЕ ОТ МОЛЯ, ГЛАСУВАЙТЕ ТАЗИ ИНСТРУКЦИИ.

Стъпка 1: Какво е MPPT и защо се нуждаем от него?

Нашите слънчеви панели са тъпи и не са умни, за да разберат състоянието на батерията. Да предположим, че имаме слънчев панел с 12v/100 вата и той ще даде мощност между 18V-21V в зависимост от производителите, но батериите са с номинално напрежение 12v, при условия на пълно зареждане те ще бъдат 13.6v и ще бъдат 11.0v при пълно изхвърляне. сега нека приемем, че нашите батерии са на 13v зареждане, панелите дават 18v, 5.5A при 100% работна ефективност (не е възможно да имаме 100%, но нека приемем). обикновените контролери имат PWM регулатор на напрежението ckt, който намалява напрежението до 13,6, но няма печалба в тока. той осигурява само защита срещу презареждане и изтичане на ток към панелите през нощта.

Така че имаме 13.6v*5.5A = 74.8 вата.

Губим около 25 вата.

За да срещна този проблем, използвах smps buck converter. този вид преобразуващи имат над 90% ефективност.

Вторият проблем, който имаме, е нелинейният изход на слънчеви панели. те трябва да работят при определено напрежение, за да получат максимална налична мощност. Производството им варира през деня.

За решаване на този проблем се използват алгоритми MPPT. MPPT (проследяване на максимална мощност), както подсказва името, този алгоритъм проследява максималната налична мощност от панелите и променя изходните параметри, за да поддържа състоянието.

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

Стъпка 2: КАК РАБОТИ MPPT?

Няма да обсъждам подробно това. така че ако искате да го разберете, погледнете тази връзка -Какво е MPPT?

В този проект проследих входните V-I характеристики и изходния V-I също. като умножим входа V-I и изхода V-I можем да имаме мощността във ватове.

да кажем, че имаме 17 V, 5 A, т.е. 17x5 = 85 вата по всяко време на деня. в същото време нашият изход е 13 V, 6A, т.е. 13x6 = 78 Watt.

Сега MPPT ще увеличи или намали изходното напрежение до чрез сравняване с предишната входна/изходна мощност.

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

Стъпка 3: Прилагане на MPPT на Arduino

Това е мозъкът на това зарядно устройство. По -долу е кодът Arduino за регулиране на изхода и прилагане на MPPT в един кодов блок.

// Iout = изходен ток

// Vout = изходно напрежение

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

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

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

void regulate (float Iout, float Vin, float Vout) {if ((Vout> Vout_max) || (Iout> Iout_max) || ((Pin> Pin_previous && Vout_sense <Vout_last) || (PinVout_last)))

{

ако (работен цикъл> 0)

{

работен цикъл -= 1;

}

analogWrite (buck_pin, duty_cycle);

}

иначе ако ((VoutVout_last) || (Пи

{

ако (работен цикъл <240)

{duty_cycle+= 1;

}

analogWrite (buck_pin, duty_cycle);

}

Pin_previous = Пин;

Vin_last = Vin;

Vout_last = Vout;

}

Стъпка 4: Buck Converter

Използвал съм N-канал MOSFET, за да направя долар конвертор. обикновено хората избират P-канал MOSFET за високо странично превключване и ако избират N-канален MOSFET за същата цел, тогава ще се изисква IC драйвер или boot strapping ckt.

но аз модифицирах долар конвертор ckt да има ниска страна превключване с помощта на N-канал MOSFET. аз използвам N-канал, защото това са евтини, високи мощности и по-ниско разсейване на мощността. този проект използва IRFz44n логическо ниво MOSFET, така че може да се управлява директно от PWM щифт на arduino.

за по -голям ток на натоварване трябва да се използва транзистор за прилагане на 10V на портата, за да се получи MOSFET в насищане напълно и да се намали разсейването на мощността, аз също направих същото.

както можете да видите в ckt по -горе, аз съм поставил MOSFET на -ve напрежение, като по този начин използвам +12v от панела като земя. тази конфигурация ми позволява да използвам N-канал MOSFET за доларов конвертор с минимални компоненти.

но има и някои недостатъци. тъй като сте разделили напрежението от двете страни, вече нямате обща референтна основа. така че измерването на напрежения е много сложно.

Свързах Arduino към терминалите за слънчеви входове и използвах неговата линия -ve като земя за arduino. можем лесно да измерим входния volateg в този момент, като използваме делител на напрежение ckt според нашите изисквания. но не можем да измерим изходното напрежение толкова лесно, тъй като нямаме общи точки.

Сега за да направите това има трик. вместо да измервам напрежението по изходния кондензатор, аз измервах напрежението между две линии. използвайки слънчево -ve като заземяване за arduino и изходно -ve като сигнал/напрежение за измерване. стойността, която имате с това измерване, трябва да се извади от измереното входно напрежение и ще получите реалното изходно напрежение през изходния кондензатор.

Vout_sense_temp = Vout_sense_temp*0.92+float (raw_vout)*volt_factor*0.08; // измерване на volatge през входния gnd и изходния gnd.

Vout_sense = Vin_sense-Vout_sense_temp-diode_volt; // промяна на разликата в напрежението между две основания към изходното напрежение..

За измервания на ток съм използвал ACS-712 токочувствителни модули. Те се захранват от arduino и са свързани към вход gnd.

вътрешните таймери са модифицирани, за да получат 62,5 Khz PWM на щифт D6. който се използва за управление на MOSFET. ще бъде необходим изходен блокиращ диод, за да осигури обратно изтичане и защита срещу обратна полярност, използвайте за тази цел диод Шоттки с желания токов рейтинг. Стойността на индуктора зависи от изискванията за честота и изходен ток. можете да използвате онлайн налични калкулатори за конвертиране на долари или да използвате 100uH 5A-10A товар. никога не превишавайте максималния изходен ток на индуктора с 80%-90%.

Стъпка 5: Последно докосване -

Image
Image

можете също да добавите допълнителни функции към зарядното устройство. като моя, LCD също показват параметрите и 2 превключвателя за приемане на данни от потребителя.

Ще актуализирам окончателния код и ще завърша ckt диаграмата много скоро.

Стъпка 6: АКТУАЛИЗИРАНЕ:- Действителна верига, спецификация и код

Конкурс за светлини 2017
Конкурс за светлини 2017

АКТУАЛИЗИРАНЕ:-

Качих кода, бом и верига. той е малко по -различен от моя, защото е по -лесно да се направи този.

Препоръчано: