Bu dersimizde güneş panelinden mümkün olabilen maksimum seviyede enerji alabilmek için güneş panelini otomatik olarak güneşe yönlendiren platform yapmayı öğreneceğiz. Güneş konumunu değiştirdikçe platformumuz güneşin konumunu takip edecektir. Paltformun üzerine bir güneş pili yerleştirilmiştir. Güneş pili de bir bataryayı şarz etmektedir. Bu şekilde gündüzleri bataryamızı maksimum seviyede şarz edip, geceleri bataryamızdan enerji alabiliriz.

Güneşin pozisyonunu tespit edebilmek için sistemde 4 adet ldr (foto direnç) kullanmıştır. Bunlardan ikisi yatay kontrol, diğer ikisi dikey kontrol içindir. Her bir ldrye devre şemasında görüldüğü şekilde birer tane 10klık direnç seri bağlanmıştır. Bu bağlantı sayesinde arduinonun analog A0, A1, A2 ve A3 girişlerine güneşin pozisyonuna göre yaklaşık 0 volt ile yaklaşık 5 volt arasında birbirinden farklı gerilimler düşer. Hangi ldr daha fazla ışık alıyorsa o ldrye ait analog girişte diğer analog girişlere nazaran daha fazla gerilim düşümü olacaktır. Arduino programımız sayesinde analog girişlere düşen gerilimler değerlendirilerek servolara sağa ya da sola dönmeleri için sinyal yollanır. A0 ve A1 girişlerindeki gerilimler yatay kontrolü, A2 ve A3 girişlerindeki gerilimler ise dikey kontrolü sağlayacaktır. Servoların harekete geçmesiyle ldrlerin üzerine düşen ışık şiddetleri eşitlendiğinde ldrlerin üzerine düşen dolayısıyla A0 ve A1 (yatay kontrol) pinleri ile A2 ve A3 (dikey kontrol) pinlerine düşen gerilimler birbirine eşit olacaktır. Yani A0 gerilimi = A1 gerilimi ve A2 gerilimi = A3 gerilimi olana kadar servolar hareket edecek ve platformun güneşe göre uygun pozisyon alması sağlanacaktır.

Malzeme listesi:
Arduino uno
Pan tilt servo motor montaj kiti
Bakırlı pertinaks
Baskı devre malzemeleri
4 adet 10 k direnç
4 adet ldr
2 adet servo
Güneş pili
Batarya
Bilgisayar
Bağlantı iletkenleri
El ve güç aletleri
Muhtelif vida ve civatalar
scriptaccess" value="always">







ISIS çizimi
ISIS çizimini konu ekinden indirebilirsiniz.


Arduino Shild ARES çizimi
Ares dosyasını konu ekinden indirebilirsiniz.




Fritzing çizimi:
Fritzing dosyasını orjinal konu ekinden indirebilirsiniz.


Arduino kodlarımız:
Arduino kodlarına ait dosyayı orjinalkonu ekinden indirebilirsiniz.
description">Kod:
    #include <Servo.h> 
     
    Servo yatay; 
    int pos = 90;   // Başlama pozisyonu
    int sens1 = A0; // LRD 1 pin
    int sens2 = A1; //LDR 2 pin
    int tolerance = 2;
   
    Servo dikey; 
    int pos2 = 90;   // Başlama pozisyonu
    int sens3 = A2; // LRD 3 pin
    int sens4 = A3; //LDR 4 pin
    int tolerance2 = 2; 
    void setup() 
    { 
      yatay.attach(9);  // Dijital 9 pini yatay servoya bağlanacak
      dikey.attach(10);  // Dijital 10 pini dikey servoya bağlanacak 
      pinMode(sens1, INPUT);
      pinMode(sens2, INPUT);
      pinMode(sens3, INPUT);
      pinMode(sens4, INPUT);      
      yatay.write(pos);
      dikey.write(pos2);      
      delay(2000); // a 2 seconds delay while we position the solar panel
    }  
     
    void loop() 
    { 
      int val1 = analogRead(sens1); // sensor 1 oku
      int val2 = analogRead(sens2); // sensor 2 oku
      int val3 = analogRead(sens3); // sensor 3 oku
      int val4 = analogRead(sens4); // sensor 4 oku    
      if((abs(val1 - val2) <= tolerance) || (abs(val2 - val1) <= tolerance)) {

      } else {    
        if(val1 > val2)
        {
          pos = --pos;
        }
        if(val1 < val2) 
        {
          pos = ++pos;
        }
      }
     
      if(pos > 180) { pos = 180; } 
      if(pos < 0) { pos = 0; } 
      
      yatay.write(pos);
      delay(60);



      if((abs(val3 - val4) <= tolerance2) || (abs(val4 - val3) <= tolerance2)) {

      } else {    
        if(val3 > val4)
        {
          pos2 = --pos2;
        }
        if(val3 < val4) 
        {
          pos2 = ++pos2;
        }
      }
     
      if(pos2 > 180) { pos2 = 180; } 
      if(pos2 < 0) { pos2 = 0; } 
      
      dikey.write(pos2);
      delay(60);      
    }
Orjinal konu ve gerekmesi halinde konu ekleri (Üyelik gerektirir.) için tıklayınız.