Ana Sayfa Arduino Arduino ile Akıllı Güneş Takip Sistemi

Arduino ile Akıllı Güneş Takip Sistemi

10 min read
14
15
61,641

Merhaba arkadaşlar ben Bilal GÜREVİN. Sakarya üniversitesinden mekatronik mühendisliğii mezunuyum. Bu çalışmamda sizlere tasarım projesi olarak yaptığım akıllı güneş takip sisteminden bahsedeceğim.

Güneş takip sistemleri,güneş panellerini, güneşten gelen radyasyonu en iyi şekilde alacak diklikte tutmaya çalışarak elde edilecek enerjiyi maksimum hale getirmeyi hedefler.  İdeal bir güneş takip sistemi, fotovoltaik güneş pilinin dosdoğru bir şekilde güneşe yöneltilmesini sağlamalıdır. Bunun için yatay ve düşeyde hareket edebilmelidir. Bu proje çalışmasında, gün içinde herhangi bir anda güneşin sürekli olarak 90 derecelik dik açı ile takibini iki eksendeki hareketi ile sağlayan ve bu sayede panellerin günlük verimini arttıran bir güneş takip sistemi tasarlanmıştır. Proje yapımı esnasında programlama, servo motor kontrolü, analog verilerin okunması, elektrik devreleri ve SolidCad ile üç boyutlu parça tasarımı gibi çalışma alanlarına ait birçok teknikten yararlanılmıştır.

Çalışma Mantığı

Yapılan projede gün içinde sistemin güneşe olan konumu LDR ler ile sağlanmış. Toplamda dört adet LDR kullanılmıştır. İki LDR yatay, diğer iki LDR dikey eksende hareketleri sağlamaktadır. Üst LDR ile alt LDR’nin referansları karşılaştırılır. Çıkan sonuca göre servoların konumu değiştirilir. Sağa sola dönme işlemi de aynı mantıkla gerçekleştirilir.

LDR’lerden gelen analog bilgilerin ölçülmesi için de Arduino Uno kullanılmıştır. Üzerindeki altı adet analog giriş sayesinde (A0, A1, A2, A3, A4, A5, A6) LDR lerden analog bilgilerin okunarak kıyaslanması sağlanmıştır. Ayrıca panellerden üretilen akım, gerilim ve güç değerleri de Arduino’nun analog girişleri ile gerçekleştirilmiştir. Arduino’nun girişleri 5V’a göre ayarlandığından girişlere gerilim bölücüler konulmuştur. Bu sayede daha yüksek gerilimlerin ölçümü gerçekleştirilmiştir.

Kullanılan Malzemeler

Devre Şeması

Arduino Kodları

#include <Servo.h>
Servo YATAY;
Servo DIKEY;

int pos1 = 90; // servo1 başlangıç konumu
int pos2 = 90; // servo2 başlangıç konumu

const int LDR_SOL = A0; // mor
const int LDR_SAG = A1; // mavi
const int LDR_YUKARI = A2; // yeşil
const int LDR_ASAGI = A3; // sarı
const int pot_pin = A4;

int SOL = 0; 
int SAG = 0; 
int YUKARI = 0;
int ASAGI = 0;
int pot = 0;

void setup()
{
YATAY.attach(9); //alt motor
DIKEY.attach(10); //ust motor
Serial.begin(9600);
}

void loop()
{

SOL = analogRead(LDR_SOL);
SAG = analogRead(LDR_SAG);
YUKARI = analogRead(LDR_YUKARI);
ASAGI = analogRead(LDR_ASAGI);
pot = analogRead(pot_pin);
pot = map(pot, 0, 1023, 0, 50);

Serial.print("POT = ");
Serial.print(pot);
Serial.print(" LDR_SAG = ");
Serial.print(SAG);
Serial.print(" LDR_SOL = ");
Serial.print(SOL);
Serial.print(" LDR_UST = ");
Serial.print(YUKARI);
Serial.print(" LDR_ALT = ");
Serial.println(ASAGI);

//ldr analog (0-1024) bilgileri okur. 
//LDR bir ucu - de ise 
//bu değerler ışık şiddeti ile doğru orantılıdır.
//ışık artarsa değer de artar.

 if (SOL > ( SAG + pot ))
 {
 if (pos1 > 0)
 pos1 -= 1;
 YATAY.write(pos1);
 }
 
 if (SAG > ( SOL + pot ))
 {
 if ( pos1 < 180 )
 pos1++;
 YATAY.write(pos1);
 }

 if (YUKARI > ( ASAGI + pot ))
 {
 if ( pos2 > 0 )
 pos2 -= 1;
 DIKEY.write(pos2);
 }
 
 if (ASAGI > ( YUKARI + pot ))
 {
 if (pos2 < 180)
 pos2++;
 DIKEY.write(pos2);
 }

delay(60);
}

Güneş Panellerinden Gelen Değerlerin Ölçümü

Bu kısımda da panellerden gelen verilerin arduino da okunmasından bahsedeceğim.Yukarıda da bahsettiğimiz gibi arduino girişleri 5V a kadar okuma yapabildiği için daha yüksek değerleri okuyabilmek adına gerilim bölücü kullandım. Aşağıda bağlantı şeması ve panellerden gelen verileri ölçüp ekrana yazdığımız program mevcuttur. Şema da LCD ekran bağlantısı da bulunmakta ama proje sadece panellerin bağlantısı esas alınarak yapılmıştır.



//*************************************************
//********analog girişler belirleniyor*************
//*************************************************
int sabit = 5;
int hareketli = 4;
//*************************************************
//*****sabit olan panelin ölçümü yapılıyor*********
//*************************************************
float vout_sbt = 0.0;
float vin_sbt = 0.0;
float R1_sbt = 100000.0; // 100K DİRENÇ
float R2_sbt = 10000.0; // 10K DİRENÇ
float R1 = 100.0; // 100 ohm
int sbt = 0;
float sbt_akim = 0;
//*************************************************
//*****hareketli olan panelin ölçümü yapılıyor*****
//*************************************************
float vout_hrk = 0.0;
float vin_hrk = 0.0;
float R1_hrk = 100000.0; // 100K DİRENÇ
float R2_hrk = 10000.0; // 10K DİRENÇ
float R2 = 100.0; // 100 ohm
int hrk = 0;
float hrk_akim = 0;

void setup()
{
Serial.begin(9600);
pinMode(sabit, INPUT); // SABİT GİRİŞ OLARAK AYARLANDI
pinMode(hareketli, INPUT); // HAREKETLİ GİRİŞ OLARAK AYARLANDI
Serial.println(“***********************BU DEGERLER 10 DK ARA ILE OLCULMUSTUR***********************”);
Serial.println(“***********************************SAU MEKATRONIK**********************************”);
}

void loop()
{
sbt = analogRead(sabit);
hrk = analogRead(hareketli);

vout_sbt = sbt * (5.0 / 1024.0); // OKUNAN ANALOG DEĞER 0-1023 ARASINDA. AMA BİZ 0-5 ARASINA ORANLAMAMIZ LAZIM
vin_sbt = vout_sbt / (R2_sbt/(R1_sbt+R2_sbt)) + 0.3;

sbt_akim = vin_sbt / R1;

vout_hrk = hrk * (5.0 / 1024.0); // OKUNAN ANALOG DEĞER 0-1023 ARASINDA. AMA BİZ 0-5 ARASINA ORANLAMAMIZ LAZIM
vin_hrk = vout_hrk / (R2_hrk/(R1_hrk+R2_hrk)) + 0.3;

hrk_akim = vin_hrk / R2;

if (vin_sbt < 0.09)
{
vin_sbt = 0.0;
}

if (vin_hrk < 0.09)
{
vin_hrk = 0.0;
}

Serial.print(“sabit panel = “);
Serial.print(vin_sbt);
Serial.print(” volt “);
Serial.print(sbt_akim);
Serial.print(” mA”);
Serial.print(” hareketli panel = “);
Serial.print(vin_hrk);
Serial.print(” volt “);
Serial.print(hrk_akim);
Serial.println(” mA”);
delay(600000); //10 DK GECİKME…600 SANİYE
//delay(600000); //10 DK GECİKME…600 SANİYE
}

Buna Benzer Yazılar Göster !
Daha Fazlasını Yükle - Konuk Yazar
Daha Fazla Göster -  Arduino

14 Yorumlar

  1. Eren Öztürk

    10 Mayıs 2017 at 20:21

    2x arduino 2x30tl

    neden 2 tane arduino
    Program ve bağlantıları tek arduino üzerinden göstermişssiniz

    Reply

    • Bilal Gurevin

      11 Mayıs 2017 at 13:12

      İyi çalışmalar Eren. Diğer arduinonun bağlantılarını yeni yükledim. Bunlarla da panellerden gelen verileri ölçerek gün boyu 10 dk aralıklarla sabit ve hareketli panellerden gelen değerleri ekrana yazdırdım. Çıkan değerleri excele aktarıp grafikler oluşturdum.

      Reply

      • Barış AKKUŞ

        15 Mayıs 2018 at 14:46

        İYİ GÜNLER.Bu projeyi yapmaya çalışıyorum benim projemin bundan farkı tek eksenli olması yani aynı nerdeyse fakat kodları ve devre şemasını tek servoya göre yaptığınız için tam olmuyo ve çok titreme oluyo sizdede bu problemler oldu mu yardımcı olur musunuz

        Reply

  2. Abdalrahman Badawy

    10 Mayıs 2017 at 21:16

    please rewrite the code with English in order to understand it =D .

    Reply

  3. furkan

    12 Mayıs 2017 at 10:45

    Şuan Sakarya’da mısınız? Satın almak istiyorum mümkünse?

    Reply

  4. Mustafa

    3 Ekim 2017 at 20:42

    Kolay gelsin öncelikle güzel bir proje. Lakin bu projeden bence en önemli nokta çizimler ve paneller. Eğer 3 boyutlu çizim yaptıysanız bunun lazer kesim dosylarını veya çizim dosyalarını da ekleyebilir misiniz? Çünkü proje elimde yarım kaldı buradan bakarak yapmaya çalıştım ama yapı olmayınca zor oluyor.

    Şimdiden teşekkür ederim.

    Reply

  5. emre demirci

    23 Kasım 2017 at 19:19

    çalışmanız için gerçekten tebrik ederim bende gerçekleştirmeye başladım bu projeyi fakat 2. kısımda lc dideki veri okuma kısmında hatayla karşılaştım sebebi nedir yardımcı olurmusunuz

    Reply

  6. ahmet

    16 Ocak 2018 at 11:38

    Güneş Panellerinden Gelen Değerlerin Ölçümü için verien kodlarda aşağıdaki hatayı alıyorum sebebi nedir

    exit status 1
    stray ‘\342’ in program

    Reply

    • mb

      7 Haziran 2018 at 10:45

      evet bu hatayı ben de alıyorum. düzeltemedim. Bu sorunu halleden var mı ??

      Reply

  7. yunus emre

    7 Ekim 2018 at 18:04

    solar panel kaç w ? akü varmı ve tipi ve degerleri nedir?

    Reply

  8. sef

    11 Nisan 2020 at 23:02

    Servo motorları raspberry pi ile döndürsek sorun çıkarır mı

    Reply

    • Yücel Yılmaz

      Yücel Yılmaz

      12 Nisan 2020 at 17:38

      Herhangi bir sıkıntı çıkarmaz. Sadece ilgili projeyi Raspberry Pi’ye göre revize etmeniz gerekecektir.

      Reply

  9. HALİL BOZKURT

    20 Ekim 2020 at 12:31

    Yapımın detaylı bir videosu var mı ? Ne kadar bir maliyet ortaya çıkıyor.

    Reply

  10. Duranka

    15 Ocak 2024 at 21:25

    ldr yerine kullanılabilecek daha kaliteli waterproof bir sensör önerebilirmisiniz

    Reply

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bak Bakalım ?

Lazer İşleme Makinesi Yapımı

Merhaba arkadaşlar,bu projemizde sizlerle birlikte lazer işleme makinesi yapımını göreceği…