Klub SP2PUT

Akademicki Klub Krótkofalowców UTP w Bydgoszczy

16-Mar-2014

Prosty regulator solarnySimple charge controller for small photovoltaic systems

Na wiosnę pora zająć się czymś słonecznym, tym razem wyjątkowo bez złącza USB 😀 Projekt prostego regulatora solarnego do małych instalacji 12V, prądzie do 4A, z wbudowanym woltomierzem.

Spring is comming so it is time to do something sunny, this time without USB. 😀 I made a simple shunt solar charge controller for small 12V photovoltaic systems, with a current handling up to 4A and a built-in voltmeter.

Jak działa panel słoneczny?

Teoria jest dosyć złożona, ale żeby zrobić własny system fotowoltaiczny wystarczy wiedzieć jak to wygląda od strony zacisków panelu. Ogniwo fotowoltaiczne to po prostu najzwyklejsza dioda (najczęściej krzemowa) wykonana tak, żeby złącze miało największą możliwą powierzchnię. Po oświetleniu złącza na zaciskach pojawia się napięcie stałe, które mocno zależy od intensywności naświetlenia i pobieranego prądu. Jedno ogniwo daje dosyć niskie napięcie i małą wydajność prądową, więc łaczy się je szeregowo-równolegle w panele fotowoltaiczne i montuje na szklanym podłożu w aluminiowe ramki. Panele różnią się między sobą głównie rozmiarem i napięciem roboczym.

Przykładowe dane panelu 30W ze strony jednego z rozlicznych sprzedawców:
panel_30W

Istotne parametry:

  1. Masa i wymiary – to raczej oczywiste (ciężko nieść panel 1×1,5m na plecach gdzieś w teren)
  2. Voc (open circuit voltage) – napięcie przy otwartym obwodzie. Jest to najwyższe możliwe napięcie, jakie panel jest w stanie wygenerować. Po dołączeniu obciążenia momentalnie spada, ale gdy np. odłaczy się akumulator od instalacji (niebezpieczna sytuacji), to właśnie to napięcie pojawi się na regulatorze, więc trzeba dobrać kondensatory i inne elementy pod to napięcie. Jest ono również istotne do doboru napięcia instalacji i akumulatorów, z panelu Voc=21,2V nie da się naładować instalacji 24V.
  3. Vmp (maximum power voltage) – napięcie, przy którym panel oddaje maksymalną moc
  4. Isc (short circuit current) – prąd zwarcia. Największy możliwy prąd jaki panel jest w stanie oddać od obciążenia zero Ohm. Zwarcie panelu jest jak najbardziej normalną sytuacją i nie robi mu żadnych szkód (bardzo wiele regulatorów z resztą tak działa – o tym dalej w tekście)
  5. Imp (maximum power current) – prąd, przy którym panel oddaje maksymalną moc
  6. Pmax (maximum power) – maksymalna moc, iloczyn Imp*Vmp . Panel oddaje „marketingową” moc tylko przy tym konkretnym napięciu i prądzie. W każdym innym przypadku moc jest mniejsza. Ciężkie do osiągnięcia w praktyce.

Oświetlone ogniwo generuje energię, natomiast zacienione (albo częściowo zacienione) zamienia się w rezystor, stąd wystarczy zacienić tylko kilka procent powierzchni całego panelu, żeby moc spadła o ponad połowę. Panel musi być oświetlony w 100%.

System fotowoltaiczny

Minimalny system musi się składać z panelu słonecznego oraz jakiegoś obciążenia. Takie „gołe” systemy wykorzystuje się głównie do tłoczenia wody i nawadniania pól w krajach z kiepską siecią energetyczną. Magazynowanie energii w ciężkich akumulatorach jest w takiej sytuacji całkowicie bez sensu. W praktyce krótkofalowca potrzebny będzie jednak akumulator, żeby podtrzymać zasilanie radia (szczególnie przy dużym prądzie podczas nadawania), jak jakaś chmura akurat będzie przelatywać, albo ktoś zasłoni panel. Najpopularniejszy oczywiście jest akumulator żelowy 12V. Akumulator nie może przyjmować, ani oddawać energii w nieskończoność, stąd poza radiem (obciążeniem), panelem i akumulatorem będzie potrzebny jeszcze regulator (zwany też kontrolerem ładowania).

Krótkie przypomnienie jak powinien pracować akumulator żelowy kwasowo-ołowiowy 12V :

  1. 10,5V – napięcie poniżej którego nigdy nie można rozładować akumulatora (nieodwracalnie się uszkodzi)
  2. 12,8V – napięcie przy 100% naładowania
  3. 13,8V – „float voltage” – nazwijmy to….. „napięcie podtrzymania” – ładowarka może utrzymywać to napięcie w nieskończoność. Tak pracują akumulatory w zasilaczach buforowych i jest to najlepsze możliwe napięcie dla akumulatora żelowego.
  4. 14,4V – napięcie pełnego naładowania. Po osiągnięciu tego napięcia należy zakończyć ładowanie (ale np. dla akumulatorów samochodowych jest to natomiast normalne napięcie z alternatora, które można utrzymywać przez cały czas)

„Instalacja 12V” to duży skrót myślowy 😀 Dla instalacji „24V” powyższe napięcia wystarczy przemnożyć razy dwa. Oczywiście poszczególne akumulatory mogą się różnić między sobą, więc najlepiej przeczytać parametry na obudowie.

Dobór elementów instalacji i regulatora

  1. Napięcie instalacji 12/24V – większość transceiverów jest przygotowana pod napięcie 13,8V, stąd wybór wydaje się oczywisty – instalacja z jednym akumulatorem 12V
  2. Akumulator – rozmiar zależy dobrać do zastosowania. Jeżeli chodzi o pracę stacjonarną to brałbym po prostu największy na jaki mnie stać i jaki mi się zmieści, natomiast do pracy z terenu największy, jaki da się udźwignąć 🙂 Załóżmy do dalszych obliczeń 20Ah.
  3. Panel fotowoltaiczny – przykładowy panel 30W dawał prąd maksymalny ok. 1,7A,
    1. Akumulatory najbardziej lubią ładowanie prądem dziesięciogodzinnym, stąd każdy panel o prądzie poniżej 2A będzie w porządku. Podłączenie małego akumulatora do za dużego panelu spowoduje gazowanie i fajerwerki.
    2. Prąd panelu ma również wpływ na wybór tranzystora zwierającego w regulatorze, musi wytrzymać prąd zwarcia panelu (użyłem IRF7103, a w drugim egzemplarzu BUZ11 – dobry, tani, niezniszczalny)
    3. Dioda blokująca w regulatorze (nieoświetlony panel pochłania energię) musi również wytrzymać prąd maksymalny.
  4. Mój regulator ma również wyjście sterowane do podłaczenia obciążenia (z zabezpieczeniem podnapięciowym). Użyłem tranzystor IRF7103, w drugim egzemplarzu BUZ11.

Budowa regulatora

Do budowy własnego regulatora skłoniła mnie głównie jakość dostępnej chińszczyzny. Nie znalazłem w segmencie <400zł czegoś, co by po prostu działało 😉 Główne problemy jakie spotkałem z regulatorami PWM, to zakłócenia - albo na KF, albo wchodzące i słyszalne wprost w głośniku. Poza stacjonarną instalacją mam również małą instalację 30W na łódce, która służy do zasilania pompy zęzowej i ładowania telefonu. Do panelu był dołączony gratis regulator, który po jakimś czasie nie był w stanie odłączyć panelu i przeładowywał akumulator, więc postanowiłem zrobić coś, co będzie w końcu działać.

Moje główne założenia to:

  1. Napięcie instalacji – 12V
  2. Prąd ładowania – max. 3A
  3. Prąd obciążenia – max. 3A
  4. Woltomierz (nienawidzę, gdy regulator ma gołe 3 diodki, które odpowiednim rytmem mają przedstawiać całą sytuację)

Regulatory można podzielić na 3 rodzaje:

  1. „shunt” (zwierne?) – kończą ładowanie przez zwarcie panelu do masy (czyli panel jest albo załączony, albo zwarty)
  2. PWM – mogą utrzymywać na akumulatorze napięcie podtrzymania (zakłócają!)
  3. MPPT – śledzą prąd i napięcie, żeby uzyskać maksymalną moc. Bardziej złożone od PWM, w zasadzie całkiem zaawansowane zasilacze impulsowe. Najdroższe ze wszystkich, nigdy nie testowałem.

Schemat

Postanowiłem zrobić regulator w najprostszej topologii – zwiernej. Zaletą jest maksymalna prostota, niezadowność, brak zakłóceń. Wadami natomiast jest nieoptymalna praca panelu i cykliczna praca akumulatora. Pomimo wad wydaje mi się to dobrym wyborem do instalacji o małych rozmiarach.
solar_small_fixed_sch
Można wyróżnić trzy grupy komponentów – u góry elementy wykonawcze mocy, pośrodku wyświetlacze LED i driver, na dole mikrokontroler i zasilacz 5V.

Dioda D1 blokuje przepływ prądu z akumulatora do panelu (np. w nocy). Przed diodą znajdują się zaciski do podłączenia panelu i tranzystor, który go może zwierać do masy (dziwny układ z 8 nogami to alternatywny tranzystor do zamontowania). Po drugiej stronie diody znajduje się dzielnik napięcia do pomiaru przez mikrokontroler, złącze do akumulatora oraz obciążenia. Tranzystor odłącza masę obciążenia – tak jest prościej wysterować z poziomu mikrokontrolera, a i MOSFETy typu N mają dużo lepsze parametry od typu P, mniej się przy tym grzeją.

Poniżej dioda zenera służy do obniżenia napięcia dostarczanego do wyświetlaczy LED. Są one sterowane statycznie przez układ SCT2024. Jest to bardzo fajny i tani driver do LEDów, obsługiwany przez magistralę SPI, prąd diod ustawia się tylko jednym rezystorem, a układ dba o to, żeby w każdej linii był taki sam. W zasadzie układ robi to samo co rejestr przesuwny 74595, tylko zamiast wyjść napięciowych posiada wejścia prądowe i dodatkowe zabezpieczenia termiczne. Dioda zenera jest konieczna do obniżenia napięcia, gdyż przy napięciu zasilania np. 14V, napięciu przewodzenia czerwonej diody 2V, prądzie diody 20mA razy 14 segmentów moc tracona w driverze wyniosła by (14-2)*20mA*14 = ~3,5W. Bez wstępnego obniżenia napięć driver nagrzewał się, aż parzył, po czym zabezpieczenie termiczne wyłączało układ. Jedyną wadą jest to, że poniżej 11V diody słabo świecą, ale nie przeszkadza to w normalnym użytkowaniu.

Jeszcze niżej na schemacie znajduje się mikrokontroler ATtiny26 (ciągle mam ich zapas….), złącze do programowania, prosty zasilacz liniowy na 7805 i dwa przyciski.

PCB

Płytkę zaprojektowałem pod przezroczystą, czerwoną obudowę Z-76. Odpadł problem otworu na wyświetlacze.
solar_small_fixed_pcb
Duży scalak to driver wyświetlaczy LED, małe to pary MOSFETów do sterowania obciążeniem i zwierania panelu słonecznego. Dolne miejsce na złącze umożliwia wlutowanie złącza ARK lub EDG, linie od lewej to kolejno panel, akumulator (battery) i obciążenie (load). Nie przewidziałem na początku problemów z przegrzewaniem drivera i konieczności dołożenia zenerki, stąd łatanie drutami 🙂
regulator2

Firmware

Lewy przycisk służy do włączania i wyłączania obciążenia. Włączenie jest sygnalizowane prawą kropką na wyświetlaczu. Prawy przycisk uruchamia woltomierz na pięć sekund, przytrzymanie przycisku przez 2s włącza woltomierz na stałe. Lewa kropka wyświetlacza służy za przecinek. Wyświetlacz ma tylko dwie cyfry, więc 12,8V wyświetla jako 2,8V. Lepiej dla akumulatora, żeby napięcie nigdy nie spadło poniżej 10V 🙂

Układ odłącza obciążenie poniżej 11V, załącza ponownie dopiero powyżej 12,3V (żeby akumulator zdążył się wystarczająco podładować). Jeżeli użytkownik włączył wcześniej obciążenie, a układ odłączył je z uwagi na zbyt niskie napięcie, to co 10s na 1s miga prawa kropka.

Algorytm ładowania wygląda następująco:

  1. Poniżej 12,9V – włącz ładowanie, wyzeruj licznik
  2. Powyżej 13,9V – zliczaj czas, po godzinie wyłącz
  3. Powyżej 14,3V – wyłącz ładowanie

Pośredni krok przyda się np. przy częściowym zachmurzeniu, gdzie panel nie będzie w stanie naładować akumulatora do 14,4V, ale mógłby np. przez pół dnia utrzymywać napięcie powyżej 13,8V, czego akumulator żelowy raczej nie lubi, a tak w godzinę lekko wyższego napięcia na pewno się naładuje (mam akumulator 14Ah). Razem ok. 330 linii kodu C 🙂

Firmware, schemat, płytka release 1.0

Każdy egzemplarz może wymagać indywidualnej kalibracji ADC. Włączając zasilanie i trzymając lewy przycisk układ pokazuje na wyświetlaczu surowy kod ADC (lewa kropka – bit1 ADCH, prawa kropka – bit0 ADCH). Po obliczeniu współczynnika nachylenia, w kodzie należy ustawić następnie zmienną EE_voltage_alpha i wypalić EEPROM.
regulator3

Artur SP2AGX

How does a solar panel work?

The theory is a bit complex, but not so necessary to build a photovoltaic system. It is enough to know how does a solar panel look like from its terminals. A solar cell is just a diode (mostly silicon) that was manufactured to be flat and have a high surface area. When the semiconductor junction is illuminated a voltage appears at its terminals, that varies greatly with the amount of light and consumed current. One cell gives low voltage and low output current, so many of them are combined in series and parallel, bound to a piece of glass and encased in aluminium frame to make a solar panel. Panels differ mostly in size, power and output voltage.

Example data for a 30W panel from one of many suppliers:
panel_30W

The important parameters are:

  1. Mass and dimensions – that is obvious (it is hard to haul a 1×1,5m panel for portable operation in the mountains)
  2. Voc (open circuit voltage) – the highest obtainable voltage at no load. Voltage will immediately fall when a load is connected, however if the battery gets disconnected from the system (a nasty situation) the maximum voltage will appear at all circuitry. Components used in the charge controller (like caps) must withstand that voltage. Of course a panel with Voc=21,2V will be of no use for a 24V system.
  3. Vmp – maximum power voltage
  4. Isc (short circuit current) – The maximum possible current that a panel can generate into a zero ohm load. Shorting a solar panel is perfectly fine and does no damage. It is also a popular method of power control and many regulators work in that way.
  5. Imp (maximum power current)
  6. Pmax (maximum power) – should be called „marketing power” is is the product of Imp*Vmp . This power can only be obtained at one specific voltage and one specific current draw, it will be smaller under all other conditions.

An illuminated panel produces electricity, a shaded panel (also partially shaded) is a resistor that consumes electricity. It takes just to shadow a small part of the panel to reduce power output by half. A solar panel must be illuminated in 100%.

Photovoltaic system

A minimalistic photovoltaic system must consist of at least a solar panel and a load. Such „bare” systems are popular in developing countries to pump water for irrigation. Solar energy storage would be totally useless for pumping. For amateur radio operation battery is always necessary to provide power, like when someone walks by and casts a shadow onto the panel. The obvious choice is a 12V lead-acid battery, because most transceivers are build to accept that voltage. The battery cannot absorb and source an unlimited amount of energy so a charge controller is required to avoid overcharging and overdischarging.

A short reminder how a 12V gel lead-acid battery should work:

  1. 10,5V – lowest possible voltage, going below will irreversibly damage the battery
  2. 12,8V – voltage at 100% state of charge
  3. 13,8V – float voltage, it can be sustained indefinitely. The best possible situation for a battery.
  4. 14,4V – end of charge voltage. Charger should be disabled when battery reaches 14,4V. However it is battery-specific, car batteries continously float at this voltage and it is fine for them.

A „12V system” is a misnomer 😉 For a „24V” system just multiply voltages by two. These voltages can differ from battery to battery, so read your manual or battery case.

Component selection for a photovoltaic system

  1. System voltage 12/24V – most transceivers accept 13,8V, so the choice is obvious, one 12V battery will do
  2. Battery – size will depend on intended use. For stationary use I would take the biggest battery I could afford and fit in the shack, for portable operation I would take the biggest I could carry, let’s say 20Ah 🙂
  3. Panel – 30W with a maximum current of about 1,7A,
    1. Most batteries like to be charged at C/10 rate (ten hours), so any panel with a current below 2A will be good. Wiring a small battery to a giant panel will produce spectacular effects.
    2. Panel maximum current also determines shunt transistor. I picked a IRF7103 for one device and a BUZ11 for a second device.
    3. Blocking diode (uniluminated panel consumes power) has to withstand maximum current.
  4. My charge controller also has an output for connecting a load (to prevent overdischarge). I also picked IRF7103 and BUZ11.

Charge controller internals

My main motivation to design a regulator myself was to build something that finally works. I had bad experience with regulators in the sub-100EUR price range. My main problem encountered with PWM-type regulators was RFI, either on HF or directly buzzing in the speaker. Beside a stationary system I have a small 30W one on a boat to to power bilge bump and phone charging. I got a charge controller with that panel for free. It even worked for some time, but failed and overcharged my battery, so I decided to build a working one.

My main assumptions:

  1. System voltage – 12V
  2. Charging current – max. 3A
  3. Load current – max. 3A
  4. Voltmeter (I hate to have just three cryptic LEDs that force you to guess battery state based on their blink rythm)

There are three main types of charge controllers:

  1. shunt – they short the panels to end charging (so the panel is either connected or shorted)
  2. PWM – they can maintain float voltage for the battery (RFI!)
  3. MPPT – they track voltage and current to get maximum power output. The most complex ones, basically a full-blown SMPS. I never had one.

Schematic

I picked shunt topology for my controller. Most important advantages are simplicity, reliability, no interference. The disadvantage is efficiency. Charing is not optimal and the battery is cyclically charged (no float voltage). Despite the disadvantages I think that it is a good choice for a small system that requires no interference.
solar_small_fixed_sch
There are three main groups of components in the schematic – at the top power control transistors, in the middle LED displays and driver chip, at the bottom the MCU and a 5V linear regulator.

D1 diode blocks current flow from the battery to the panel (like at night). There is a transistor before the diode to short the solar panel. A weird looking 8-pin chip is a pair of N-MOSFETs to solder as an alternative. On the other side of the diode there is a resistive divider for battery voltage measurement and a transistor for load switching. The transistor disconnects load from the groud – it is easier to drive for the MCU and N-MOSFETs handle large current efficiently with little heating.

Below in the schematic is a zener diode to lower voltage delivered to LED displays. They are statically driven by SCT2024 – a great and cheap IC that does everything. It is driven like a shift register thru SPI bus and requires just one resistor to set LED current for every pin and has thermal protection. A 74595 shift register has voltage outputs, while SCT2024 has current sink inputs. A zener diode is required to lower LED voltage because having: 14V input, 2,0V forward voltage of every diode, diode current 20mA times 14 segments – power dissipated by the driver equals (14-2)*20mA*14 = ~3,5W. The driver run very hot and turned itself off in several minutes. The only disadvantage is that below 11V diodes are dimly lit (the battery will never be run that low anyway).

Further below there is the ATtiny26 MCU, programming connector, simple 5V supply and two buttons

PCB

I designed the PCB to fit in a standard Z-76 translucent case to see the displays inside.
solar_small_fixed_pcb
Big IC is the display driver, small ones are SMD MOSFETs. Main connector footprint fits ARK or EDG connector, wire pairs counting from the left are for the solar panel, battery and load. I did not anticipate LED driver power dissipation problems so I had to add some unplanned wires 🙂
regulator2

Firmware

Left button switches the load on or off. Powered load is indicated by right decimal dot. Right button turns on the voltmeter for 5 seconds, if pressed for longer than two seconds the display is turned on permanently. Left decimal dot is a …. decimal dot. The voltmeter displays 12,8V as 2,8V. I do not want to have the battery fall below 10 volts anyway.

Controller switches the load off below 11V, and switches back on above 12,3V. If the load was enabled before undervoltage the right dot blinks for a second every 10s.

Charging algorithm is pretty simple:

  1. Below 12,9V – enable charging, reset the timer
  2. Above 13,9V – count the time, disable charging after one hour
  3. Above 14,3V – disable charging

The intermediate step protects the battery in case illumination is too weak to charge up to 14,4V, but too strong to be at 13,8V so the battery could get partially overcharged. I have a 14Ah battery so one hour above 13,8V should be fine. The firmware is about 330 lines of C code 🙂

Firmware, schematic, PCB release 1.0

Each unit may require calibration. Powering on while holding the left button makes the voltmeter indicate raw ADC code useful for calculations (left dot – bit1 ADCH, right dot – bit0 ADCH). Slope coefficient has to be then set in EE_voltage_alpha and burned in EEPROM.
regulator3

Artur SP2AGX

Opublikowano w dziale: SP2AGX DIY

Komentuj

Musisz być zalogowany aby komentować.