Malumunuz elektrik fiyatları yüksek.  Güneş panelleri (solar panel) elektrik üretiminde çok yaygın olarak kullanılıyor. Güneş varken üretilen elektrik enerjisi, akülerde depolanıyor. Gündüz veya hava kararınca aküleri kullanabiliyorsunuz. (Direkt panelden enerji alınmaz. Sakıncaları vardır.) Eğer isterseniz inverter devreleri ile akü gerilimini ülkemizde kullandığımız 220V 50Hz sinüs gerilime çevirebilirsiniz.

Lewis Loflin tarafından yazılmış bir makalede Arduino ile Güneş panelinin nasıl şarj edileceği anlatılıyordu. Burada paylaşayım dedim.  Hatta Arduino kodlarını denedim. Derleme hatasıyla karşılaşmadım.  Arduino açık kaynak kodlu, popüler bir platform.

Aşağıdaki devre şeması röleli bir sisteme ait. Bu sistemde anahtarlama amacıyla 12V röle kullanmanın bazı sakıncaları var.  En büyük sakıncası ise, yüksek akımları kontrol ederken , ON-OFF yaparken , röle kontakları zarar görecektir.

Güneş paneli şarj devresi (Transistörlü)
Güneş paneli şarj devresi (Transistörlü)

Yukarıdaki devrede kullanılan röle yerine transistör kullanılırsa aşağıdaki devre elde edilir:

Güneş paneli şarj devresi (transistörlü)
Güneş paneli şarj devresi (transistörlü)

Devrede 2SA1803 PNP triple difüzyon transistör kullanılmıştır. Yüksek güçlü uygulamalarda tercih edilir. 2SA1803 Datasheet

Amaç:  Akünün şarj gerilimini , ON-OFF kontrolünü kontrol etmek. Akü şarj edilirken, güneş panelinin gerilimini kontrol etmek.

LED1, urumun kötü olduğunu gösterir. Input gerilimi- giriş gerilimi şarj geriliminin altında olduğunda yanar.

DP11, transistörü tetiklemek için kullanılır.  Burada PWM veya basit bir zamanlama programıyla şarj saykılını ayarlayabilirsiniz. Her şarj saykılında led yanıp sönecektir.  (LED3 şarj edildiğini gösterir.)

LED2,  Akünün tam dolu olduğunu gösterir.( DP10 )

10 bitlik bir ADC (analog dijital converter) gerilimi (4.9 mV adım geriliminde-step voltaj) kullanılıyor.

Güneş panelinden gelen giriş gerilimini ölçmek için , aküye bağlı olarak bir gerilim bölücü devresi kullanılıyor. (15k-2.2k dirençleri)

Akü tam şarj olduğunda gerilim bölücü devre üzerinde yaklaşık 1.7-1.9 volt gerilim oluyor. Bu değer desimal (onluk) olarak 346-400 arası bir değere ADC ile çevriliyor.  Akünün şarj olduğu mikrodenetleyiciye bu yolla bildiriliyor.

Programda

int chon = 5000; // charge on time
int choff = 2000; // charge off time

değerleri var. Bu değerler çok az olursa akü tam şarj olmayacak, çok fazla olursa aşırı şarj olacaktır.

Güneş panelinin  ürettiği gerilim değeri AD0 noktasından, Akü gerilimi ise AD1 noktasından takip ediliebilir.

Aynı sistemi 24V akü şarj devresi nde de kullanabilirsiniz. Bu durumda 15k direncini 27k ile değiştirmeli ve 24V röle kullanmalısınız.

Arduinonun kendi beslemesi ayrı bir güç kaynağından veya pil grubundan  gelmeli. 5V regüle edilmiş olmalı.  Uygulamada pil kullanırsanız, arada değiştirmeniz gerektiğini unutmayın.

Bu devreyi isterseniz, güneş paneli yerine bir güç kaynağından akü şarj devresi olarak da kullanabilirsiniz.

/* Solar cell battery charger/regulator

Dp12 LED1 indicator 'bad' meaning the input voltage below charging voltage.

Dp11 turns on charge switch transistor. Can use PWM or a simple timing routine.
Will blink on/off with charge cycle.

Dp10 LED2 indicator fully charged battery

This uses two resistor voltage dividers (15k and 2.2k) which produces a voltage
of about 1.7-1.9 volts when fully charged. This equates to about decimal 346-410 from the ADC.

The voltage input is connected to AD0 while the voltage on the battery is monitored
at AD1

*/

#define voltage_in 0
#define voltage_out 1

#define LED1 12
#define LED2 10
#define charge_enable 11

int x;
int y;

int chon = 5000; // charge on time
int choff = 2000; // charge off time

int CP = 389; // charge point variable
// CP sets the battery charge voltage level. Can vary from 346 - 410.
void setup() {

pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(charge_enable, OUTPUT);

digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(charge_enable, LOW);

}

void loop() {

x = analogRead(voltage_in); // voltage from solar panel
//under CP on ADC indicates not enough voltage to charge battery
y = analogRead(voltage_out); // voltage on battery to be charged
// over or equal to CP on ADC indicates fully charged battery

if (x < CP) digitalWrite(LED1, HIGH); else digitalWrite(LED1, LOW); // LED off indicates good input voltage if (y > CP) digitalWrite(LED2, HIGH);
else if (y <= CP) digitalWrite(LED2, LOW); // LED on means battery is charged if ((x > y) & (y < CP) & (x > CP)) { // check input voltage and voltage on battery
// turn on charge cycle if voltage input good AND battery voltage low.

digitalWrite(charge_enable, HIGH); // turn on voltage to battery
chon = (CP - y) * 1000;
delay(chon); // ON wait
digitalWrite(charge_enable, LOW); // turn off charge enable
delay(choff); // OFF wait
} // end if
}

Lewis Loflin güneş panelini korumak için de alttaki devreyi kullanmış:

güneş paneli şarj devresi3

Elemanın güneş paneli maksimum 500mA akım üretiyormuş. Aküden tekrar panele sızıntı akımları geldiğinden fazladan bir koruma olarak bu devre eklenebilir. 

Formül: Iout = 1.25V / RE.   500mA için RE = 2.5 Ohm.

3 YORUMLAR

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz