1000 TL Üzeri Alışverişlerde Ücretsiz Kargo ve Türkiye'nin Her Yerine 59,90₺

Arduino ile Akıllı Güneş Takip Sistemi - Arduino Projeleri | Robocombo

Arduino ile Akıllı Güneş Takip Sistemi - Arduino Projeleri | Robocombo

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:

 

 

 Güneş Takip Projenizin Mekanik Kurulumu Tamamlanmıştır.  

 

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ı

 

 

                                                                                        
Etiketler: Arduino Akıllı Güneş Takip Sistemi,Güneş Takip Sistemi,Arduino Güneş Takip Sistemi,
Eylül 03, 2021
Listeye dön
cultureSettings.RegionId: 0 cultureSettings.LanguageCode: TR
Çerez Uyarısı

Alışveriş deneyiminizi iyileştirmek için yasal düzenlemelere uygun çerezler (cookies) kullanıyoruz. Detaylı bilgiye Gizlilik ve Çerez Politikası
sayfamızdan erişebilirsiniz.