Բովանդակություն:

Arduino - PV MPPT արևային լիցքավորիչ. 6 քայլ (նկարներով)
Arduino - PV MPPT արևային լիցքավորիչ. 6 քայլ (նկարներով)

Video: Arduino - PV MPPT արևային լիցքավորիչ. 6 քայլ (նկարներով)

Video: Arduino - PV MPPT արևային լիցքավորիչ. 6 քայլ (նկարներով)
Video: How To Make MPPT Solar Charge Controller #shorts 2024, Նոյեմբեր
Anonim
Image
Image
Buck փոխարկիչ
Buck փոխարկիչ

Շուկայում առկա են բազմաթիվ լիցքավորման վերահսկիչներ: սովորական էժան լիցքավորման կարգավորիչները արդյունավետ չեն արևային վահանակներից առավելագույն էներգիա օգտագործելու համար: Նրանք, որոնք արդյունավետ են, շատ ծախսատար են:

Այսպիսով, ես որոշեցի ինքս սարքել լիցքավորման վերահսկիչ, որն արդյունավետ է և բավական խելացի `մարտկոցի կարիքներն ու արևային պայմանները հասկանալու համար: անհրաժեշտ է համապատասխան գործողություններ ձեռնարկել արևից առավելագույն հասանելի էներգիա վերցնելու և մարտկոցի ներսում շատ արդյունավետ տեղադրելու համար:

ԵԹԵ ՍԻՐՈՄ ԵՍ ԻՄ EԱՆԱՓՈԽՈԹՅՈՆԸ, խնդրում եմ քվեարկեք այս հրահանգներին:

Քայլ 1. Ի՞նչ է MPPT- ն և ինչու է դա մեզ անհրաժեշտ:

Մեր արևային վահանակները բութ են և խելացի չեն մարտկոցի պայմանները հասկանալու համար: Ենթադրենք, մենք ունենք 12 վ/100 վտ հզորությամբ արևային վահանակ, և այն արտադրություն կտա 18V-21V միջակայքում, սակայն մարտկոցները գնահատվում են 12 վ անվանական լարման համար, լրիվ լիցքավորման պայմաններում դրանք կլինեն 13,6 վ և լինելու են 11,0 վ: լիցքաթափում. Հիմա ենթադրենք, որ մեր մարտկոցները լիցքավորվում են 13 վ լարման վրա, վահանակները տալիս են 18 վ, 5.5 Ա ՝ 100% աշխատունակությամբ (հնարավոր չէ ունենալ 100%, բայց ենթադրենք): Սովորական վերահսկիչներն ունեն PWM լարման կարգավորիչ ckt, որն իջեցնում է լարումը մինչև 13.6, բայց ընթացիկ շահույթ չունի: այն պաշտպանում է միայն գիշերային ժամերին վահանակների լիցքավորման և հոսանքի արտահոսքից:

Այսպիսով, մենք ունենք 13.6v*5.5A = 74.8 վտ:

Մենք կորցնում ենք մոտ 25 վտ:

Այս խնդրին հանդիպելու համար ես օգտագործել եմ smps buck փոխարկիչ: այս տեսակ փոխակերպվածներն ունեն 90% -ից բարձր արդյունավետություն:

Երկրորդ խնդիրը, որ մենք ունենք, արևային վահանակների ոչ գծային արտադրությունն է: դրանք պետք է գործեն որոշակի լարման տակ `առավելագույն հասանելի հզորությունը քաղելու համար: Նրանց արտադրանքը տատանվում է օրվա ընթացքում:

Այս խնդիրը լուծելու համար օգտագործվում են MPPT ալգորիթմներ: MPPT (Max Power Power Tracking), ինչպես անունն է հուշում, այս ալգորիթմը հետևում է վահանակներից առկա առավելագույն հասանելի հզորությանը և փոփոխում է ելքային պարամետրերը `վիճակը պահպանելու համար:

Այսպիսով, օգտագործելով 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 = ներկա ելքային լարումը

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

{

եթե (տուրքի_ ցիկլ> 0)

{

տուրքի_հեծանիվ -= 1;

}

analogWrite (buck_pin, duty_cycle);

}

հակառակ դեպքում ((VoutVout_last) || (Պի

{

եթե (տուրքի_շրջան <240)

{տուրքի_հեծանիվ+= 1;

}

analogWrite (buck_pin, duty_cycle);

}

Pin_previous = կապում;

Vin_last = Վին;

Vout_last = Vout;

}

Քայլ 4: Buck փոխարկիչ

Ես օգտագործել եմ N-channel mosfet- ը ՝ բաք փոխարկիչ պատրաստելու համար: սովորաբար մարդիկ ընտրում են P-channel mosfet բարձր կողքով անցնելու համար, և եթե նրանք ընտրում են N-channel mosfet նույն նպատակի համար, քան վարորդի IC- ն կպահանջվի կամ բեռնախցիկի ամրացումը կպահանջվի:

բայց ես փոխեցի buck փոխարկիչ ckt- ը, որպեսզի ունենա ցածր կողային անջատում ՝ օգտագործելով N-channel mosfet: Ես օգտագործում եմ N- ալիքը, քանի որ դրանք ցածր գին են, բարձր հզորության գնահատականներ և ավելի ցածր էներգիայի սպառում: այս նախագիծը օգտագործում է IRFz44n տրամաբանական մակարդակի mosfet, այնպես որ այն կարող է ուղղակիորեն վարվել arduino PWM քորոցով:

Ավելի մեծ բեռի հոսանքի համար պետք է օգտագործել տրանզիստոր `դարպասի մոտ 10V կիրառելու համար, որպեսզի mosfet- ը ամբողջությամբ հագեցած լինի և նվազագույնի հասցվի էներգիայի սպառումը, ես նույնպես նույնն եմ արել:

Ինչպես տեսնում եք վերևում գտնվող ckt- ում, ես mosfet- ը տեղադրել եմ -ve լարման վրա, դրանով իսկ օգտագործելով վահանակից +12v որպես հիմք: այս կոնֆիգուրացիան թույլ է տալիս ինձ օգտագործել N-channel mosfet- ը նվազագույն բաղադրիչներով Buck փոխարկիչի համար:

բայց այն նաև ունի որոշ թերություններ: քանի որ դուք ունեք երկու կողմեր `անջատված լարման, այլևս ընդհանուր տեղեկատու հիմք չունեք: ուստի լարման չափումը շատ բարդ է:

Ես միացրել եմ Arduino- ն արևային մուտքի տերմինալներին և դրա -ve գիծը օգտագործել որպես arduino- ի հիմք: մենք կարող ենք հեշտությամբ չափել մուտքային volateg- ն այս պահին ՝ օգտագործելով լարման բաժանարար ckt, ըստ մեր պահանջի: բայց չի կարող այնքան հեշտ չափել ելքային լարումը, քանի որ մենք չունենք ընդհանուր հիմք:

Հիմա դա անելու համար հնարք կա: Լարման ելքային կոնդենսատորը չափելու փոխարեն ես չափել եմ լարումը երկու -վեց գծերի միջև: արեւային -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 Khz PWM կապիչ D6- ում: որն օգտագործվում է մոսֆետ քշելու համար: կպահանջվի ելքային արգելափակման դիոդ `հակառակ արտահոսքի և հակաբևեռայնության պաշտպանության ապահովման համար` այս նպատակով ցանկալի հոսանքի գնահատման schottky դիոդ օգտագործելու համար: Ինդուկտորի արժեքը կախված է հաճախականության և ելքային հոսանքի պահանջներից: կարող եք օգտագործել առցանց հասանելի փոխարկիչ հաշվիչներ կամ օգտագործել 100uH 5A-10A բեռ: երբեք մի գերազանցեք ինդուկտորի ելքային հոսանքը 80%-90%-ով:

Քայլ 5: Վերջնական շոշափում -

Image
Image

կարող եք նաև լրացուցիչ հնարավորություններ ավելացնել ձեր լիցքավորիչին: իմի պես, LCD- ն նույնպես ցուցադրում է պարամետրերը և 2 անջատիչ `օգտվողից մուտք գործելու համար:

Շատ շուտով կթարմացնեմ վերջնական ծածկագիրը և կլրացնեմ ckt դիագրամը:

Քայլ 6. ԹԱՐՄԱՈՄ.- Իրական սխեմայի դիագրամ, BOM և ծածկագիր

Լույսերի մրցույթ 2017 թ
Լույսերի մրցույթ 2017 թ

ԹԱՐՄԱՆԵԼ:-

Ես վերբեռնել եմ ծածկագիրը, բոմը և շրջանը: այն մի փոքր տարբերվում է իմից, քանի որ ավելի հեշտ է պատրաստել այն:

Խորհուրդ ենք տալիս: