Innehållsförteckning:

Arduino - PV MPPT Solar Charger: 6 steg (med bilder)
Arduino - PV MPPT Solar Charger: 6 steg (med bilder)

Video: Arduino - PV MPPT Solar Charger: 6 steg (med bilder)

Video: Arduino - PV MPPT Solar Charger: 6 steg (med bilder)
Video: DIY MPPT Solar Charge Controller using Arduino | 24V Solar Panel, 12V Battery, 50 Watt 2024, November
Anonim
Image
Image
Buck -omvandlare
Buck -omvandlare

Det finns många laddningsregulatorer tillgängliga på marknaden. vanliga billiga laddningsregulatorer är inte effektiva att använda maximal effekt från solpaneler. De som är effektiva är mycket dyra.

Så jag bestämde mig för att göra min egen laddningskontroller som är effektiv och smart nog för att förstå batteriets behov och solförhållanden. det krävs lämpliga åtgärder för att dra maximal tillgänglig effekt från solenergi och sätta in den i batteriet mycket effektivt.

OM DU GILLAR MIN ANSTÄLLNING ÄN VÄNLIGEN RÖSTA DENNA INSTRUKTABLER.

Steg 1: Vad är MPPT och varför behöver vi det?

Våra solpaneler är dumma och inte smarta att förstå batteriets förhållanden. Antag att vi har en 12v/100 watt solpanel och den ger en effekt mellan 18V-21V beroende på tillverkare, men batterierna är nominella för 12v nominell spänning, vid full laddningsförhållanden kommer de att vara 13.6v och kommer att vara 11.0v vid full ansvarsfrihet. Låt oss nu anta att våra batterier laddas med 13V, paneler ger 18V, 5,5A vid 100% arbetseffektivitet (inte möjligt att ha 100% men kan anta). vanliga regulatorer har en PWM -spänningsregulator ckt som sänker spänningen till 13,6, men ingen förstärkning i strömmen. det ger bara skydd mot överladdning och läckström till paneler under nätter.

Så vi har 13,6v*5,5A = 74,8 watt.

Vi tappar ca 25 watt.

För att stöta på det här problemet har jag använt smps buck converter. denna typ av omvandlare har över 90% effektivitet.

Det andra problemet som vi har är olinjär produktion av solpaneler. de måste drivas med viss spänning för att få maximal tillgänglig effekt. Deras produktion varierar under dagen.

För att lösa detta problem används MPPT -algoritmer. MPPT (Maximum Power Point Tracking) som namnet antyder spårar den här algoritmen den maximala tillgängliga effekten från paneler och varierar utmatningsparametrarna för att upprätthålla tillståndet.

Så genom att använda MPPT kommer våra paneler att generera maximal tillgänglig effekt och buck -omvandlare kommer att sätta denna laddning effektivt i batterier.

Steg 2: HUR FUNGERAR MPPT?

Jag kommer inte att diskutera detta i detalj. så om du vill förstå det, ta en titt på den här länken -Vad är MPPT?

I detta projekt har jag spårat ingång V-I-egenskaper och utgång V-I också. genom att multiplicera ingången V-I och utgången V-I kan vi ha effekten i watt.

låt oss säga att vi har 17 V, 5 A dvs 17x5 = 85 watt när som helst på dygnet. samtidigt är vår effekt 13 V, 6A dvs 13x6 = 78 Watt.

Nu kommer MPPT att öka eller minska utspänningen till genom att jämföra med tidigare ingång/uteffekt.

om tidigare ingångseffekt var hög och utspänningen var lägre än nuvarande kommer utspänningen att vara lägre igen för att komma tillbaka till högeffekten och om utspänningen var hög kommer nuvarande spänning att ökas till föregående nivå. sålunda fortsätter den att pendla runt maximal effektpunkt. dessa svängningar minimeras av effektiva MPPT -algoritmer.

Steg 3: Implementering av MPPT på Arduino

Detta är hjärnan i den här laddaren. Nedan finns Arduino -koden för att reglera utmatningen och implementera MPPT i ett enda kodblock.

// Iout = utgångsström

// Vout = utspänning

// Vin = ingångsspänning

// Pin = ingångseffekt, Pin_previous = senaste ingångseffekt

// Vout_last = senaste utspänning, Vout_sense = nuvarande utspänning

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

{

om (duty_cycle> 0)

{

duty_cycle -= 1;

}

analogWrite (buck_pin, duty_cycle);

}

annat om ((VoutVout_last) || (Pi

{

om (duty_cycle <240)

{duty_cycle+= 1;

}

analogWrite (buck_pin, duty_cycle);

}

Pin_previous = Pin;

Vin_last = Vin;

Vout_last = Vout;

}

Steg 4: Buck -omvandlare

Jag har använt N-channel mosfet för att göra buck-omvandlaren. vanligtvis väljer människor P-kanal mosfet för högsidesväxling och om de väljer N-kanal mosfet för samma ändamål än en förar-IC kommer att krävas eller boot strapping ckt.

men jag modifierade buck converter ckt för att ha en lågsidesväxling med N-channel mosfet. i, m använder N-kanal eftersom dessa är låga kostnader, höga effektvärden och lägre effektförlust. detta projekt använder IRFz44n logic level mosfet, så det kan drivas direkt av en arduino PWM -pin.

för högre belastningsström bör man använda en transistor för att applicera 10V vid gate för att få mosfeten helt att mättas och minimera effektförlusten, jag har också gjort detsamma.

som du kan se på ckt ovan har jag placerat mosfet på -ve spänning och använder därmed +12v från panelen som jord. denna konfiguration gör att jag kan använda en N-kanal mosfet för buck-omvandlare med minimikomponenter.

men det har också några nackdelar. eftersom du har båda sidorna -spänning åtskilda har du inte en gemensam referensgrund längre. så mätning av spänningar är mycket knepigt.

Jag har anslutit Arduino vid solingångar och använder dess -ve -linje som jord för arduino. vi kan enkelt mäta ingångsvolatgen vid denna tidpunkt genom att använda en spänningsdelare ckt enligt våra krav. men kan inte mäta utspänningen så lätt eftersom vi inte har en gemensam grund.

Nu för att göra detta finns det ett trick. i stället för att mäta spänningen från utgångskondensatorn har jag mätt spänningen mellan tvåvägsledningar. med sol -ve som jord för arduino och utgång -ve som signal/spänning som ska mätas. värde som du har fått med denna mätning ska subtraheras från ingångsspänningen som mäts och du får den verkliga utspänningen över utkondensatorn.

Vout_sense_temp = Vout_sense_temp*0,92+float (raw_vout)*volt_factor*0,08; // mäta volatge över input gnd och output gnd.

Vout_sense = Vin_sense-Vout_sense_temp-diode_volt; // ändra spänningsskillnaden mellan två grunder till utspänning..

För strömmätningar har jag använt ACS-712 strömavkänningsmoduler. De har drivits av arduino och anslutits till ingångs -gnd.

interna tidtagare modifieras för att få 62,5 kHz PWM vid stift D6. som används för att köra mosfeten. en utgående blockeringsdiod kommer att krävas för att ge omvänt läckage och omvänd polaritetsskydd använd schottky -diod med önskad strömstyrka för detta ändamål. Induktorns värde beror på kraven på frekvens och utström. du kan använda tillgängliga online-omvandlare-räknare eller använda 100uH 5A-10A-belastning. överstiga aldrig induktorns maximala utström med 80%-90%.

Steg 5: Final Touch Up -

Image
Image

Du kan också lägga till ytterligare funktioner i din laddare. som min har LCD också visa parametrar och 2 omkopplare för att ta input från användaren.

Jag uppdaterar den slutliga koden och slutför ckt -diagram mycket snart.

Steg 6: UPDATE:- Faktiskt kretsdiagram, BOM & kod

Lights Contest 2017
Lights Contest 2017

UPPDATERING:-

Jag har laddat upp koden, bom och krets. det är något annorlunda än mitt, eftersom det är lättare att göra den här.

Rekommenderad: