Güneşi Takip Eden Robot Yapımı (Arduino Solar Tracker)

14 637

Bugünkü uygulamamızda arduino ile güneşi takip eden robot yapacağız.Bunun için ldr sensörleri kullanmak en doğru karar olacaktır.Ldr ışık sensörleri ışığın yoğunluğuyla direnç değiştiren sensörlerdir.Bizim yapmamız gereken güneşli ortamdaki direnç değeri ve gölgedeki direnç değerlerine göre algoritmayı oluşturmak olacaktır.Dönüşleri sağlamak için de servo motor kullanacağız.Hepsi bu kadar.Yapım aşamalarına geçebiliriz.

Malzemeler:

  1. Arduino
  2. 2 Adet servo motor
  3. 4 Adet LDR sensör
  4. 4 Adet 10k direnç
  5. 2 Adet 10k potansiyometre

Elektronik Devre Şeması:

 

Ldr sensörlerin konumlarını aşağıdaki gibi yapabilirsiniz.

Güneş Takip Kod

#include <Servo.h> // include Servo library
 
Servo horizontal; // horizontal servo
int servoh = 90; // stand horizontal servo
 
Servo vertical; // vertical servo
int servov = 90; // stand vertical servo
 
// LDR pin connections
// name = analogpin;
int ldrlt = A0; //LDR top left
int ldrrt = A1; //LDR top rigt
int ldrld = A2; //LDR down left
int ldrrd = A3; //ldr down rigt
 
void setup()
{
Serial.begin(9600);
// servo connections
// name.attacht(pin);
horizontal.attach(9);
vertical.attach(10);
}
 
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(A4)/20; // read potentiometers
int tol = analogRead(A5)/4;
 
int avt = (lt + rt) / 2; // average value top
int avd = (ld + rd) / 2; // average value down
int avl = (lt + ld) / 2; // average value left
int avr = (rt + rd) / 2; // average value right
 
int dvert = avt - avd; // check the diffirence of up and down
int dhoriz = avl - avr;// check the diffirence og left and rigt
 
if (-1*tol > dvert || dvert > tol)
{
if (avt > avd)
{
servov = ++servov;
if (servov > 180)
{
servov = 180;
}
}
else if (avt < avd)
{
servov= --servov;
if (servov < 0)
{
servov = 0;
}
}
vertical.write(servov);
}
 
if (-1*tol > dhoriz || dhoriz > tol)
{
if (avl > avr)
{
servoh = --servoh;
if (servoh < 0)
{
servoh = 0;
}
}
else if (avl < avr)
{
servoh = ++servoh;
if (servoh > 180)
{
servoh = 180;
}
}
else if (avl == avr)
{
// nothing
}
horizontal.write(servoh);
}
delay(dtime);
}

 

 

Bunları da beğenebilirsin

Cevap bırakın

E-posta hesabınız yayımlanmayacak.

14 Yorum

  1. emre

    sezgin bey benimde bu sistemden yapmam gerekiyor bana yardımcı olurmusunuz ?

    1. ertugrul sayar

      Buyur ne konuda yardım istiyorsun

  2. ertugrul sayman

    Sensörü ve motorları nasıl bağladınız(mekanik olarak) bilgi verirseniz sevinirim

  3. yılmaz İNAL

    sezgin bey burda potansiyometre kullanma amaçımız ney? potansiyometreyi kullanmasak olurmu? tşk

    1. Sezgin GÜL

      A4 e takılan sistemin yenilenme hızını ayarlıyor . A5 deki de referans alınacak ışık şiddeti değerini ayarlamayı sağlıyor.

  4. Koray

    merhaba kolay gelsin. Bende bu sistemin aynısını kurdum horizontal düzlemde hareket eden motor çalışıyor fakat vertical düzlemde çalışması gereken motor titriyor sadece A2 pinine bağlı ldryi elimle kapattığım zaman çalışıyor. Sorun ne olabilir acaba yada başınıza gelen bu tarzda bi problemi nasıl çözdünüz yardımcı olurmusunuz ?

    1. Sezgin GÜL

      Titreme, gerilim veya akımın yetersizliğinden kaynaklanır

  5. onur

    Merhaba elibize saglik, ancak proje resimlerini daha ayrintili ve fazla verebilirseniz mutlu oluruz. Kolay gelsin

  6. emre

    Potansiyometreleri nerede kullanıyoruz bilgi verebilir misiniz ?

  7. emre

    tasarım harika 6 tane fotovoltaik hücre monte etmek istiyorum üstüne LDR leri nasıl monte etmem gerekiyor. ikinci 6 hücreyi döndürebilecek güçte servo motor önerebilirmisiniz ?

  8. Yakup

    Bana bu tasarım hakkında bilgi verirmisiniz.

  9. meho

    siz bi harikasınız , helal olsun , mukemmel . çok saolun

  10. Ergün

    LDR yerine fotovoltaik pilde kullanılabilirdi.

    1. Sezgin GÜL

      fotovoltaik pil zaten güneş paneli oluyor. Ldr ışığın şiddetini aldığı için kullanılıyor.