Başa dön
Arduino ile Güneş Takip Sistemi Yapımı

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

Merhaba arkadaşlar bu yazımızda Arduino ile yapılan en popüler projelerden biri olan akıllı Güneş Takip Sistemi Projesi’nin Yapımı ve Kodlamasını inceleyeceğiz.

Güneş Takip Sistemi MDF Kesim Parçaları

Güneş Takip Projesi FULL SET

Proje, temelde güneş ışınlarının geliş açısına göre hareket etmesi esasına dayanmaktadır. Bu amaç doğrultusunda gün boyunca güneş ışınlarından maksimum verimlilikle yararlanmak amaçlanmıştır. Projenizde bulunan 2 adet Servo Motor sayesinde gelen güneş açılarına göre eksenler hareket edebilecektir.

 

Elektrik ihtiyacınızı desteklemek, kamp gezinizde veya elektrik sağlamak için bir karavanda güneş panelleri kurduysanız, bu proje ile panellerin doğru şekilde hizalandığından emin olabilirsiniz. Proje de panelinizi doğrudan güneşe hizalamak amacıyla bir dizi prensip üzerinde çalışan bir dizi farklı mekanizma mevcuttur. (Bknz. LDR Sensör)

İki temel izleyici türü vardır: tek ve çift eksenli izleyiciler. Tek eksenli izleyiciler her ay ayarlanır, böylece güneş pozisyonundaki mevsimsel değişiklikler hesaba katılır, daha sonra tek eksen güneşin gökyüzündeki günlük hareketini izlemek için kullanılır. Düello ekseni izleyicileri, güneşlerin günlük hareketini izlemek için bir eksen ve mevsimsel hareketi izlemek için başka bir eksen kullanarak aylık ayarlama ihtiyacını ortadan kaldırır. Tek eksenli güneş takip cihazı güneş enerjisi verimliliğini yaklaşık %25, çift eksenli takip cihazı yaklaşık %40 artırıyor.

Güneş takip ve kontrol sistemi, güneş panelinin doğu ve batı (sol ve sağ) tarafından ışık ölçümleri almak ve paneli doğrudan ışık kaynağına yönlendirmek için hangi yolu hareket ettireceğini belirlemek üzere tasarlanmıştır. Panel izleyiciyi çalıştırmak için bir servo kullanılır; bunlar çok çeşitli boyutlarda mevcuttur ve panel boyutunuza göre ölçeklendirilebilir. İzleyici ldr tek eksenli olmasına rağmen, iki sensör ve servo çift eksen kontrolü sağlamak için basitçe çoğaltılabilir.

Bu proje, Arduino programlamanın temellerini bildiğinizi varsayarak hazırlanmıştır.

Adım 1: Güneş Takip Cihazı İçin Gerekenler

Bu projeyi tamamlamak için ihtiyacınız olan öğelerin bir listesi aşağıda mevcuttur. Çift eksenli bir izleme standı yapmak istiyorsanız, servoları, LDR’leri ve dirençleri ikiye katlamanız gerekir.

Güneş panelinizin boyutuna ve ağırlığına bağlı olarak belirli servo modeli veya boyutu belirtilmemiştir. Bu projede kullanılan 9g analog servo motordur. Arduino ile her boyutta servo motor kullanabilirsiniz, ancak daha büyük servolar kendi güç kaynaklarına ihtiyaç duyacaktır.

Adım 2: Bileşenleri Birleştirin

Öncelikle bileşenleri güneş panelinize ve breadboard’a monte ederek başlamalısınız. LDR’ler (ışığa bağlı dirençler) veya PR’lar (foto-dirençler) değişen ışıkla direnci değiştirir. Değişen direnç Arduino’nun anlayacağı şekilde dijital voltaj sinyaline dönüştürülecek şekilde bağlanmaları gerekir. Servo, Arduino’nun PWM çıkışlarından biri ile kontrol edilir.

Solar izleyiciyi kalıcı olarak kuracaksanız, dirençleri ve LDR’leri gevşememeleri için birlikte lehimlemek gerekebilir. Sadece bu projeyi eğlenmek için deniyorsanız, breadboard iş görecektir.

LDR’lerin ve servo’nun Arduino’ya bağlanması için temel devre görselde gösterilmektedir.

R1 ve R2 dirençlerinin her biri 4.7K, PR1 ve PR2 iki LDR’dir ve servo herhangi bir motor olabilir. 9 gramdan daha büyük bir servo kullanıyorsanız, Arduino muhtemelen tam tork kapasitesine ulaşmak için yeterli gücü sağlayamayacaktır. Servoyu doğrudan kendi 5V güç kaynağı ile beslemeniz gerekecektir.

Kalıcı bir kurulum yapıyorsanız, dirençleri paneldeki LDR’lerin hemen yanına lehimlemek en iyisidir. Bu şekilde, kontrol kutusundan paneldeki sensörlere kadar tek bir 4 çekirdekli kablo çalıştırabilirsiniz, dört çekirdek 5V, Gnd olacak ve daha sonra LDR’lerden 1 ve 2 sinyalleri olacaktır. LDR’leriniz ve dirençleriniz birlikte lehimlendikten sonra, bunları güneş panelinize monte edebilirsiniz. LDR’leri panelin doğu ve batı (sol ve sağ) taraflarına güneşe bakacak şekilde monte edin. Çerçevenin hiçbir şekilde güneşi engellemediğinden emin olun.

Bu projede yalnızca Ardunio’nun 5V güç kaynağını hem dirençlere hem de servoya dağıtmak için bir breadboard kullanılmıştır.

Servo, güneş panelinizin boyutuna göre boyutlandırılmalıdır. Bu örnekte kullanılan panel küçük ve nispeten hafiftir; bu nedenle küçük bir servo kullanıldı. Daha büyük bir servo çalıştırmak için, servoyu harici olarak çalıştırmanız gerekir. Harici güç kaynakları topraklamasını Arduino GND‘ye bağladığınızdan emin olun, aksi takdirde PWM kontrol sinyali çalışmaz.

3. Adım: Kodu Yükleyin

Şimdi kodu Arduino’nuza yükleyebilirsiniz.

Kod, ekteki resimde gösterilmektedir.

Güneş Takip Sistemi kodunu indirmek için tıklayın.

Temel kod, her iki rezistörün ışık yoğunluğunu ölçer, daha sonra hangisinin daha fazla ışık aldığını görmek için ikisini karşılaştırır. Fark küçük bir eşik değerden fazlaysa Arduino, servoya paneli ışık kaynağına doğru yönlendirmek için bu yönde hareket etmesini söyler. Işık her iki sensörde belirli bir seviyenin altına düşerse, gece vakti olarak algılanır ve panel gün doğumu için tekrar doğuya bakacak şekilde konumlandırılır.

Adım 4: Autodesk Devreleri Şeması ve Simülatörü

Autodesk Circuits’de oluşturulan kurulum, kod da gömülüdür ve simülasyon modu başlatıldıktan sonra LDR’lerdeki ışık yoğunlukları sürüklenerek simüle edilebilir.

Adım 5: Sensör Hatasını Kalibre Edin

LDR’ler, dirençler ve kullanılan telin direnci arasındaki farklılıklar nedeniyle, aynı miktarda ışık alsalar bile her iki sensörden alınan sinyal arasında bir fark olacaktır. Hesaplamaya bir kalibrasyon ofseti ekleyerek bu dikkate alınır, bu sayının kodunuza kurulumunuza göre ayarlanması gerekir. Bu kalibrasyon faktörünü kodda belirtildiği yere ayarlayın,

Satır 13: int kalibrasyonu = 204.

Bu faktörü belirlemenin en doğru yolu, ışığı her iki sensör arasında eşit olarak parlatmak ve daha sonra doğu ve batı sensörünün çıkış değerlerini okumak için bilgisayarınızdaki ekranı kullanmaktır. Bu iki değer arasındaki fark kalibrasyon ofseti olacaktır. LDR’ler çok hassastır, bu nedenle izleyici yalnızca aralarındaki fark kodda 15’ten büyük olduğunda hareket eder, aksi takdirde sürekli olarak ileri ve geri takip eder ve gücü boşa harcar.

Seri arabirime aşina değilseniz, her iki sensöre de ışık eşit olarak verildiğinde izleyici hareketsiz kalana kadar bu değerle oynayabilirsiniz.

Adım 6: Tek Eksenli Güneş Takip Sistemi Standı Yapımı

Bu talimat, Arduino kontrolünün etrafında daha fazla odaklanmış ve mevcut çok çeşitli paneller ve boyutlar nedeniyle bir izleme standı yapmayı detaylandırmak için tasarlanmamış olsa da, bazı temel işaretçilerle birlikte tasarım hakkında kısa bir taslaktır diyebiliriz.

İdeal olarak stand, güçlü, dayanıklı ve dış mekan kullanımına uygun olması için alüminyumdan yapılmalıdır, ancak ahşap, kontrplak veya PVC borudan da yapılabilir.

Stand, temel olarak iki parçadan oluşur. Panel desteğinin döndüğü bir dönme noktası etrafında birleştirilirler. Servo tabana monte edilir ve kol panel desteğini harekete geçirir.

Panel, servolar üzerindeki denge yükünü minimumda tutmak için panel desteğinden mümkün olduğunca az çıkmalıdır. İdeal olarak, pivot noktası panelin ve panel desteğinin ağırlık merkezine yerleştirilmelidir, böylece her zaman pratik olarak mümkün olmasa da, servo panelin hangi yöne baktığına bakılmaksızın üzerine eşit bir yük yerleştirilmiş olur.

Daha ağır paneller için, panelin her iki yanında birer tane olmak üzere iki servo kullanılabilir. Geometri aynı olmalı ve servolar aynı tip / model olmalıdır. Daha sonra servo kodunu yazılımda çoğaltarak her iki servise de aynı referans pozisyonu verilebilir ve paneli harekete geçirmek için birlikte hareket edebilirsiniz.

Çok ağır paneller veya güneş panelleri için, servoların daha güçlü step motorlarla değiştirilmesi gerekecektir.

 

Şimdi Kurulum Aşamalarına Geçelim:

 

Resim 20‘deki haline Ulaştığınızda Güneş Takip Projenizin Mekanik Kurulumu Tamamlanmıştır.

 

Farklı Bir Devre Şeması

 

Arduino Kodu

 

#include <Servo.h> 
Servo horizontal; // Yatay Servo Motor
int servoh = 90;   
int servohLimitHigh = 180;
int servohLimitLow = 65;
Servo vertical;   // Dikey Servo 
int servov = 90;    
int servovLimitHigh = 120;
int servovLimitLow = 15;
int ldrlt = 2; // Sol Üst LDR Sensör Pini   
int ldrrt = 3; //Sağ Üst LDR Sensör Pini
int ldrld = 0; //Sol Alt Sensör Pini
int ldrrd = 1; //Sağ Alt Sensör Pini
void setup()
{
 Serial.begin(9600);
 horizontal.attach(9); // Yatay Ekseni Servo Motor Pini
 vertical.attach(10); // Dikey Ekseni Servo Motor Pini
 horizontal.write(180);
 vertical.write(45);
 delay(3000);
}
void loop() 
{
 int lt = analogRead(ldrlt); // Sol Üst LDR Sensör 
 int rt = analogRead(ldrrt); // Sağ Üst LDR Sensör
 int ld = analogRead(ldrld); // Sol Alt Sensör
 int rd = analogRead(ldrrd); // Sağ Alt Sensör
 
 int dtime = 10;
 int tol = 50;
 
 int avt = (lt + rt) / 2; // Üst Sensör Verilerinin Ortalaması
 int avd = (ld + rd) / 2; // Alt Sensör Verilerinin Oratalaması
 int avl = (lt + ld) / 2; // Sol Sensör Verilerinin Ortalaması
 int avr = (rt + rd) / 2; // Sağ Sensör Verilerinin Ortalaması
 int dvert = avt - avd; // Alt ve Üst Sensörlerin Farkı
 int dhoriz = avl - avr;// Sağ ve Sol Sensörlerin Farkı
 
 
 Serial.print(avt);
 Serial.print(" ");
 Serial.print(avd);
 Serial.print(" ");
 Serial.print(avl);
 Serial.print(" ");
 Serial.print(avr);
 Serial.print("   ");
 Serial.print(dtime);
 Serial.print("   ");
 Serial.print(tol);
 Serial.println(" ");
 
   
 if (-1*tol > dvert || dvert > tol)
 {
 if (avt > avd)
 {
   servov = ++servov;
    if (servov > servovLimitHigh) 
    { 
     servov = servovLimitHigh;
    }
 }
 else if (avt < avd)
 {
   servov= --servov;
   if (servov < servovLimitLow)
 {
   servov = servovLimitLow;
 }
 }
 vertical.write(servov);
 }
 
 if (-1*tol > dhoriz || dhoriz > tol)
 {
 if (avl > avr)
 {
   servoh = --servoh;
   if (servoh < servohLimitLow)
   {
   servoh = servohLimitLow;
   }
 }
 else if (avl < avr)
 {
   servoh = ++servoh;
    if (servoh > servohLimitHigh)
    {
    servoh = servohLimitHigh;
    }
 }
 else if (avl = avr)
 {
   
 }
 horizontal.write(servoh);
 }
  delay(dtime);
}

Güneş Takip Sistemi Örnek Videoları




Hepsi bu kadar. Umarım Arduino ile Akıllı Güneş Takip Sistemi Yapımı projemizi beğenmiş ve yeni bir şeyler öğrenmişsinizdir.

Memnun kaldıysanız aşağıda bulunan “yukarı ok“a tıklayarak +1 puan verebilirsiniz.

Diğer Güncel Arduino Projeleri için BURAYA TIKLAYABİLİRSİNİZ.

Sizde Robotlara ve Maker’lığa Meraklıysanız Robotik Marketimiz ROBOCOMBO‘yu Ziyaret Edebilirsiniz.

 

Robot El Yapımı – İlginç Arduino Projeleri

Videodaki Robot El Ürünümüzü Satın Almak İsterseniz Bağlantıya Göz Atabilirsiniz.

Okuduğunuz İçin Teşekkürler.