Ruchomy panel fotowoltaiczny - układ testowy (cz. 1/4)


Tomasz Bartuś



2016-09-24
Ruchomy panel fotowoltaiczny - układ testowy

Wstęp

Projekt ma na celu zbudowanie interaktywnego panelu fotowoltaicznego, który w trakcie dnia będzie automatycznie śledził Słońce poruszające się po nieboskłonie. Temat podzielony został na cztery części.

  1. W 1-sza, którą zamieszczono poniżej, koncentruje się na budowie układu pomiarowego jakości i ilości światła oraz na jego testowaniu (Fig. 1).
  2. W 2-giej (Tracking panelu solarnego cz. 2/4) zbudujemy układ mechaniczny z użyciem serwomechanizmów i będziemy go testować.
  3. W 3-ciej (Ładowarka solarna) utworzymy panel słoneczny oraz dodamy do niego układ umożliwiający ładowanie urządzeń elektrycznych.
  4. W 4-tej Ładowarka solarna (modyfikacja) zmodyfikujemy układ elektroniczny ładowarki solarnej i zmodyfikujemy jej obudowę.
Układ testowy
Fig. 1. Układ testowy

Założenia:

Budowany układ powinien mierzyć natężenie światła i w zależności od wyników pomiaru powinien decydować o położeniu płyty z panelem solarnym. Układ testowy został oparty o pomysł przedstawiony w projekcie Arduino Solar Tracker.

Układ

Prace oparto o schemat (Fig. 2). Składa się on z płytki prototypowej Arduino oraz dwóch modułów:

  1. modułu czujnika światła (Fig. 3, 4),
  2. modułu kontroli oświetlenia.

Schemat testowy
Fig. 2. Schemat układu testowego

Testy

Testy miały na celu zapoznanie się z działaniem fotorezystorów (LDR), ich czułością oraz określenie średniego poziomu oświetlenia wieczornego i porannego.

Moduł czujnika oświetlenia to tekturowa płytka prototypowa wyposażona w 4 fotorezystory (LDR) umieszczone w czterech narożach prostokątnej płyty (Fig. 3, 4).

Płytka testowa czujników światła (awers)
Fig. 3. Płytka testowa czujników światła (awers)

Płytka testowa czujników światła (rewers)
Fig. 4. Płytka testowa czujników światła (rewers)

Zmontowany układ testowy (Fig. 1), za pomoca diod LED pozwala na zgrubne sprawdzenie, która ze stron czujnika oświetlenia jest lepiej oświetlona. Zgodnie z działaniem algorytmu (Fig.), sprawdzane jest czy lepiej oświetlona jest strona lewa czy prawa oraz góra czy dół. Moduł kontroli oświelenia ukazuje wynik w postaci dwóch świecących diod: LED1 lub LED3 oraz LED2 lub LED4 (Fig. 2).

Dodatkowo, w celu dokładniejszej kontroli jasności oświetlenia, wartości pomiarowe zostają wyświetlone w postaci czytelnego komunikatu w monitorze portu szeregowego (Fig. 5). Informuje on o natężeniu światła zarejestrowanym przez z cztery LDR oraz o średnich wartościach oświetlenia obliczonych dla strony lewej, prawej, góry i dołu modułu czujnika oświetlenia. Dodatkowo, w środku rysunku przedstawiona jest średnia ogólna zarejestrowana przez 4 fotorezystory.

Komunikat z portu szeregowego
Fig. 5. Komunikat z portu szeregowego

Lista części

  1. platforma prototypowa Arduino (Leonardo),
  2. fotorezystory 5-10KΩ (4 szt.: LDR0, LDR1, LDR2, LDR3),
  3. rezystory 100Ω (4 szt.: R0, R1, R2, R3),
  4. rezystory (4 szt.: R4, R5, R6, R7),
  5. diody LED czerwone (4 szt.: LED1, LED2, LED 3, LED4),
  6. płytka prototypowa,
  7. przewody,

Kod:

//Przypisanie pinów fotorezystorom (LDR)
int ldrtopl = 2; //górny lewy
int ldrtopr = 1; //górny prawy
int ldrbotl = 3; //dolny lewy
int ldrbotr = 0; //dolny prawy

void setup () 
{
//Aktywacja portu szeregowego
Serial.begin(9600);
  
  //Piny kontroli róznicy oświetlenia
  pinMode (4, OUTPUT);  //gora
  pinMode (5, OUTPUT);  //dol
  pinMode (6, OUTPUT);  //lewa
  pinMode (7, OUTPUT);  //prawa
}

void loop()
{
  //Pobranie wartości spadków napięć na fotorezystorach
  int topl = analogRead(ldrtopl);
  int topr = analogRead(ldrtopr);
  int botl = analogRead(ldrbotl);
  int botr = analogRead(ldrbotr);
  //Obliczenie średnich
  int avgtop = (topl + topr) / 2; //Średnia arytm. z pomiarów górnych fotorezystorów
  int avgbot = (botl + botr) / 2; //Średnia arytm. z pomiarów dolnych fotorezystorów
  int avgleft = (topl + botl) / 2; //Średnia arytm. z pomiarów lewych fotorezystorów
  int avgright = (topr + botr) / 2; //Średnia arytm. z pomiarów prawych fotorezystorów
  int avg = (avgtop + avgbot) / 2; //Średnia arytm. z pomiarów 4 fotorezystorów

//Przekazywanie na port szeregowy wartości pinów analogowych z fotorezystorów
Serial.print("                ");
Serial.println(avgtop);

Serial.print(topl);
Serial.print(" ************************** ");
Serial.println(topr);

Serial.println("    *                        * ");
Serial.println("    *                        * ");

Serial.print(avgleft);
Serial.print(" *           ");
Serial.print(avg);
Serial.print("          * ");
Serial.println(avgright);

Serial.println("    *                        * ");
Serial.println("    *                        * ");

Serial.print(botl);
Serial.print(" ************************** ");
Serial.println(botr);
Serial.print(" ");

Serial.print("               ");
Serial.println(avgbot);
Serial.println(" ");

    //Pętle sprawdzające różnice oświetlenia
    if (avgtop < avgbot)
    {
      digitalWrite(5, HIGH);
      digitalWrite(4, LOW);
      delay(10);
    }
    else if (avgbot < avgtop)
    {
      digitalWrite(4, HIGH);
      digitalWrite(5, LOW);
      delay(10);
    }
    else 
    {
    }

    if (avgleft > avgright)
    {
      digitalWrite(6, HIGH);
      digitalWrite(7, LOW);
      delay(10);
    }
    else if (avgright > avgleft)
    {
      digitalWrite(7, HIGH);
      digitalWrite(6, LOW);
      delay(10);
    }
    else 
    {
    }
    delay(50);
//  }

delay(2000);
}
 
 

Doktorat

Spis treści
Rozdzialy
Abstrakt [pl]
Abstract [eng]