Turinys:

„Arduino“- PV MPPT saulės įkroviklis: 6 žingsniai (su nuotraukomis)
„Arduino“- PV MPPT saulės įkroviklis: 6 žingsniai (su nuotraukomis)

Video: „Arduino“- PV MPPT saulės įkroviklis: 6 žingsniai (su nuotraukomis)

Video: „Arduino“- PV MPPT saulės įkroviklis: 6 žingsniai (su nuotraukomis)
Video: Mppt 3 controler for arduino nano . Zir.lt (forum) 2024, Liepa
Anonim
Image
Image
Buck konverteris
Buck konverteris

Rinkoje yra daug įkrovimo valdiklių. paprasti pigūs įkrovimo valdikliai nėra efektyvūs, kad išnaudotų maksimalią saulės baterijų galią. Tie, kurie yra veiksmingi, yra labai brangūs.

Taigi nusprendžiau sukurti savo įkrovimo valdiklį, kuris būtų efektyvus ir pakankamai protingas, kad suprastų akumuliatoriaus poreikius ir saulės sąlygas. imamasi atitinkamų veiksmų, kad būtų galima maksimaliai išnaudoti saulės energiją ir labai efektyviai įdėti ją į akumuliatorių.

Jei jums patinka mano pastangos, BALSUOKITE UŽ ŠIAS INSTRUKCIJAS.

1 žingsnis: Kas yra MPPT ir kodėl mums to reikia?

Mūsų saulės kolektoriai yra kvaili ir nėra protingi suprasti akumuliatoriaus sąlygas. Tarkime, kad mes turime 12v/100 vatų saulės kolektorių, o jo galia nuo 18V iki 21V priklauso nuo gamintojo, tačiau akumuliatoriai yra skirti 12v vardinei įtampai, esant pilnam įkrovimui, jie bus 13,6v ir visiškai 11,0v iškrova. dabar tarkime, kad mūsų baterijos yra įkraunamos 13 V įtampa, plokštės suteikia 18 V, 5,5 A esant 100% darbo efektyvumui (neįmanoma turėti 100%, bet leidžia manyti). Įprasti valdikliai turi PWM įtampos reguliatorių ckt, kuris sumažina įtampą iki 13,6, tačiau srovės stiprumo nėra. jis tik apsaugo nuo per didelio įkrovimo ir nuotėkio į plokštes tik naktį.

Taigi mes turime 13,6v*5,5A = 74,8 vatų.

Mes prarandame apie 25 vatus.

Norėdami susidurti su šia problema, naudoju smps buck converter. Tokių keitiklių efektyvumas yra didesnis nei 90%.

Antra problema, kurią turime, yra netiesinė saulės baterijų išvestis. juos reikia valdyti tam tikra įtampa, kad būtų surinkta didžiausia turima galia. Jų našumas kinta kiekvieną dieną.

Norėdami išspręsti šią problemą, naudojami MPPT algoritmai. MPPT (maksimalaus galios taško stebėjimas), kaip rodo pavadinimas, šis algoritmas seka didžiausią galimą skydų galią ir keičia išvesties parametrus, kad išlaikytų būklę.

Taigi, naudojant MPPT, mūsų plokštės generuos didžiausią turimą galią, o „Buck“keitiklis veiksmingai įkraus šį krūvį į baterijas.

2 žingsnis: KAIP VEIKIA MPPT?

Aš apie tai išsamiai nediskutuosiu. taigi, jei norite tai suprasti, pažiūrėkite į šią nuorodą -kas yra MPPT?

Šiame projekte aš taip pat stebėjau įvesties V-I charakteristikas ir išvestį V-I. padauginę įvestį V-I ir išėjimą V-I, galime turėti galią vatais.

Tarkime, kad mes turime 17 V, 5 A, ty 17x5 = 85 vatus bet kuriuo paros metu. tuo pačiu metu mūsų išėjimas yra 13 V, 6A, ty 13x6 = 78 vatai.

Dabar MPPT padidins arba sumažins išėjimo įtampą, lyginant su ankstesne įėjimo/išėjimo galia.

jei ankstesnė įėjimo galia buvo didelė, o išėjimo įtampa buvo mažesnė nei esama, išėjimo įtampa vėl bus mažesnė, kad grįžtumėte prie didelės galios, o jei išėjimo įtampa buvo didelė, esama įtampa bus padidinta iki ankstesnio lygio. todėl jis nuolat svyruoja aplink didžiausią galios tašką. šiuos svyravimus sumažina efektyvūs MPPT algoritmai.

3 žingsnis: MPPT diegimas „Arduino“

Tai šio įkroviklio smegenys. Žemiau yra „Arduino“kodas, skirtas reguliuoti išvestį ir MPPT įgyvendinimą viename kodo bloke.

// Iout = išėjimo srovė

// Vout = išėjimo įtampa

// Vin = įėjimo įtampa

// Kaištis = įvesties galia, „Pin_previous“= paskutinė įvesties galia

// Vout_last = paskutinė išėjimo įtampa, Vout_sense = esama išėjimo įtampa

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

{

jei (duty_cycle> 0)

{

muito ciklas -= 1;

}

analogWrite (buck_pin, duty_cycle);

}

kitaip jei ((VoutVout_last) || (Pi

{

jei (muito ciklas <240)

{duty_cycle+= 1;

}

analogWrite (buck_pin, duty_cycle);

}

Pin_previous = smeigtukas;

Vin_last = Vin;

Vout_last = Vout;

}

4 žingsnis: „Buck Converter“

Aš naudoju N kanalo „MOSFET“, kad galėčiau konvertuoti pinigus. paprastai žmonės pasirenka P kanalo „mosfet“, norėdami perjungti aukštą šoną, o jei jie pasirenka „N“kanalo „mosfet“tuo pačiu tikslu, nei vairuotojo IC, reikės arba įkrovos surišimo ckt.

bet aš pakeičiau buck konverterį ckt, kad būtų žemas perjungimas naudojant N kanalų „mosfet“. Aš naudoju N kanalą, nes tai yra nebrangios, didelės galios ir mažesnės galios išsklaidymo. šis projektas naudoja IRFz44n loginio lygio „mosfet“, todėl jį galima tiesiogiai vairuoti naudojant „arduino“PWM kaištį.

dėl didesnės apkrovos srovės reikėtų naudoti tranzistorių, kad būtų galima pritaikyti 10 V prie vartų, kad „mosfet“visiškai įsisotintų ir sumažintų energijos išsklaidymą, aš taip pat padariau tą patį.

kaip matote ckt aukščiau, aš įdėjau „Mosfet“į -ve įtampą, taigi naudodamas +12v nuo skydo kaip įžeminimą. ši konfigūracija leidžia naudoti „N-channel Mosfet“, skirtą „Buck“keitikliui su minimaliais komponentais.

bet jis taip pat turi tam tikrų trūkumų. Kadangi abiejų pusių įtampa yra atskirta, jūs neturite bendro atskaitos įžeminimo. Taigi įtampos matavimas yra labai sudėtingas.

Aš prijungiau „Arduino“prie Saulės įvesties gnybtų ir naudoju jo -ve liniją kaip pagrindą arduino. šiuo metu mes galime lengvai išmatuoti įvesties volateg, naudodami įtampos daliklį ckt pagal mūsų reikalavimą. bet negali taip lengvai išmatuoti išėjimo įtampos, nes neturime bendro pagrindo.

Dabar tai padaryti yra triukas. užuot matavęs įtampos išėjimo kondensatorių, aš išmatavau įtampą tarp dviejų linijų linijų. naudojant saulės -ve kaip pagrindą arduino ir išėjimą -ve kaip signalą/įtampą, kurią reikia išmatuoti. vertę, kurią gavote atlikdami šį matavimą, reikia atimti iš išmatuotos įėjimo įtampos ir gausite tikrąją išėjimo įtampą per išėjimo kondensatorių.

Vout_sense_temp = Vout_sense_temp*0,92+float (raw_vout)*volt_factor*0,08; // išmatuoti nepastovumą tarp įvesties ir išvesties gnd.

Vout_sense = Vin_sense-Vout_sense_temp-diode_volt; // pakeisti įtampos skirtumą tarp dviejų priežasčių į išėjimo įtampą..

Dabartiniams matavimams naudojau ACS-712 srovės jutimo modulius. Jie buvo maitinami „arduino“ir prijungti prie įvesties gnd.

vidiniai laikmačiai modifikuojami taip, kad D6 kaištyje įgautų 62,5 Khz PWM. kuris naudojamas vairuoti „mosfet“. išvesties blokavimo diodas bus reikalingas, kad būtų užtikrintas atvirkštinis nuotėkis ir apsauga nuo atvirkštinio poliškumo. Induktoriaus vertė priklauso nuo dažnio ir išėjimo srovės reikalavimų. galite naudoti internetinius prieinamus „Buck Converter“skaičiuotuvus arba naudoti 100uH 5A-10A apkrovą. niekada neviršykite didžiausios induktoriaus išėjimo srovės 80–90%.

5 žingsnis: paskutinis prisilietimas -

Image
Image

taip pat galite pridėti papildomų įkroviklio funkcijų. kaip ir mano, LCD taip pat rodo parametrus ir 2 jungiklius, kad įvestų iš vartotojo.

Netrukus atnaujinsiu galutinį kodą ir užpildysiu ckt diagramą.

6 žingsnis: ATNAUJINTI:- Faktinė grandinės schema, BOM ir kodas

Šviesų konkursas 2017 m
Šviesų konkursas 2017 m

ATNAUJINTI:-

Įkėliau kodą, bombą ir grandinę. jis šiek tiek skiriasi nuo mano, nes tai padaryti yra lengviau.

Rekomenduojamas: