Güneş Takip Sistemi

Başlatan eml581, 19 Haziran 2016, 12:54:26

eml581

Merhaba Arkadaşlar
Dersim için yaptığım güneş takip sistemini sizlerle paylaşmak istedim gerekli kodlar ve devre şemaları aşağıdadır.
Kullanılan Malzemeler:
Arduino Nano
4 Adet ldr
4 adet 10k Direnç
2 adet  servo
mekanizma
güneş paneli
Projeninin mekanizma kısmı 3d printer ile basılmıstir Arduino programı ino dosyası şeklinde 3d baskının oldugu sitede mevcuttur dosyaları aşağıda linkdedir
Bana her konuda yardımcı olan @dursuncemal @MrDarK abilerimede teşşekkür ederim.

http://www.thingiverse.com/thing:115242/#files

https://www.facebook.com/eml581/videos/993814010733994/





#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 = 0; //LDR top left A0
int ldrrt = 1; //LDR top rigt A1
int ldrld = 2; //LDR down left A2
int ldrrd = 3; //ldr down rigt A3
 
void setup()
{
Serial.begin(9600);
// servo connections
// name.attacht(pin);
horizontal.attach(9, 1000, 2000);
vertical.attach(10, 1000, 2000);
}
 
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 = 20;//change moving speed
int tol =10; // change tolerance between LDR`s
 
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) // check if the diffirence is in the tolerance else change vertical angle
{
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) // check if the diffirence is in the tolerance else change horizontal angle
{
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);
}


yolcu27

paylaşım için teşekkürler bende 3d yazıcı yapma aşamasındayım bitirince böyle bir çalışma yapmak isterim açıkcası ama bağlantı şemasını göremedim verdiğiniz linkte.

MrDarK

Hayırlı olsun birşeyler başarmış olmana çok sevindim :) Sözünü tuttuğun için teşekkürler
Picproje Eğitim Gönüllüleri ~ MrDarK

aydınD

Emeğiniz için tebrikler
Paylasiminiz için teşekkürler

eml581

Alıntı yapılan: yolcu27 - 19 Haziran 2016, 14:47:33
paylaşım için teşekkürler bende 3d yazıcı yapma aşamasındayım bitirince böyle bir çalışma yapmak isterim açıkcası ama bağlantı şemasını göremedim verdiğiniz linkte.

kodda bağlantılar için bilgiler veriliyor hocam Zaten bağlantı yapması kolay arduino modüler bi platform  oldugundan dolayı
yardımcı olurum konuya mesaj atarsanız herhangi bir sorunda.

mesaj birleştirme:: 20 Haziran 2016, 14:49:09

Alıntı yapılan: MrDarK - 20 Haziran 2016, 09:43:14
Hayırlı olsun birşeyler başarmış olmana çok sevindim :) Sözünü tuttuğun için teşekkürler

teşekkürler yunus abi devamı gelicek :)

yolcu27

Alıntı yapılan: EnesYazıcı - 20 Haziran 2016, 14:48:32
kodda bağlantılar için bilgiler veriliyor hocam Zaten bağlantı yapması kolay arduino modüler bi platform  oldugundan dolayı
yardımcı olurum konuya mesaj atarsanız herhangi bir sorunda.

mesaj birleştirme:: 20 Haziran 2016, 14:49:09

teşekkürler yunus abi devamı gelicek :)


bilgilendirme için teşekkür ederim kodu inceleme vaktim olmamıştı. Bir ara bakayım

yolcu27

aradan zaman zaman geçti ve 3d yazımı yaptım:D   aklıma bu proje geldi bir bakayım dedim ama linkte hangi bağlantıyı yapacağımı yazan açıklamayı bulamadım henüz.  ldr leri kod içinde yazan açıklama ile nerelere bağlanması gerektiğini anladım fakat. arduino uno kartımda servo motorları nasıl kontrol etmem gerektiğini çıkartamadım. elimde 2 tane L293 bulunan motor kontrol shield var. bunun ile yapabilir miyim?

Cemre.

Elindekiler RC servo değil mi? Minik olanlardan? Motor shield falan gerekmiyor. +5 GND bağla. Sinyal ucuna da arduino'dan Servo kütüphanesiyle bir pin ataması yapıp oraya bağla. Bu kadar. Servo için sürücü vs gerekmiyor.

yolcu27

evet elimdekiler bu mavi servo motorlardan. ozaman ben parçaları basayım bir şekilde çalıştırırım diye düşünüyorum:) arduino uno ile yapmayı planlıyorum kodlar aynı oluyor bildiğim kadarı ile bu minik nanolar ile

Cemre.

Arduino'da farketmiyor evet.

diot

Bir arkadaş yüksek lisans için benzeri bir proje yapıyordu fakat. bu şekilde ldr li değil. Sistem ay,gün ve saate göre güzeş konumunu hesaplayıp pozisyon alacaktı. Uzun zamandır kendisini görmediğimden projenin son durumu nedir bilmiyorum.
Sanki bu tür bir uygulama ldrli uygulamadan daha mantıklı gibi geliyor bana.

Cemre.

@diot hocam ben bahsettiğiniz projeyi lisans bitirmesi olarak yaptım geçen yıl :) dediğiniz gibi ldr'den cok daha kesin sonuclar elde ediyorsunuz.