Spisu treści:

Arduino - Ładowarka słoneczna PV MPPT: 6 kroków (ze zdjęciami)
Arduino - Ładowarka słoneczna PV MPPT: 6 kroków (ze zdjęciami)

Wideo: Arduino - Ładowarka słoneczna PV MPPT: 6 kroków (ze zdjęciami)

Wideo: Arduino - Ładowarka słoneczna PV MPPT: 6 kroków (ze zdjęciami)
Wideo: Jak zainstalować panele fotowoltaiczne. krok po kroku. lista zakupów 2024, Lipiec
Anonim
Image
Image
Przetwornica
Przetwornica

Na rynku dostępnych jest wiele kontrolerów ładowania. zwykłe tanie kontrolery ładowania nie są wydajne w wykorzystywaniu maksymalnej mocy z paneli słonecznych. Te, które są wydajne, są bardzo kosztowne.

Postanowiłem więc stworzyć własny kontroler ładowania, który jest wydajny i wystarczająco inteligentny, aby zrozumieć potrzeby baterii i warunki słoneczne. podejmuje odpowiednie działania, aby pobrać maksymalną dostępną moc z energii słonecznej i bardzo efektywnie umieścić ją w akumulatorze.

JEŚLI PODOBA CI SIĘ MÓJ WYSIŁEK, NIŻ PROSZĘ GŁOSUJ NA TĘ INSTRUKCJĘ.

Krok 1: Co to jest MPPT i dlaczego go potrzebujemy?

Nasze panele słoneczne są głupie i niezbyt inteligentne, aby zrozumieć stan baterii. Załóżmy, że mamy panel słoneczny 12 V/100 W, który da moc wyjściową między 18 V-21 V, w zależności od producenta, ale akumulatory są przystosowane do napięcia nominalnego 12 V, przy pełnym naładowaniu będą wynosić 13,6 V i przy pełnym napięciu 11,0 V rozładować się. teraz załóżmy, że nasze akumulatory są naładowane 13V, panele dają 18V, 5,5A przy 100% wydajności pracy (nie można mieć 100%, ale załóżmy). Zwykłe sterowniki mają regulator napięcia PWM ckt, który obniża napięcie do 13,6, ale nie zwiększa prądu. zapewnia ochronę przed nadmiernym ładowaniem i prądem upływowym do paneli tylko w nocy.

Mamy więc 13,6v * 5,5A = 74,8 wata.

Tracimy około 25 watów.

Aby napotkać ten problem, użyłem konwertera smps buck. tego rodzaju konwertery mają sprawność powyżej 90%.

Drugim problemem, który mamy, jest nieliniowa moc wyjściowa paneli słonecznych. muszą działać przy określonym napięciu, aby uzyskać maksymalną dostępną moc. Ich wydajność zmienia się w ciągu dnia.

Do rozwiązania tego problemu wykorzystywane są algorytmy MPPT. MPPT (maksymalne śledzenie punktu mocy), jak sama nazwa wskazuje, ten algorytm śledzi maksymalną dostępną moc z paneli i zmienia parametry wyjściowe, aby utrzymać stan.

Dzięki zastosowaniu MPPT nasze panele będą generować maksymalną dostępną moc, a konwerter buck będzie efektywnie wkładał ten ładunek do akumulatorów.

Krok 2: JAK DZIAŁA MPPT?

Nie będę omawiał tego szczegółowo. więc jeśli chcesz to zrozumieć, spójrz na ten link -Co to jest MPPT?

W tym projekcie śledziłem charakterystyki wejściowe V-I i wyjściowe V-I. mnożąc wejście V-I i wyjście V-I możemy uzyskać moc w watach.

powiedzmy, że mamy 17 V, 5 A, czyli 17x5 = 85 watów o każdej porze dnia. w tym samym czasie nasza moc wyjściowa to 13 V, 6A czyli 13x6 = 78 Watt.

Teraz MPPT zwiększy lub zmniejszy napięcie wyjściowe przez porównanie z poprzednią mocą wejściową/wyjściową.

jeśli poprzednia moc wejściowa była wysoka, a napięcie wyjściowe było niższe niż obecne, napięcie wyjściowe zostanie ponownie obniżone, aby powrócić do wysokiej mocy, a jeśli napięcie wyjściowe było wysokie, obecne napięcie zostanie zwiększone do poprzedniego poziomu. w ten sposób oscyluje wokół maksymalnego punktu mocy. te oscylacje są minimalizowane przez wydajne algorytmy MPPT.

Krok 3: Implementacja MPPT na Arduino

To jest mózg tej ładowarki. Poniżej znajduje się kod Arduino do regulacji wyjścia i implementacji MPPT w jednym bloku kodu.

// Iout = prąd wyjściowy

// Vout = napięcie wyjściowe

// Vin = napięcie wejściowe

// Pin = moc wejściowa, Pin_previous = ostatnia moc wejściowa

// Vout_last = ostatnie napięcie wyjściowe, Vout_sense = obecne napięcie wyjściowe

void regulowa(float Iout, float Vin, float Vout) { if((Vout>Vout_max) || (Iout>Iout_max) || ((Pin>Pin_poprzedni && Vout_sense<Vout_ostatni) || (PinVout_ostatni)))

{

jeśli(cykl_obowiązkowy>0)

{

cykl_pracy -=1;

}

analogWrite(buck_pin, duty_cycle);

}

inaczej, jeśli ((VoutVout_last) || (Liczba Pi

{

jeśli (cykl_pracy<240)

{ cykl_pracy+=1;

}

analogWrite(buck_pin, duty_cycle);

}

Przypnij_poprzedni = Przypnij;

Vin_ostat = Vin;

Vout_last = Vout;

}

Krok 4: Konwerter Buck

Użyłem N-kanałowy mosfet do wykonania konwertera buck. zwykle ludzie wybierają mosfet z kanałem P do przełączania wysokich stron, a jeśli wybiorą mosfet z kanałem N w tym samym celu, wymagany będzie układ scalony sterownika lub ckt przypinania rozruchu.

ale zmodyfikowałem CKT konwertera złotówki, aby mieć niskie przełączanie boczne za pomocą mosfet N-kanałowy. i, m przy użyciu kanału N, ponieważ są to niskie koszty, wysoka moc znamionowa i mniejsze rozpraszanie mocy. ten projekt wykorzystuje mosfet na poziomie logicznym IRFz44n, dzięki czemu może być bezpośrednio napędzany przez pin arduino PWM.

dla wyższego prądu obciążenia należy użyć tranzystora, aby zastosować 10V na bramce, aby całkowicie uzyskać mosfet w nasyceniu i zminimalizować rozpraszanie mocy, ja też zrobiłem to samo.

jak widać w CKT powyżej umieściłem mosfet na -ve napięcia, używając w ten sposób + 12V z panelu jako ziemi. ta konfiguracja pozwala mi na użycie N-kanałowy mosfet do konwertera buck z minimalną ilością komponentów.

ale ma też pewne wady. jak masz obie strony -ve napięcia oddzielone, nie masz już wspólnego uziemienia odniesienia. więc pomiar napięć jest bardzo skomplikowany.

Podłączyłem Arduino do zacisków wejściowych Solar i używając jego linii -ve jako uziemienia dla arduino. możemy łatwo zmierzyć volateg wejściowe w tym momencie, używając dzielnika napięcia ckt zgodnie z naszymi wymaganiami. ale nie możemy tak łatwo zmierzyć napięcia wyjściowego, ponieważ nie mamy wspólnego uziemienia.

Aby to zrobić, jest sztuczka. zamiast mierzyć napięcie na kondensatorze wyjściowym accros, zmierzyłem napięcie między dwiema liniami -ve. przy użyciu energii słonecznej-ve jako uziemienia dla arduino i wyjścia-ve jako mierzonego sygnału/napięcia. wartość, którą uzyskałeś z tym pomiarem, należy odjąć od zmierzonego napięcia wejściowego, a otrzymasz rzeczywiste napięcie wyjściowe na kondensatorze wyjściowym.

Vout_sense_temp=Vout_sense_temp*0.92+float(sur_vout)*volt_factor*0.08; //pomiar volatge poprzez wejście gnd i wyjście gnd.

Vout_sense=Vin_sense-Vout_sense_temp-diode_volt; //zmień różnicę napięć między dwoma masami na napięcie wyjściowe.

Do pomiarów prądu wykorzystałem moduły pomiaru prądu ACS-712. Zostały one zasilane przez arduino i podłączone do wejścia GND.

wewnętrzne zegary są modyfikowane, aby uzyskać 62,5 kHz PWM na pinie D6. który służy do sterowania mosfetem. dioda blokująca wyjściowa będzie wymagana do zapewnienia zabezpieczenia przed odwrotnym upływem i odwrotną polaryzacją, użyj do tego celu diody Schottky'ego o pożądanym prądzie znamionowym. Wartość cewki indukcyjnej zależy od wymagań częstotliwości i prądu wyjściowego. możesz skorzystać z dostępnych online kalkulatorów przeliczników buck lub użyć obciążenia 100uH 5A-10A. nigdy nie przekraczaj maksymalnego prądu wyjściowego cewki indukcyjnej o 80%-90%.

Krok 5: Ostateczna korekta -

Image
Image

możesz także dodać dodatkowe funkcje do swojej ładowarki. podobnie jak mój, wyświetlacz LCD wyświetla również parametry i 2 przełączniki do wprowadzania danych od użytkownika.

Wkrótce zaktualizuję ostateczny kod i uzupełnię diagram ckt.

Krok 6: AKTUALIZACJA:- Aktualny schemat obwodu, BOM i kod

Konkurs świateł 2017
Konkurs świateł 2017

AKTUALIZACJA:-

Wrzuciłem kod, bom i obwód. jest trochę inny niż mój, bo łatwiej go zrobić.

Zalecana: