Sisukord:

Arduino - PV MPPT päikeseenergia laadija: 6 sammu (piltidega)
Arduino - PV MPPT päikeseenergia laadija: 6 sammu (piltidega)

Video: Arduino - PV MPPT päikeseenergia laadija: 6 sammu (piltidega)

Video: Arduino - PV MPPT päikeseenergia laadija: 6 sammu (piltidega)
Video: How To Make MPPT Solar Charge Controller #shorts 2024, Juuli
Anonim
Image
Image
Bucki muundur
Bucki muundur

Turul on saadaval palju laadimiskontrollereid. tavalised odavad laadimiskontrollerid ei ole tõhusad päikesepaneelide maksimaalse võimsuse kasutamiseks. Need, mis on tõhusad, on väga kulukad.

Nii otsustasin teha oma laadimiskontrolleri, mis on tõhus ja piisavalt nutikas, et mõista aku vajadusi ja päikeseolusid. võtab vajalikke meetmeid, et ammutada päikeseenergiast maksimaalne saadaolev võimsus ja panna see väga tõhusalt aku sisse.

KUI SULLE MEELDIB PIIRANG, KUIDAS HÄÄLETADA NENDE JUHENDITE KOHTA.

Samm: mis on MPPT ja miks me seda vajame?

Meie päikesepaneelid on tummad ega ole nutikad, et mõista aku tingimusi. Oletame, et meil on 12v/100w päikesepaneel ja see annab väljundi vahemikus 18V-21V, sõltuvalt tootjatest, kuid patareid on hinnatud 12v nimipingele, täislaadimise korral on need 13,6v ja täis 11,0v tühjenemine. Oletame nüüd, et meie akud on 13v laadimisel, paneelid annavad 18v, 5,5A 100% töö efektiivsusega (100% pole võimalik, kuid oletame). tavalistel kontrolleritel on PWM pingeregulaator ckt, mis vähendab pinget 13,6 -ni, kuid voolu ei suurenda. see kaitseb ainult ülelaadimise ja paneelide lekkevoolu eest öösel.

Seega on meil 13,6v*5,5A = 74,8 vatti.

Me kaotame umbes 25 vatti.

Selle probleemi lahendamiseks olen kasutanud smps buck converterit. Selliste konverteerijate efektiivsus on üle 90%.

Teine probleem, mis meil on, on päikesepaneelide mittelineaarne väljund. maksimaalse saadaoleva võimsuse kogumiseks tuleb neid töötada teatud pingel. Nende toodang varieerub päeva jooksul.

Selle probleemi lahendamiseks kasutatakse MPPT algoritme. MPPT (maksimaalse võimsuspunkti jälgimine), nagu nimigi ütleb, jälgib see algoritm paneelide maksimaalset saadaolevat võimsust ja muudab väljundparameetreid, et seda seisundit säilitada.

Seega, kasutades MPPT -d, toodavad meie paneelid maksimaalset saadaolevat võimsust ja buck -muundur paneb selle laengu tõhusalt akudesse.

2. samm: KUIDAS MPPT TÖÖTAB?

Ma ei hakka seda üksikasjalikult arutama. nii et kui soovite sellest aru saada, vaadake seda linki -mis on MPPT?

Selles projektis olen jälginud sisendi V-I omadusi ja ka väljundit V-I. sisendit V-I ja väljundit V-I korrutades saame võimsuse vattides.

Oletame, et meil on 17 V, 5 A, st 17x5 = 85 vatti igal kellaajal. samal ajal on meie väljund 13 V, 6A, st 13x6 = 78 vatti.

Nüüd suurendab või vähendab MPPT väljundpinget, võrreldes eelmise sisend-/väljundvõimsusega.

kui eelmine sisendvõimsus oli kõrge ja väljundpinge oli praegusest madalam, siis on väljundpinge suure võimsuse taastamiseks uuesti madalam ja kui väljundpinge oli kõrge, suurendatakse praegust pinget eelmisele tasemele. seega võngub see maksimaalse võimsuspunkti ümber. seda võnkumist minimeerivad tõhusad MPPT algoritmid.

Samm: MPPT rakendamine Arduinole

See on selle laadija aju. Allpool on Arduino kood väljundi reguleerimiseks ja MPPT rakendamiseks ühes koodiplokis.

// Iout = väljundvool

// Vout = väljundpinge

// Vin = sisendpinge

// Pin = sisendvõimsus, Pin_previous = viimane sisendvõimsus

// Vout_last = viimane väljundpinge, Vout_sense = praegune väljundpinge

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

{

if (duty_cycle> 0)

{

töötsükkel -= 1;

}

analogWrite (buck_pin, duty_cycle);

}

muidu kui ((VoutVout_last) || (Pi

{

kui (tollimaksu tsükkel <240)

{kohustustsükkel+= 1;

}

analogWrite (buck_pin, duty_cycle);

}

Pin_previous = Pin;

Vin_last = Vin;

Vout_last = Vout;

}

Samm 4: Buck Converter

Olen buck-muunduri valmistamiseks kasutanud N-kanaliga mosfetti. tavaliselt valivad inimesed kõrgel küljel ümberlülitamiseks P-kanaliga mosfeti ja kui nad valivad N-kanaliga mosfeti samal eesmärgil kui draiveri IC, siis on nõutav käivitusrihm.

kuid ma muutsin buck-muunduri ckt-i nii, et sellel oleks madala külje lülitus, kasutades N-kanaliga mosfet. Ma kasutan N-kanalit, kuna need on odavad, suure võimsusega ja väiksema võimsusega. see projekt kasutab IRFz44n loogikataseme mosfetit, nii et seda saab otse juhtida arduino PWM tihvtiga.

suurema koormusvoolu korral tuleks väravas 10 V rakendamiseks kasutada transistorit, et saada mosfet täielikult küllastuda ja minimeerida võimsuse hajumist, olen ka sama teinud.

nagu näete ülaltoodud ckt -is, olen pannud mosfeti pingele -ve, kasutades maandusena paneelilt +12v. see konfiguratsioon võimaldab mul kasutada minimaalse komponendiga buck-muunduri jaoks N-kanaliga mosfetti.

kuid sellel on ka mõned puudused. kuna teil on mõlemad pooled -pinge eraldatud, pole teil enam ühist võrdlusmaandust. seega on pingete mõõtmine väga keeruline.

Olen ühendanud Arduino päikeseenergia sisendklemmidega ja kasutanud selle -ve liini arduino maanduseks. saame sisendvolaatrit sel hetkel hõlpsalt mõõta, kasutades meie nõude kohaselt pingejagurit ckt. kuid ei suuda väljundpinget nii lihtsalt mõõta, kuna meil pole ühist maad.

Nüüd on selleks trikk. selle asemel, et mõõta pingeväljundi väljundkondensaatorit, olen mõõtnud pinget kahevereliste liinide vahel. kasutades arduino maandusena päikese -ve ja mõõdetava signaali/pingena väljundit -ve. Selle mõõtmisega saadud väärtus tuleks lahutada mõõdetud sisendpingest ja saate tegeliku väljundpinge kogu väljundkondensaatori kaudu.

Vout_sense_temp = Vout_sense_temp*0,92+float (raw_vout)*volt_faktor*0,08; // mõõta volatiilsust sisendi gnd ja väljundi gnd vahel.

Vout_sense = Vin_sense-Vout_sense_temp-dioode_volt; // muuda pinge erinevus kahe aluse vahel väljundpingeks..

Voolumõõtmiste jaoks olen kasutanud ACS-712 voolutundmooduleid. Neid toidab arduino ja need on ühendatud sisend -gnd -ga.

sisemisi taimerid on modifitseeritud, et saada pingel D6 62,5 kHz PWM. mida kasutatakse mosfeti juhtimiseks. vastupidise lekke ja vastupidise polaarsuse tagamiseks on vaja väljundblokeerivat dioodi, kasutades selleks Schottky dioodi soovitud voolutugevusega. Induktori väärtus sõltub sagedusest ja väljundvoolu nõuetest. saate kasutada veebis saadaolevaid buck converter kalkulaatoreid või kasutada 100uH 5A-10A koormust. Ärge kunagi ületage induktiivpooli maksimaalset väljundvoolu 80%-90%.

5. samm: viimane puudutus -

Image
Image

saate ka laadijale lisafunktsioone lisada. nagu minul, on ka LCD -ekraanil parameetrid ja 2 lülitit kasutaja sisendi saamiseks.

Värskendan peagi lõplikku koodi ja lõpetan ckt -diagrammi.

6. samm: UUENDAMINE:- tegelik vooluahela skeem, BOM ja kood

Tulede võistlus 2017
Tulede võistlus 2017

UPDATE:-

Laadisin üles koodi, pommi ja vooluringi. see erineb pisut minu omast, sest seda on lihtsam valmistada.

Soovitan: