Solarzellen selektieren und MPP-Kurven erstellen

Solarflug » Solarzellen selektieren und MPP-Kurven erstellen

  • Sonne
    Sonne
  • 2x20W Halogen
    2x20W Halogen
  • HQI 400W
    HQI 400W
  • Baustrahler
    Baustrahler
  • Lichteimer
    Lichteimer
  • Kontaktkralle
    Kontaktkralle
  • Kontaktkralle
    Kontaktkralle
  • Relaiskarte
    Relaiskarte

 

Wer Solarzellen selektieren will, benötigt zunächst dafür eine gleichmäßige Lichtquelle.

Industriell werden zum selektieren von Solarzellen Xenon-Blitzer genutzt, was aber den Rahmen des Hobby-Bastlers sprengen dürfte. Nahezu alle am Wechelstrom betriebene Lampen sind leider nicht ausreichend Flackerfrei. Es bleiben die Sonne und Halogenlampen an gut gesiebtem Gleichstrom.

Links dazu Diagramme an verschiedenen Lampen.
LEGENDE: Links Leistung in mW, Unten Spannung in mV
Die schönste aller Lampen, unsere Sonne (01.Nov 14:00)
Zwei 20Watt Halogen-Deckeneinbaustrahler an Autobatterie.
HQI MetallDampfLampe, das Netzflimmern macht jede Messung zunichte.
Ein 500Watt Baustrahler, auch hier Netzflimmern.


 

Aufbau der einfachen lightbox
Das meiste was man für eine einfache lightbox benötigt, dürften die meisten Bastler im Keller liegen haben, der Aufbau ist schnell erledigt.
-einen Papierkorb, diese aus "Metallgitter" damit es innen schön kühl bleibt.
-ein altes PC Netzteil auf 12V "umgebaut" (plus 5V für die Relaiskarte).
-eine Zwischenplatte mit 7 Halogenlampen mit Steckdosenbohrer gebohrt.
-Buchsen für die Halogenlampen lassen sich aus dem ATX-Stecker einfach herstellen.
-eine Glasplatte, die
oben auf dem Papierkorb draufgelegt wird.
-zwischen Glssplatte und Lampenboard kann man noch 1-2 alte PC Lüfter platzieren.

vor der Messung die Lampen auf Betriebstemperatur laufen lassen. Die Lampen werden mit zunehmender Wärme hochohmiger, und damit dunkler.
Die Teile habe ich mit spaxschrauben/wickeldaht am korb fixiert, am schluss alles nochmal mit silikon zusätzlich geklebt.

 


 

Die Elektronik
1x Arduino (Nano oder UNO)
1x 8fach Relaiskarte
1x Stromshunt 15mOhm
für den Messverstärker:
1x IC Operationsverstärker (z.B. LM358)
1x Widerstand 10K
1x Widerstand 100K
Lastwiderstände:
5x Widerstand 0,15Ohm 4Watt
5x Widerstand 1,2Ohm 4Watt
5x Widerstand 10Ohm 1Watt
Diverses Löt-Kleinmaterial, Kabel Steckbrücken...

Die Verdrahtung der Lastwiderstände:
1) 1x 10Ohm
2) 2x 10Ohm parallel (5Ohm)
3) 2x 1,2Ohm in Reihe (2,4Ohm)
4) 1x 1,2Ohm
5) 2X 1,2Ohm parallel (0,6Ohm)
6) 2x 0,15Ohm in Reihe (0,3Ohm)
7) 1x 0,15Ohm
8) 2x 0,15Ohm parallel (0,075Ohm)

Die Verdrahtung zwischen Relaiskarte habe ich mit Steckbrücken hergestellt:
RelaiskartenPin -- ArduinoPin
GND -- GND
D1 -- D2
D2 -- D3
D3 -- D4
D4 -- D5
D5 -- D6
D6 -- D7
D7 -- D8
D8 -- D9
VCC -- externe Spannungsversorgung 5V

Der Stromshunt kommt in die Minusleitung, die Verdrahtung des Messverstärkers siehe Bild (7).

Der Arduino kann über USB mit Spannung versorgt werden, da wir die 1,1V interne Referenzspannung benutzen, die Relaiskarte sollte mit einer eigener Spannungsquelle versorgt werden, z.B. mit dem 5V Ausgang der Netzteiles der lightbox.

Durch Starten des seriellen Monitores in der Arduino-IDE resettet der Arduino, und die Messung beginnt. Nach der Messung alle Daten im Seriellem Monitor markieren (Strg+a) und kopieren (Strg+c). Nun können die Daten in eine Tebellenkalkulation eingefügt werden.

Der passende Arduino-Code:

void setup(){
int PinMin = 2; int PinMax = 9; for(int iP=PinMin; iP<=PinMax; iP++){pinMode(iP, OUTPUT);}
Serial.begin(115200);
analogReference(INTERNAL);

byte Z; //Binär-Zähler:
for(int iZ=0; iZ<256; iZ++)
{ Z=iZ;
digitalWrite(2, (Z & B1));
digitalWrite(3, (Z & B10));
digitalWrite(4, (Z & B100));
digitalWrite(5, (Z & B1000));
digitalWrite(6, (Z & B10000));
digitalWrite(7, (Z & B100000));
digitalWrite(8, (Z & B1000000));
digitalWrite(9, (Z & B10000000));
delay(80);

float I = 0;  
for(int i = 0; i < 10; i++)  {I=analogRead(A0) +I;} I=I/1.58;

float U = 0;   
for(int k = 0; k < 10; k++)  {U=analogRead(A1) +U;} U=U*0.0985;
    
      Serial.print(Z);              Serial.print(";   ");
      Serial.print(I,0);            Serial.print(";   ");
      Serial.print(U,0);            Serial.print(";   ");
      Serial.println(U * I /1000,0);
      delay(20);
}
}void loop(){}