in

ÖğreticiÖğretici

ARDUİNO İLE GÜNEŞ TAKİP PANELİ YAPIMI

Merhaba arkadaşlar. Uzun bir aradan sonra tekrar devam edelim istedim ve dönüş projesi olarak ta basit ve bir o kadar işlevsel bir proje seçtim hazırsanız başlıyalım 🙂

Arduino İle Güneş Takip Eden Panel Yapımı

Öncelikle bu cihaza neden ihtiyaç duyarız bundan bahsedeyim.. Güneş panelleri temiz ve kolay enerji elde etmenin güzel bir yoludur. Bu panellerle bir çok şey yapılabilir telefon şarjından ev elektriğine kadar, ama tüm bunları yaparken olabildiğince verim almak isteriz. Güneş panellerinin de verimli elektrik üretebilmeleri için güneşi olabildiğince dik görmeleri gerekir tıpkı çanak anteni gibi 🙂 Ama tek fark uydu sabit yerinde dururken güneş hareket etmektedir. bizde bu sorun için şu kaynakta bulduğumuz bir projeyi derledik ve size sunmak istedik 🙂

Bu proje için daha önce bahsetmediğimiz bir devre elemanı olan LDR‘den kullanacağız.

Peki ya nedir bu LDR ?

LDR (Light Dependent Resistor), Türkçede “Işığa Bağımlı Direnç” anlamına karşılık gelmektedir. Bir diğer ismi de foto dirençtir. LDR her ne kadar bir direnç çeşidi olsa da aynı zamanda pasif bir sensördür. LDR’ler bulundukları devrelerde dış ortamdan aldıkları fiziksel bir değişim ile değişen direnç değerleri ile bir çıkış sağlarlar. Umarım anlaşılmıştır 🙂

Ldr Sembolü

LDR Sembolü
LDR Sembolü
LDR

İç Yapısı

LDR İç Yapısı
LDR İç Yapısı

Kısa bilgilendirmeden sonra isterseniz zaman kaybetmeden projeye geçelim 🙂

Malzeme Listesi

1- Herhangi Bir Arduino Modeli (Ben Nano Kullanacağım)

2- 2 Adet Servo Motor

3- 4 adet Ldr ve her biri için 10k direnç

4- Şase İçin Gerekli Parçalar

5- Breadboard ve Jumper kablolar

6- Yapıştırıcı Silikon, Maket vs

Not: Tüm bu malzemeleri elektronik parça satan yerlerde bulabilirsiniz yada şu ve bu adreslerden internet üzerinden güvenle sipariş edebilirsiniz.

Ayrıca eğer zamanım bol diyorsanız Çin’den de Aliexpress vasıtasıyla getirtebilirsiniz. Daha uygun fiyata gelecektir. 🙂

Şasenin Hazırlanması

Bu şase cnc kesim ancak siz evde kendinizde rahatlıkla karton vs tür malzemelerle yapabilisiniz 🙂

Şasinin SVG dosyasını buradan indirebilirsiniz. 🙂

Arduino İle Güneş Takip Eden Panel Devre Şeması

Not: Servo motor için ayrı güç kaynağı koydum bunun sebebi paneliniz ağır olursa servolar zorlayacak haliyle amper çekmek isteyecektir ve arduinonuz riske girecektir. 😉

Kendinizde buna benzer pcb ler geliştirebilirsiniz tamamen sizin hayal gücünüze kalmış. Hazır konu açılmışken gerçekten geliştirmeye açık bir proje 🙂

NOT: Arkadaşlar isterseniz panel den aldığınız enerjiyi uygun kondansatör yardımıyla arduinoya bağlarsanız kendi kendini besleyecektir minik bir hatırllatma 🙂

Yazılım

//DONANIM PLUS ELEKTRONİK
//MODİFİKASYON TOLGA SOYTEPE
//Arduino İle Güneş Takip Eden Panel Projesi
#include <Servo.h> // servo kütüphanesi


Servo yatayServo; // yatayServo servo
int servoY = 90;   // 90;     // yatayServo servo standı

int servoYLimitHigh = 180; //yatayServo max 180
int servoYLimitLow = 65; // 65 degrees MAX


Servo dikeyServo;   // Dikey Servo
int servoD = 90;  //dikey servo standı

int servoDLimitHigh = 120;
int servoDLimitLow = 15;


// LDR bağlantı pinleri
int ldrlt = A2; //LDR sol üst
int ldrrt = A3; //LDR sağ üst
int ldrld = A0; //LDR sol alt
int ldrrd = A1; //LDR sağ alt

void setup()
{
  Serial.begin(9600);
  yatayServo.attach(9); 
  dikeyServo.attach(10);
  yatayServo.write(180);
  dikeyServo.write(45);
  delay(3000);
}

void loop() 
{
  int lt = analogRead(ldrlt); // top left
  int rt = analogRead(ldrrt); // top right
  int ld = analogRead(ldrld); // down left
  int rd = analogRead(ldrrd); // down rigt
  
  // int dtime = analogRead(4)/20; // read potentiometers  
  // int tol = analogRead(5)/4;
  int dtime = 10;
  int tol = 50;
  
  int avt = (lt + rt) / 2; // Ortalama üst değer
  int avd = (ld + rd) / 2; // Ortalama alt değer
  int avl = (lt + ld) / 2; // Ortalama sol değer
  int avr = (rt + rd) / 2; // Ortalama sağ değer

  int dvert = avt - avd; // yukarı ile aşağının farkını hesapla
  int dhoriz = avl - avr;// sağ ile solun farkını hesapla
  
  
  Serial.print(avt);// Ortalama üst değer
  Serial.print(" ");
  Serial.print(avd); // Ortalama alt değer
  Serial.print(" ");
  Serial.print(avl); // Ortalama sol değer
  Serial.print(" ");
  Serial.print(avr); // Ortalama sağ değer
  Serial.print("   ");
  Serial.print(dtime);
  Serial.print("   ");
  Serial.print(tol);
  Serial.println(" ");
  
    
  if (-1*tol > dvert || dvert > tol) //farkın toleransta olup olmadığını kontrol edin dikey Servo açısını değiştirin
  {
  if (avt > avd)
  {
    servoD = ++servoD;
     if (servoD > servoDLimitHigh) 
     { 
      servoD = servoDLimitHigh;
     }
  }
  else if (avt < avd)
  {
    servoD= --servoD;
    if (servoD < servoDLimitLow)
  {
    servoD = servoDLimitLow;
  }
  }
  dikeyServo.write(servoD);
  }
  
  if (-1*tol > dhoriz || dhoriz > tol) // farkın toleransta olup olmadığını kontrol edin yatay Servo açısını değiştir
  {
  if (avl > avr)
  {
    servoY = --servoY;
    if (servoY < servoYLimitLow)
    {
    servoY = servoYLimitLow;
    }
  }
  else if (avl < avr)
  {
    servoY = ++servoY;
     if (servoY > servoYLimitHigh)
     {
     servoY = servoYLimitHigh;
     }
  }
  else if (avl = avr)
  {
    // boş
  }
  yatayServo.write(servoY);
  }
   delay(dtime);
}

Projede kullanılan yazılım kodlarını buradan indirebilirsiniz  🙂

Bir yazının daha sonuna geldik umarım faydalı olmuştur anlamadığınız veya kafanıza takılan yerler olursa yorumda veya kişisel sosyal medya hesaplarımdan ulaşabilirsiniz. Konu ile ilgili video eğer istenirse en kısa sürede yazıya eklenecektir. Kolay gelsin  🙂

Yazar Tolga Soytepe

Ara sıra yazılımcı :)

Yorumunuzu yazın

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

Bir Ampul Wifi Bilgilerinizi Nasıl Sızdırabilir

Robot Kol’un Yakın Tarihi – Neden İcat Edildi? Kronolojisi