
Otonom Güneş Takip ve Diferansiyel Arıza Tespit Sistemli Fotovoltaik Enerji İstasyonu
Merhaba, ben Mehmet Enes Konur. Bursa Teknik Üniversitesinde Mekatronik Mühendisliği 3. sınıf öğrencisiyim. Yaz tatilinin başlamasıyla evde kendi imkanlarımla merak ettiğim bir projeyi anlatacağım. Yenilebilir enerjiye her zaman ilgi duymuşumdur. Küçükten gelen merakım bu yaz müsait olmamla harekete geçti.
Yaz mevsimiyle güneşin metrekareye düşen ışınımı artmış, gün içi güneşlenme süresi de uzamıştır. Bundan ötürü bu yaz evdeki imkanlarımla Güneş Paneli ile enerji üretmeyi düşündüm. Ancak kısa süre sonra panelimin üretebildiği voltajın yaklaşık 1,0 volt civarında kaldığını ve şarj edilebilir pilimi dolduramadığını fark ettim. Bu aşamada araştırmalarım sonucunda Joule thief sistemini öğrendim. Joule thief sistemi bir adet iki tel sarılı bobin ve bir adet transistor içerir. Bu sistemin gerilim ihtiyacı ve güç kaynağına bağlı olarak dirençler kullanılır. 330Ω ile 10KΩ arasındaki dirençler transistörü korur ve stabiliteyi artırır. Bu projemde hangi süreçlerden geçtiğimi detaylıca sizlerle paylaşıyorum.
1. Giriş
- Yenilenebilir enerji sistemlerinde karşılaşılan en büyük iki problem, güneş açısının gün içindeki değişimi ve dış ortam koşulları (toz, kir, gölgelenme) sebebiyle yaşanan verim kaybıdır. Standart sistemler sadece enerji üretimine odaklanırken, bu projede kestirimci bakım (predictive maintenance) konsepti donanımsal bir yaklaşımla çözülmüştür. Proje, ortam aydınlık olmasına rağmen PV panelin yeterli üretim yapamaması durumunu matematiksel olarak analiz ederek, fiziksel bir müdahaleye gerek kalmadan arıza/tozlanma tespiti yapabilen akıllı bir otomasyon sunmaktadır.

2. Sistem Mimarisi ve Donanım Bileşenleri

Projenin donanım mimarisi, sensör katmanı, kontrolcü katmanı ve aktüatör/uyarı katmanı olmak üzere üç ana bloktan oluşmaktadır. Bileşenlerin seçimi ve entegrasyonu aşağıdaki tabloda detaylandırılmıştır.
| Bileşen | Fonksiyonu ve Sistemdeki Yeri |
| Arduino Mikrodenetleyici | Sistemin ana işlem birimidir. Analog sensör okumaları, diferansiyel karar algoritmaları ve PWM sinyal üretimini gerçekleştirir. |
| Fotovoltaik (Güneş) Paneli | Ana enerji kaynağı ve aynı zamanda voltaj bazlı arıza teşhis sensörü (A0 pini üzerinden, diyot öncesinden okuma) olarak işlev görür. |
| LDR Sensör Ağı (Doğu – Batı) | 10K gerilim bölücü devresi ile kurulan foto-dirençler, güneşin yönünü ve ortamın mutlak ışık şiddetini ölçer. |
| Servo Motor (SG90) | Doğu-Batı eksenindeki ışık farkına (belirlenen histerezis tolerans değerine) göre PV paneli optimum açıya yönlendirir. |
| Joule Thief & 1.2V Ni-MH Batarya | Panelden gelen düşük şarj voltajını endüktif şoklama ile yükselterek sistemin batarya yönetimi ve LED aydınlatma işlemleri için gerekli enerjiyi sağlar. |
| KY-019 Röle Modülü | Tozlanma durumunda sıfır voltaj kaybı (sıfır ohm kontak direnci) ile Joule Thief devresini mekanik olarak tetikleyen aktif uyarı anahtarıdır. |
3. Mekatronik Tasarım ve Algoritmik Yaklaşım
3.1. Dinamik Güneş Takibi
Sistem, Doğu (A1) ve Batı (A2) yönlerine yerleştirilmiş LDR sensörlerinden gelen analog verileri sürekli olarak okur. İki sensör arasındaki fark, yazılımda belirlenen tolerans değerini aştığında, mikrodenetleyici servo motora PWM sinyali göndererek paneli ışığın yoğun olduğu yöne çevirir. Tolerans değeri, sistemin bulut geçişleri gibi anlık değişimlerde mekanik olarak kararsız kalmasını (chattering) engeller.
3.2. Diferansiyel Toz ve Arıza Tespit Algoritması
Projenin endüstriyel kalibredeki en yenilikçi yönü, Güneş Paneli kirlenme durumunu akıllıca algılayabilmesidir.
Ayrıca, sistem bu işlemi yalnızca panel voltajına bakarak değil, ortam ışık verileriyle çapraz sorgulayarak gerçekleştirir.
- Gündüz ve Temiz Panel: LDR ortam ışığı yüksek ortalama veriyor ve A0 pininden okunan panel voltajı referans eşiğinin üzerinde. Bu durumda sistem şarj modunda kalır, mekanik uyarı verilmez.
- Gece (Uyku) Modu: LDR ortam ışığı düşük. Güneş paneli voltajının düşük olması fiziksel olarak normal karşılandığı için sistem hata raporlamaz ve uyku modunda kalır.
- Arıza / Tozlanma Durumu: LDR ortam ışığı yüksek (Güneş var), ANCAK A0 pininden okunan panel voltajı belirlenen üretim eşiğinin altındadır. Bu çapraz uyumsuzluk algılandığı an sistem röleyi tetikler ve Joule Thief üzerinden görsel (LED) alarmı aktif eder.
3.3. Asenkron Yazılım Mimarisi ve Gürültü Filtreleme
Elektromekanik kilitlenmeleri önlemek amacıyla yazılım mimarisinde işlemciyi bloke eden kod dizilimleri (delay) yerine, işlemcinin dahili saatini kullanan (millis) asenkron bir görev planlayıcısı inşa edilmiştir. Servo motor saniyede birden fazla kez akıcı dönüş yaparken, arıza tespit sistemi çevresel elektriksel gürültüleri ekarte etmek adına belirli zaman periyotlarında kontrol işlemi yapar. Ayrıca ortak şase (common ground) konfigürasyonu ile hayalet voltaj (floating pin) sorunu donanımsal olarak çözülmüştür.
4. Sonuç ve Değerlendirme
Geliştirilen bu entegre proje Güneş Paneli takip sistemlerini bir adım öteye taşıyarak endüstriyel bir hata ayıklama modeline dönüştürmüştür. Ayrıca düşük voltajlı donanımlar (1.2V pil ve Joule Thief modülasyonu) transistör boğulmaları olmadan kayıpsız entegre edilmiştir.
Proje sensör verilerinin anlamlandırılması ve aktüatör kontrolünü kapsar. Otonom karar algoritmalarının bütünüyle sergilendiği tam kapsamlı bir otomasyon sistemidir.
Arduino Kodu
#include <Servo.h>
const int panelPin = A0;
const int ldrDoguPin = A1;
const int ldrBatiPin = A2;
const int rolePin = 8;
const int servoPin = 9;
Servo gunesPaneli;
int panelAcisi = 90;
// --- KALİBRASYON EŞİKLERİ ---
int gunduzEsigi = 200;
int panelTozEsigi = 100;
int tolerans = 50;
unsigned long sonRoleKontrol = 0; // Röle zamanlayıcısı için hafıza
void setup() {
Serial.begin(9600);
pinMode(rolePin, OUTPUT);
digitalWrite(rolePin, LOW);
gunesPaneli.attach(servoPin);
gunesPaneli.write(panelAcisi);
delay(1000);
}
void loop() {
int doguIsik = analogRead(ldrDoguPin);
int batiIsik = analogRead(ldrBatiPin);
int isikFarki = doguIsik - batiIsik;
// 1. SERVO HAREKETİ (Hızlı çalışabilir, saniyede 30 kez)
if (isikFarki > tolerans) {
if (panelAcisi < 180) {
panelAcisi++;
gunesPaneli.write(panelAcisi);
}
}
else if (isikFarki < -tolerans) {
if (panelAcisi > 0) {
panelAcisi--;
gunesPaneli.write(panelAcisi);
}
}
// 2. RÖLE VE TOZ KONTROLÜ (Sadece 2 saniyede 1 kez karar verir)
// Bu, sınırda kalan değerler yüzünden rölenin zırıldamasını KESİN engeller!
if (millis() - sonRoleKontrol > 2000) {
int panelUretimi = analogRead(panelPin);
int ortamIsigi = (doguIsik + batiIsik) / 2;
if (ortamIsigi > gunduzEsigi) {
if (panelUretimi < panelTozEsigi) {
digitalWrite(rolePin, HIGH); // TOZLU -> LED YANSIN
} else {
digitalWrite(rolePin, LOW); // TEMİZ -> LED SÖNSÜN
}
} else {
digitalWrite(rolePin, LOW); // GECE -> LED SÖNSÜN
}
// Bilgisayar ekranından takip etmek için
Serial.print("Ortam (LDR): "); Serial.print(ortamIsigi);
Serial.print(" | Panel (A0): "); Serial.println(panelUretimi);
sonRoleKontrol = millis(); // Sayacı sıfırla
}
delay(30); // Servo motorun stabil dönmesi için kısa mola
}


