Tartalomjegyzék:

Arduino - PV MPPT napelemes töltő: 6 lépés (képekkel)
Arduino - PV MPPT napelemes töltő: 6 lépés (képekkel)

Videó: Arduino - PV MPPT napelemes töltő: 6 lépés (képekkel)

Videó: Arduino - PV MPPT napelemes töltő: 6 lépés (képekkel)
Videó: Meleg padlástér - rezsicsökkentés. VW Golf hűtő egészen jól melegíti a vizet némi barkácsolás után.. 2024, November
Anonim
Image
Image
Buck konverter
Buck konverter

A piacon sok töltésszabályozó áll rendelkezésre. A hagyományos olcsó töltésvezérlők nem hatékonyak a napelemek maximális teljesítményének kihasználásához. A hatékonyak nagyon költségesek.

Ezért úgy döntöttem, hogy elkészítem a saját töltésvezérlőmet, amely hatékony és elég okos ahhoz, hogy megértse az akkumulátor igényeit és a napfényt. megfelelő lépéseket tesz, hogy a lehető legtöbb energiát nyerje ki a napelemből, és nagyon hatékonyan tegye azt az akkumulátorba.

HA Tetszik az erőfeszítésem, akkor szavazzon erről az utasításról.

1. lépés: Mi az MPPT és miért van szükségünk rá?

A napelemek buták és nem okosak az akkumulátor állapotának megértéséhez. Tegyük fel, hogy van egy 12v/100 wattos napelemünk, és a 18V-21V közötti kimeneti teljesítmény a gyártótól függ, de az akkumulátorok 12V névleges feszültségre vannak méretezve, teljes töltés esetén 13,6V és teljes mértékben 11,0V kisülés. tegyük fel, hogy az akkumulátoraink 13 V -os töltésen vannak, a panelek 18 V -ot, 5,5 A -t adnak 100% -os hatékonysággal (nem lehetséges, hogy 100% -os legyen, de tegyük fel). A normál vezérlők PWM feszültségszabályozó ckt -vel rendelkeznek, amely 13,6 -ra csökkenti a feszültséget, de nem növeli az áramot. csak védelmet nyújt a túltöltés és a panelek szivárgása ellen éjszaka.

Tehát 13,6v*5,5A = 74,8 wattot fogyasztunk.

Körülbelül 25 wattot veszítünk.

A probléma megoldásához smps buck converter -t használtam. Az ilyen típusú átalakítók hatékonysága meghaladja a 90% -ot.

A második problémánk a napelemek nemlineáris teljesítménye. bizonyos feszültségen kell működtetni a maximális rendelkezésre álló teljesítmény elérése érdekében. Teljesítményük a nap folyamán változik.

A probléma megoldásához MPPT algoritmusokat használnak. Az MPPT (Maximum Power Point Tracking), ahogy a neve is sugallja, ez az algoritmus követi a panelek maximális rendelkezésre álló teljesítményét, és változtatja a kimeneti paramétereket az állapot fenntartása érdekében.

Tehát az MPPT használatával a paneleink a rendelkezésre álló maximális teljesítményt fogják előállítani, és a Buck konverter ezt a töltést hatékonyan helyezi az akkumulátorokba.

2. lépés: HOGYAN MŰKÖDIK AZ MPPT?

Ezt nem részletezem részletesen. Tehát ha meg akarod érteni, nézd meg ezt a linket -Mi az MPPT?

Ebben a projektben nyomon követtem a bemeneti V-I jellemzőket és a kimeneti V-I-t is. a V-I bemenet és a V-I kimenet megszorozásával wattban kaphatjuk meg a teljesítményt.

Tegyük fel, hogy 17 V, 5 A, azaz 17x5 = 85 wattunk van a nap bármely szakában. ugyanakkor a kimenetünk 13 V, 6A azaz 13x6 = 78 Watt.

Most az MPPT növeli vagy csökkenti a kimeneti feszültséget a korábbi bemeneti/kimeneti teljesítményhez képest.

ha a korábbi bemeneti teljesítmény nagy volt, és a kimeneti feszültség alacsonyabb volt, mint a jelenlegi, akkor a kimeneti feszültség ismét alacsonyabb lesz, hogy visszatérjen a nagy teljesítményhez, és ha a kimeneti feszültség magas volt, akkor a jelenlegi feszültség az előző szintre emelkedik. így folyamatosan a maximális teljesítménypont körül oszcillál. ezt az oszcillációt a hatékony MPPT algoritmusok minimalizálják.

3. lépés: Az MPPT implementálása Arduino -n

Ez a töltő agya. Az alábbiakban az Arduino kód található, amely egyetlen kódblokkban szabályozza a kimenetet és az MPPT megvalósítását.

// Iout = kimeneti áram

// Vout = kimeneti feszültség

// Vin = bemeneti feszültség

// Pin = bemeneti teljesítmény, Pin_previous = utolsó bemeneti teljesítmény

// Vout_last = utolsó kimeneti feszültség, Vout_sense = jelenlegi kimeneti feszültség

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)

{

szolgálati_ciklus -= 1;

}

analóg Ír (buck_pin, duty_cycle);

}

különben ha ((VoutVout_last) || (Pi

{

if (duty_cycle <240)

{szolgálati_ciklus+= 1;

}

analóg Ír (buck_pin, duty_cycle);

}

Pin_previous = Tű;

Vin_last = Vin;

Vout_last = Vout;

}

4. lépés: Buck Converter

N-csatornás mosfet-et használtam a bak konverter elkészítéséhez. általában az emberek a P-csatornás mosfetet választják a magas oldali kapcsoláshoz, és ha az N-csatornás mosfetet választják ugyanarra a célra, mint a meghajtó IC, vagy a rendszerindító pánt.

de módosítottam a buck converter ckt-ot, hogy legyen egy alacsony oldali kapcsolása N-csatornás mosfet használatával. én N-csatornát használok, mert ezek olcsók, nagy teljesítményűek és alacsonyabb az energiaveszteség. ez a projekt IRFz44n logikai szintű mosfetet használ, így közvetlenül meghajtható egy arduino PWM tűvel.

nagyobb terhelési áram esetén tranzisztorral kell 10V -ot alkalmazni a kapun, hogy a mosfet teljesen telítődjön, és minimálisra csökkentse a teljesítményveszteséget, én is ezt tettem.

ahogy a fenti ckt -ben is látható, a mosfet -ve feszültségre helyeztem, így +12V -ot használtam a panelről földként. ez a konfiguráció lehetővé teszi, hogy minimális komponensekkel N-csatornás mosfetet használjak a Buck konverterhez.

de van néhány hátránya is. mivel mindkét oldalán a feszültség szét van választva, nincs többé közös referenciaföldje. így a feszültségek mérése nagyon trükkös.

Csatlakoztattam az Arduino -t a Solar bemeneti terminálokhoz, és a -ve vonalát használtam az arduino földeléséhez. ezen a ponton könnyen meg tudjuk mérni a bemeneti volatúrát, ha szükségünk szerint feszültségosztót használunk ckt. de nem tudjuk olyan könnyen mérni a kimeneti feszültséget, mivel nincs közös földünk.

Ehhez most van egy trükk. Ahelyett, hogy mérném a feszültséget, a kimeneti kondenzátort, megmértem a kétpólusú vezetékek közötti feszültséget. a solar -ve -t használva földként az arduino számára, és a output -ve -t mérni kívánt jel/feszültségként. Ezzel a méréssel kapott értéket le kell vonni a mért bemeneti feszültségből, és megkapja a valódi kimeneti feszültséget a kimeneti kondenzátoron.

Vout_sense_temp = Vout_sense_temp*0,92+float (raw_vout)*volt_factor*0,08; // a bemeneti és kimeneti gnd közötti volatilitás mérése.

Vout_sense = Vin_sense-Vout_sense_temp-diode_volt; // feszültségkülönbség módosítása két alap között kimeneti feszültségre.

Az áramméréshez ACS-712 áramérzékelő modulokat használtam. Ezeket az arduino táplálja, és a bemeneti gnd -hez vannak csatlakoztatva.

a belső időzítőket úgy módosítják, hogy 62,5 Khz PWM nyerést érjenek el a D6 érintkezőn. amelyet a mosfet hajtására használnak. egy kimeneti blokkoló dióda szükséges a fordított szivárgás és a fordított polaritás elleni védelemhez. Ehhez használja a kívánt áramerősségű schottky diódát. Az induktor értéke függ a frekvenciától és a kimeneti áram követelményeitől. használhatja az online elérhető bak konverter számológépeket, vagy 100uH 5A-10A terhelést. soha ne lépje túl az induktor maximális kimeneti áramát 80-90%-kal.

5. lépés: Utolsó javítás -

Image
Image

további funkciókat is hozzáadhat a töltőhöz. az enyémhez hasonlóan az LCD -n is megjelenítik a paramétereket és 2 kapcsolót, hogy bevigye a felhasználót.

Hamarosan frissítem a végső kódot és befejezem a ckt diagramot.

6. lépés: FRISSÍTÉS:- Tényleges áramköri diagram, BOM és kód

Fényverseny 2017
Fényverseny 2017

FRISSÍTÉS:-

Feltöltöttem a kódot, a bombát és az áramkört. kicsit más, mint az enyém, mert ezt könnyebb elkészíteni.

Ajánlott: