Jak dodać panel słoneczny w projektach z Arduino

Jednym z możliwych rozważanych przeze mnie rozszerzeń dla Bike Pixel jest dodanie modułu umożliwiającego ładowanie poprzez panel słoneczny. W teorii możemy zasilać nasze projekty Arduino poprzez bezpośrednie podłączenie panelu słonecznego. Jeżeli mamy jakieś układy stabilizujące prąd i dużo słońca świecącego na panel, to nie powinno być z tym problemu. Jednak w momencie, gdy energia dostarczana przez panel będzie niewystarczająca, nasze urządzenie przestanie działać.

Zdjęcie ze zbliżeniem na panele fotowoltaiczne zainstalowane na dachu domu.
Zdjęcie panelu słonecznego na dachu domu, zrobione podczas wakacji.

Dlatego w naszych projektach Arduino, oprócz panelu słonecznego, normą jest użycie baterii, która jest ładowana tak długo, jak długo panel otrzymuje wystarczającą ilość energii ze słońca. Dzięki temu nasz projekt będzie działał, gdy natężenie światła zostanie zmniejszone. Konfiguracja układu będzie bardzo podobna do tej używanej do zasilania Arduino za pomocą baterii LiPo. W tym przypadku dołożymy jeszcze kilka innych elementów, ze szczególnym uwzględnieniem części związanych z zasilaniem, czyli akumulatora i panelu słonecznego.

Dostarczanie energii

Aby właściwie dobrać panel słoneczny i baterię do naszego projektu musimy najpierw zastanowić się nad potrzebami energetycznymi. Dotyczy to zarówno płytki Arduino, jak i wszystkich innych komponentów, które chcemy użyć w naszym projekcje.

W zależności od modelu Arduino, z którym pracujemy, jego zużycie będzie inne. W sąsiedniej tabeli można zobaczyć przybliżony pobór mocy różnych płyt. Oprócz poboru mocy przez płytkę Arduino, musimy dodać pobór mocy przez wszystkie urządzenia peryferyjne zawarte w naszym projekcie (aktuatory, czujniki, itp.). W przypadku prostego projektu bez problemów możemy osiągnąć 100 mAh. Na przykład:

  • w przypadku czujnika temperatury wystarczy nam 0,2 mA,
  • ultradźwiękowy czujnik odległości nieco ponad 2 mA,
  • dla modułu z akcelerometrem 4 mA,
  • dioda LED w zakresie od 10 do 20 mA,
  • bardziej złożone rzeczy, takie jak moduł bluetooth będą potrzebowały 50 mA,
  • a w przypadku serwomechanizmów mogą one pobierać nawet ponad 200 mA podczas ruchu.
ModelZużycie energii
Arduino Pro Mini 3.3V5 mAh
Arduino Nano15 mAh
Arduino Uno46 mAh
Arduino Due75 mAh
Arduino Mega93 mAh

Tabela z przybliżonymi wartościami zużycia energii przez różne oryginalne modele Arduino. Dane otrzymane dzięki tej analizie zużycia energii Arduino oraz temu opracowaniu zminimalizowania zużycia prądu.

Wybór baterii

Kiedy już oszacujemy zapotrzebowanie na energię naszego projektu, możemy przejść do wyboru baterii. Oczywiście, im większa tym lepsza. Ale niestety zazwyczaj ogranicza nas budżet, przestrzeń lub waga. Będziemy więc musieli wybrać tę, która jest dla nas najbardziej odpowiednia.

Jeśli na przykład chcemy, aby nasz projekt działał przez co najmniej 24 godziny bez światła słonecznego, będziemy musieli upewnić się, że bateria ma wystarczającą pojemność, aby utrzymać nasze urządzenie w tym czasie. Dla przykładu, załóżmy (dla uproszczenia), że nasz projekt zbudowany jest z Arduino Nano, które w sumie wraz z pozostałymi komponentami potrzebuje około 100 mAh. W tym przypadku, aby mieć wystarczającą ilość energii na cały dzień, będziemy potrzebowali baterii o pojemności co najmniej 2400 mAh.

Zdjęcie z zestawem baterii LiPo o różnych pojemnościach i rozmiarach. Od lewej do prawej: 2500mAh, 1800mAh, 1500mAh, 800mAh, 500mAh i 200mAh.
Kilka baterii LiPo o różnych pojemnościach i rozmiarach, które znalazłem w domu.

Należy również wziąć pod uwagę, że baterie ulegają degradacji wraz z upływem czasu, liczbą przeprowadzonych cykli ładowania oraz to, że występują straty w transformacji napięcia baterii. Dlatego zawsze wskazane jest posiadanie bufora, aby zapewnić sobie dodatkową energię. Kontynuując nasz przykład, możemy wybrać baterię o pojemności 2500 mAh. Jest to (przypadkowo 😉 ta sama, która będzie wykorzystana w przyszłym Bike Pixels Rear.

Wybór panelu słonecznego

W naszych projektach Arduino zazwyczaj użyjemy paneli słonecznych o napięciu 5 lub 6V. Zwykle moc wyjściowa panelu jest wyrażana w watach (W) i jest to maksymalna ilość energii, jaką może on wytworzyć w idealnych warunkach temperatury i nasłonecznienia (tj. przy napromieniowaniu słonecznym 1000 W/m², w standardowej atmosferze w temperaturze 25°C).

Idealnie byłoby mieć panel słoneczny, który jest w stanie naładować nasz akumulator w jedną dobę. Oczywiście, w zależności od pogody, pory roku i szerokości geograficznej, w której się znajdujemy (chyba, że mieszkamy w tropikach) promieniowanie słoneczne jest różne. W ten sam sposób zmienia się ilość energii, którą może wyprodukować nasz panel. Dlatego na początek musimy oszacować ilość energii słonecznej, jaką możemy uzyskać w naszej lokalizacji.

Obliczenie nasłonecznienia

Istnieje wiele serwisów, które pozwalają nam poznać szacunkową ilość promieniowania w danym punkcie planety. Jednym z nich jest Projekt POWER realizowany przez NASA. Tutaj możemy uzyskać historyczne wartości napromieniowania poziomego w dowolnym punkcie na Ziemi. Na przykład, na poniższych wykresach przedstawiono dzienne poziome napromieniowanie dla miasta Bielsko-Biała (woj. śląskie) w roku 2020.

Wykres przedstawiający całkowite dzienne wartości napromieniowania słonecznego na powierzchni poziomej w Bielsku-Białej (woj. śląskie) w roku 2020 mierzone w kWh/m²/dzień. Dane dostarczone przez NASA Prediction Of Worldwide Energy Resources (POWER).
Histogram przedstawiający liczbę dni z różnymi wartościami napromienienia pogrupowanymi w przedziałach co 0,5 kWh/m²/dzień w Bielsku-Białej (woj. śląskie). Dane dostarczone przez The POWER Project of NASA.

Widzimy, że w najlepsze dni (dosłownie 2) mamy nieco ponad 8 kW/m² na dzień, a w najgorsze (ponad 60) nawet mniej niż 1 kW/m²/dzień. Na tej podstawie oraz wiedząc, że natężenie jest wyznaczane za pomocą poniższego wzoru, będziemy w stanie oszacować całkowitą energię dostarczaną przez panel słoneczny:

I(A) = P(W) / V(V)

Jeśli mamy panel 5V, który może wygenerować do 1W mocy, to w przypadku najgorszego dnia przez całą dobę wygeneruje tylko 200 mA (1W/5A = 0,2A = 200 mA). Czyli nie za dużo.

Należy zwrócić uwagę, że powyższe wykresy przedstawiają wartość na płaszczyźnie poziomej, czyli bezpośrednio na płaskim podłożu. Jeżeli ustawimy nasz panel prostopadle do kierunku promieniowania słonecznego, możemy uzyskać dodatkową energię. Kontynuując z przypadkiem Bielska-Białej (szerokość geograficzna ~50°) możemy prawie potroić ilość energii w zimie, jeśli nachylimy nasz panel pod kątem 66°, jak pokazano na poniższym wykresie uzyskanym dzięki temu narzędziu online do obliczania promieniowania słonecznego na powierzchni pochyłej.

Wykres przedstawiający różnicę pomiędzy wartością promieniowania słonecznego na powierzchni poziomej (linia niebieska) a maksimum padania (linia czerwona) oraz obrazujący jak możemy przybliżyć energię przechwyconą przez nasz panel do maksimum, jeśli odpowiednio pochylimy go w zimie na 66° (linia zielona).

Tak więc w najgorsze dni dla panelu 1W, możemy oszacować, że będziemy mogli uzyskać nawet trochę więcej niż 400 mA przez cały dzień. Zatem do naładowania akumulatora 2400 mA będziemy potrzebowali panelu o mocy co najmniej 6W (2400/400).

Wymagane elementy

Aby zademonstrować, jak założyć projekt z panelem słonecznym, przygotowałem przykład. Idea jest taka, że dioda LED świeci w nocy i wyłącza się w ciągu dnia, a wszystko jest zasilane przez panel słoneczny, który ładuje baterię. Dla uproszczenia będziemy udawać, że zużycie prądu przez ten układ wynosi 100 mAh (choć w rzeczywistości byłoby to znacznie mniej). W ten sposób możemy pracować z już zaproponowanym akumulatorem i panelem. Do takiego projektu, oprócz tych komponentów i płytki Arduino, potrzebujemy:

  • fotorezystor, diodę LED oraz rezystory 330Ω i 10kΩ, które są podstawowymi elementami do przykładowego projektu;
  • moduł ładowania TP4056, który będzie zarządzał ładowaniem i ochroną akumulatora;
  • moduł step-up, który przetwarza napięcie baterii LiPo do 5V wymagane przez Arduino do działania;
  • dioda SR240, która zabezpieczy przed przepływem prądu z baterii do panelu słonecznego.

SR240 jest diodą Schottky’ego. Została ona wybrana ze względu na mniejszy spadek napięcia niż konwencjonalne diody krzemowe. W SR240 spadek napięcia jest również wyjątkowo mały, około 0,55V. Dzięki temu możemy chronić panel słoneczny, a jednocześnie nie zmniejszać zbytnio jego wydajności. Dodatkowo może pracować z natężeniem do 2A. Zapewnia to bezproblemową pracę nawet przy maksymalnym obciążeniu panelu. W najlepsze dni panel o mocy 6W może wytworzyć do 1,2A.

Lista komponentów, których będziemy potrzebować oraz ich ceny są podsumowane w poniższej tabeli:

CzęśćCena w AliExpress
Arduino Nano 16,50zł (klon)
Panel słoneczny 6W48,57zł
Moduł TP4056 USB-C2,45zł
Bateria LiPo 2500 mAh41,36zł
Moduł step-up 5V1,64zł
Dioda Schottky SR2409,45zł (100 szt.)
Fotorezystor3,24zł (20 szt.)
LED4,20zł (100 szt.)
Rezystor 10kΩ2,72zł (100 szt.)
Rezystor 330Ω2,72zł (100 szt.)
Kable AWG2673,56zł (6x10m)
Tabela z wykazem użytych elementów i cen.

Konfiguracja układu i kod

Po wybraniu głównych komponentów, możemy rozpocząć pracę nad obwodem. Konfiguracja będzie dość prosta. Najpierw musimy podłączyć komponenty, które będą zasilać płytkę Arduino. Panel słoneczny należy podłączyć do pinów wejściowych TP4056, akumulator do B+ i B-, a piny OUT do modułu step-up. Będzie on odpowiedzialny za przekształcanie prądu na 5V pochodzącego z akumulatora lub bezpośrednio z panelu słonecznego, jeśli ten działa. W ten sposób wyjście modułu step-up może być podłączone bezpośrednio do pinów 5V i GND Arduino.

Na koniec pozostaje nam już tylko podłączyć diodę LED do jednego z pinów cyfrowych (np. pin 2), a fotorezystor do jednego z pinów analogowych (w tym przypadku A0) oraz do zasilania. W ten sposób nasz obwód powinien wyglądać jak konfiguracja podana na poniższym schemacie.

Schemat przedstawiający przykład ze wszystkimi połączeniami potrzebnymi do zasilania projektów Arduino za pomocą panelu słonecznego.
Przykładowy układ z połączeniem poszczególnych elementów pozwalający na użycie Arduino zasilanego przez panel słoneczny.

Gdy mamy już wszystko gotowe, możemy wgrać do naszej płytki poniższy kod, który będzie odpowiedzialny za odczytywanie wartości fotorezystora i włączanie lub wyłączanie diody LED w zależności od jej wartości. W miarę wzrostu natężenia światła padającego na fotorezystor, jego rezystancja będzie się zmniejszać, więc odczytana wartość będzie wyższa, tzn. im więcej światła tym wyższa wartość odczytana przez Arduino i odwrotnie.

// Stałe konfiguracji pinów
const int PIN_POTHO = A0;
const int PIN_LED=2;

// Zmienna przechowująca wartość odczytaną z fotorezystora (0 do 1023)
int value;

void setup(){
 pinMode(PIN_LED, OUTPUT); 
 pinMode(PIN_PHOTO, INPUT);
}

// Wykonuje odczyt fotorezystora i wyłącza LED w przypadku obecności światła
void loop(){
  value = analogRead(PIN_PHOTO);
  if (value > 50){
    digitalWrite(PIN_LED, LOW);  // Apagar LED
  } else{
    digitalWrite(PIN_LED, HIGH); // Encender LED
  }
  // Odczekać jedną sekundę na następny odczyt
  delay(1000);
}

Podsumowanie i dodatkowe informacje

Dobór Jak w każdym projekcie inżynierskim, kluczowy jest właściwy dobór elementów składających się na projekt. W tym przypadku trzeba dobrać odpowiednie baterie i panel słoneczny do potrzeb energetycznych projektu do warunków pogodowych, w jakich będziemy pracować. Powinniśmy zawsze badać najgorszy przypadek i opierać nasz projekt na tej analizie. Oczywiście możemy zamontować większy akumulator i panel, ale to również zwiększy koszt, rozmiar i wagę naszego projektu.

Jeśli chcesz zagłębić się w temat zużycia energii i wykorzystania energii słonecznej w swoich projektach, oto kilka dodatkowych linków:


Linki do komponentów są linkami afiliacyjnymi, więc za każdym razem, gdy dokonasz zakupu za ich pośrednictwem, pomożesz trochę w finansowaniu projektu. Co więcej, nie będzie Cię to nic kosztować, ponieważ cena każdego z komponentów nie zmieni się dla Ciebie, a my pobierzemy niewielką prowizję od każdej sprzedaży. Z góry dziękujemy! (Cena każdego produktu jest orientacyjna i odpowiada cenie podanej w sierpniu 2021 roku).

Leave a Reply

Your email address will not be published. Required fields are marked *