Arduino ile güneş takip sistemi yapımı (ldr sensörlü)

👤 Yazar: ozcan 📅 Tarih: 08.05.2026 23:35 👁️ Görüntüleme: 143

Arduino ile güneş takip sistemi yapacağız. Ldrlerin konumları önemli. A0 ve a1 deki ldrler yatay eksen kontrolü için A0 ve A3 de dikey eksen için takip yapmaya kullanılacaktır. Devreyi aşağıda şekilde kurabilirsiniz.

Arduino ile güneş takip sistemi

LDR Yerleşim Mantığı

Yatay Hareket: LDR 1 (Sol) ve LDR 2 (Sağ) arasındaki ışık farkına bakılır.

Dikey Hareket: LDR 1 (Alt-Sol) ve LDR 3 (Üst-Sol) arasındaki ışık farkına bakılır.

Ldrler arasına separatör eklemek hassasiyeti artırır. Kodumuz aşağıdadır.


#include <servo.h>

Servo dikeyServo;  // 1. Servo (270 Derece) - Pin 9
Servo yatayServo;  // 2. Servo (360 Derece) - Pin 10

// LDR Pin Tanımlamaları
const int ldr1 = A0; // Sol Alt (Referans noktan)
const int ldr2 = A1; // Sağ
const int ldr3 = A2; // Üst (LDR 1'in üstünde)

// Ayarlar
int dikeyPos = 45;    // Başlangıç dikey açısı (Türkiye için ideal başlangıç)
int tolerans = 25;    // Gereksiz titremeyi önlemek için hassasiyet eşiği
int hiz360 = 90;      // 360 derece servo durma noktası (Genellikle 90)

void setup() {
  dikeyServo.attach(9);
  yatayServo.attach(10);
  
  // Başlangıç pozisyonu
  dikeyServo.write(dikeyPos);
  yatayServo.write(hiz360); 
  
  Serial.begin(9600);
}

void loop() {
  int v1 = analogRead(ldr1); // Sol Alt
  int v2 = analogRead(ldr2); // Sağ
  int v3 = analogRead(ldr3); // Üst

  // --- YATAY HAREKET (1 ve 2 arasındaki fark) ---
  // Eğer Sağ (v2) daha çok ışık alıyorsa sağa dön
  if (abs(v1 - v2) > tolerans) {
    if (v1 > v2) {
      yatayServo.write(100); // Sola yavaş dönüş
    } else {
      yatayServo.write(80);  // Sağa yavaş dönüş
    }
  } else {
    yatayServo.write(hiz360); // Fark azsa dur
  }

  // --- DİKEY HAREKET (1 ve 3 arasındaki fark) ---
  // Eğer Üst (v3) daha çok ışık alıyorsa yukarı kalk
  if (abs(v1 - v3) > tolerans) {
    if (v3 > v1) {
      if (dikeyPos < 100) dikeyPos++; // Yukarı (Türkiye sınırlarına göre)
    } else {
      if (dikeyPos > 15) dikeyPos--;  // Aşağı
    }
    dikeyServo.write(dikeyPos);
  }

  delay(30); // Okuma stabilitesi için kısa bekleme
}

Mekanik Montaj İçin Kritik Notlar

  • Dikey Eksende LDR 1 ve 3: Bu iki sensörün arasına yatay bir "siper" (küçük bir parça plastik veya karton) koymamız şart. Aksi takdirde ışık her ikisine de aynı açıyla çarpar ve yukarı/aşağı farkını ayırt edemez.

  • Yatay Eksende LDR 1 ve 2: Aynı şekilde bunların arasına da dikey bir bölme koymalıyız ki sağdan gelen ışık soldakini gölgede bıraksın.

  • Kodda dikeyPos değerini 15 ile 100 derece arasında sınırlandırıldı. Bu, Türkiye'deki güneş açısı için yeterlidir ve mekanizmanın yere çarpmasını önler.

  • Bu servo tipinde write(90) dur komutudur. Eğer servon 90 değerinde yavaşça dönmeye devam ediyorsa, kodun başındaki hiz360 değişkenini 88 veya 92 yaparak tam durduğu noktayı bulmalıyız.

💬 Yorumlar

Henüz yorum yapılmamış. İlk yorumu siz yapın!

Bir Yorum Bırakın

Güvenlik Kontrolü:

Yenidir.com
↑ Sayfa Başı
📞 İletişim ✉ E-Posta Gönder
© 2026 Yenidir.com
Yenidir CMS V0.1