Elektrik Elektronik Teknolojisi Alan Temrinleri

 
Hogeldiniz Ziyareti. Ltfen giri yapn veya kayt olun.

Kullanc adnz, ifrenizi ve aktif kalma sresini giriniz

Gnderen Konu: 4. 2 Eksen Arduino Shild Güneþ Paneli  (Okunma says 149706 defa)

0 ye ve 3 Ziyareti konuyu incelemekte.

04 Eyll 2015, 21:11:29
Bu dersimizde güneþ panelinden mümkün olabilen maksimum seviyede enerji alabilmek için güneþ panelini otomatik olarak güneþe yönlendiren platform yapmayý öðreneceðiz. Güneþ konumunu deðiþtirdikçe platformumuz güneþin konumunu takip edecektir. Paltformun üzerine bir güneþ pili yerleþtirilmiþtir. Güneþ pili de bir bataryayý þarz etmektedir. Bu þekilde gündüzleri bataryamýzý maksimum seviyede þarz edip, geceleri bataryamýzdan enerji alabiliriz.

Güneþin pozisyonunu tespit edebilmek için sistemde 4 adet ldr (foto direnç) kullanmýþtýr. Bunlardan ikisi yatay kontrol, diðer ikisi dikey kontrol içindir. Her bir ldrye devre þemasýnda görüldüðü þekilde birer tane 10klýk direnç seri baðlanmýþtýr. Bu baðlantý sayesinde arduinonun analog A0, A1, A2 ve A3 giriþlerine güneþin pozisyonuna göre yaklaþýk 0 volt ile yaklaþýk 5 volt arasýnda birbirinden farklý gerilimler düþer. Hangi ldr daha fazla ýþýk alýyorsa o ldrye ait analog giriþte diðer analog giriþlere nazaran daha fazla gerilim düþümü olacaktýr. Arduino programýmýz sayesinde analog giriþlere düþen gerilimler deðerlendirilerek servolara saða ya da sola dönmeleri için sinyal yollanýr. A0 ve A1 giriþlerindeki gerilimler yatay kontrolü, A2 ve A3 giriþlerindeki gerilimler ise dikey kontrolü saðlayacaktýr. Servolarýn harekete geçmesiyle ldrlerin üzerine düþen ýþýk þiddetleri eþitlendiðinde ldrlerin üzerine düþen dolayýsýyla A0 ve A1 (yatay kontrol) pinleri ile A2 ve A3 (dikey kontrol) pinlerine düþen gerilimler birbirine eþit olacaktýr. Yani A0 gerilimi = A1 gerilimi ve A2 gerilimi = A3 gerilimi olana kadar servolar hareket edecek ve platformun güneþe göre uygun pozisyon almasý saðlanacaktýr.

Malzeme listesi:
Arduino uno
Pan tilt servo motor montaj kiti
Bakýrlý pertinaks
Baský devre malzemeleri
4 adet 10 k direnç
4 adet ldr
2 adet servo
Güneþ pili
Batarya
Bilgisayar
Baðlantý iletkenleri
El ve güç aletleri
Muhtelif vida ve civatalar

<iframe width="640" height="385" src="//www.youtube.com/embed/1K_LSgkT6h4?fs=1&start=" frameborder="0" allowfullscreen></iframe>







ISIS çizimi
ISIS çizimini konu ekinden indirebilirsiniz.


Arduino Shild ARES çizimi
Ares dosyasýný konu ekinden indirebilirsiniz.




Fritzing çizimi:
Fritzing dosyasýný konu ekinden indirebilirsiniz.


Arduino kodlarýmýz:
Arduino kodlarýna ait dosyayý konu ekinden indirebilirsiniz.
Kod:
Kodlari sadece uyeler gorebilir. Lutfen Uye Olun ya da Giris Yapin.
« Son Dzenleme: 30 Eyll 2016, 22:57:02 Gnderen: fatek »


iletiþim: 0542 343 09 15
 

11 Haziran 2016, 15:09:12
Yantla #1
Badwet

leti:

Hocam Merhaba youtube kanalýndan da yazmýþtým ben tek eksen  yani doðu Batý ekseninde dc motor ile çalýþan bir güneþ takip devresi yapmak istiyorum.arduino'ya yeni baþladým ve kendim biraz kod yazdým ama iþin içinden çýkamadým konuyu özetlemek gerekirse doðu batý ekseninde çalýþacak ,sistemde doðuda ve batýda birer limit sw olacak.2 ldr güneþi takip ederek batýya kadar gelecek ve  batýdaki lm sw e bastýðýnda gün batmayacaðý için ldr ler okumaya devam edecek ne zaman ki karanlýk iyice çöktüðünde panel ertesi güne hazýrlanmak için doðuya doðru yönelecek.doðudaki sw'e bastýðýnda panel duracak ve ertesi günü bekleyecek.yazdýðým kodlarý bu iþin bir kýsmýný hallettim fakat doðuda ki sw'e bastýðýnda sistem orada kalýyor devamlýlýðýný saðlayamýyorum.þu an cep telefonundan yazýyorum kodlarý gönderemiyorum.kodlama konusunda Yardýmýnýza ihtiyacým var.
 

11 Haziran 2016, 16:03:43
Yantla #2
Düþüneyim biraz yardýmcý olmaya çalýþacaðým. Zor bir þey deðil.
« Son Dzenleme: 11 Haziran 2016, 16:36:03 Gnderen: fatek »
iletiþim: 0542 343 09 15
 

11 Haziran 2016, 17:19:22
Yantla #3
Badwet

leti:

Yazmayý unutmuþum dc motorun devir yönünü röle ile + - nin yerini deðiþtirerek yapacaðým. Yani 2 tane röle kullanacaðým.dc motor da linear motor dedikleri tarzda bir motor olacak youtube da görmüþtüm eleman yapmýþ ama onun sistemi arduino ile ama sadece zaman ayarlamasý yaparak paneli döndürüyordu.yarýn evdeki bilgisayarýmdan daha detaylý anlatabilirim
« Son Dzenleme: 11 Haziran 2016, 17:22:31 Gnderen: Badwet »
 

11 Haziran 2016, 19:29:11
Yantla #4
iletiþim: 0542 343 09 15
 

11 Haziran 2016, 20:52:00
Yantla #5
Badwet

leti:

« Son Dzenleme: 11 Haziran 2016, 20:54:10 Gnderen: fatek »
 

12 Haziran 2016, 16:37:35
Yantla #6
Badwet

leti:

Tekrar merhaba yazdýðým(yazmaya çalýþtýðým diyelim) kodlar þöyle ;


const int sensorPinA0 = A0;    // doðu ldr
const int sensorPinA1 = A1;    // batý ldr
const int pmotorPinA0 = 12;    // doðu röle ucu
const int pmotorPinA1 = 11;    // batý röle ucu
const int switch1Pin = 5;      //doðu limit sw
const int switch2Pin = 6;      //batý limit sw

// variables:
int sensorValueA0 = 0;         
int sensorValueA1 = 0;         
int switch1val= digitalRead(switch1Pin);
int switch2val= digitalRead(switch2Pin);


void setup() {
 
   
  Serial.begin(9600);
   
    pinMode(5, INPUT);
    pinMode(6, INPUT);
    pinMode(12, OUTPUT);
    digitalWrite(12, LOW);
    pinMode(11, OUTPUT);
    digitalWrite(11, LOW);
   
   
}

void loop() {
  // read the sensor:
  sensorValueA0 = analogRead(sensorPinA0);
  sensorValueA1 = analogRead(sensorPinA1);
  switch1val= digitalRead(switch1Pin);
  switch2val= digitalRead(switch2Pin);
  int Rate1 = analogRead(sensorPinA0);//Doðu LDR digital deðeri
  int Rate2 = analogRead(sensorPinA1);//Batý LDR digital deðeri
 
 
    if (Rate1 == 512){ //LDR max digital deðerinin yarýsýný kullandým hassasiyet gayet iyi.
      digitalWrite(12, HIGH);//motor doguya döner
      digitalWrite(11, LOW);}
     
   if (Rate2 == 512){ 
      digitalWrite(11, HIGH);//motor batýya döner
      digitalWrite(12, LOW);}
     
    if (Rate1 == Rate2){
      digitalWrite(12, LOW);//her iki deðer eþit ise motor durur.
      digitalWrite(11, LOW);}

    if (Rate1 == Rate2 && switch1val == HIGH){//her iki deðer eþit ise ve batý sw'i (sw1) basýldý ise motoru doðuya döndür
      digitalWrite(11, HIGH);
      digitalWrite(12, LOW);
      delay(12000);//motorun doðuya dönmesi için gerekli zaman
      }

    if (switch2val == HIGH){//doðu sw'i (switch 2)basýldý ise motoru durdur.
      digitalWrite(11, LOW);
      digitalWrite(12, LOW);}
     
 
      }


Yazmaya çalýþtýðým kodlar böyle;
Ekte'de kabaca yapmaya çalýþtýðým sistemin þemasý var çizimde ufak kusurlar olmuþ olabilir.

Düzeltme:çizimde switcler için pulldown dirençlerini çizmeyi unutmuþum.
« Son Dzenleme: 12 Haziran 2016, 16:39:39 Gnderen: Badwet »
 

12 Haziran 2016, 16:50:05
Yantla #7
Hangi motoru kullanacaksýnýz? Kullanacaðýnýz motorun özellikleri nelerdir?
iletiþim: 0542 343 09 15
 

12 Haziran 2016, 17:00:33
Yantla #8
Badwet

leti:

kullanacaðým motor þarjlý matkap motoru olacak izlediðim videonun linkinide atayým sizinde aklýnýzda þekillensin

 

12 Haziran 2016, 17:14:37
Yantla #9
Güzelmiþ. Bakalým.Yapmaya çalýþalým bir þeyler.
iletiþim: 0542 343 09 15
 

12 Haziran 2016, 17:46:03
Yantla #10
Sizin yazdýðýnýz ve videodaki kodlarý inceledim. Her ikisi de hoþuma gitmedi. Güneþ ýþýnlarýnýn geldiði yöne göre eþ zamanlý olarak motor, paneli hareket ettirmeli. Bunu dc motorla birebir eþ zamanlý yapmak zor zaten, hatta imkansýz gibi. Ancak küçük bir açý farkýyla panelin güneþ ýþýnlarýnýn yönünü takip etmesi saðlanabilir. Örnek video da da öyle yapýlmýþ. Sistem güneþ ýþýnlarýnýn geldiði yönü 5 saat boyunca 23 dakika aralýklarla takip ediyor. Açý kaybolmuþsa motoru 800 ms süre ile biraz daha döndürüyor. Bu sürede kullanýlan mekanizmanýn ve motorun dönme hýzýna göre farklý uygulamalar için deðiþiklik arz edecektir. Sistemi daha verimli kullanabilmek için kodlamada deðiþiklik yapýlmasý gerekir. Ortaya bir þeyler çýkarýnca konuya cevap býrakýrým.
iletiþim: 0542 343 09 15
 

12 Haziran 2016, 17:53:42
Yantla #11
Badwet

leti:

Hocam benden anca bu kadar oldu.iyi fikirlere herzaman açýðým
 

12 Haziran 2016, 21:22:05
Yantla #12
Badwet

leti:

Videoda sistem çok hoþuma gitti ve yapmasý kolay step veya servo motor ile uðraþmak istemediðim için dc motor ile yapmak istiyorum
 

12 Haziran 2016, 21:28:25
Yantla #13
Videodakine benzer bir çalýþma yaptým. ISIS devre þemasý ve arduino kodlarý aþaðýda mevcut. Ýhtiyaç halinde ISIS ve arduino dosyalarýný konu ekinden indirebilirsin.

<a href="http://temrinlerim.org/pdf/gunes_paneli.PDF" target="_blank">http://temrinlerim.org/pdf/gunes_paneli.PDF</a>

int motor_saat_yonunde_rolesi=13;
int motor_saat_yonu_tersi_rolesi=12;
int bati_anahtar=A0; 
int dogu_anahtar=A1; 
int bati_ldr=A2; 
int dogu_ldr=A3; 
int doguldr = 0; 
int batildr = 0;
void setup() 
{
pinMode(motor_saat_yonunde_rolesi, OUTPUT);
pinMode(motor_saat_yonu_tersi_rolesi, OUTPUT);
}

void loop() 
{
  doguldr = analogRead(dogu_ldr); 
  batildr = analogRead(bati_ldr); 

// doðu anahtar açýk ve doðu ldr daha aydýnlýkken motor saat yönünde dönecektir kodlarý burada baþladý
if (digitalRead(dogu_anahtar) == LOW && digitalRead(bati_ldr) < digitalRead(dogu_ldr))  
    {
      digitalWrite (motor_saat_yonunde_rolesi, HIGH);
      digitalWrite (motor_saat_yonu_tersi_rolesi, LOW);
      delay (800);
    }
// doðu anahtar açýk ve doðu ldr daha aydýnlýkken motor saat yönünde dönecektir kodlarý burada bitti    
    
digitalWrite (motor_saat_yonunde_rolesi, LOW);
digitalWrite (motor_saat_yonu_tersi_rolesi, LOW);
delay (100);

if (digitalRead(dogu_anahtar) == HIGH && digitalRead(bati_anahtar) == LOW )  
    {
      digitalWrite (motor_saat_yonunde_rolesi, LOW);
      digitalWrite (motor_saat_yonu_tersi_rolesi, HIGH);
      delay (5000);
      digitalWrite (motor_saat_yonunde_rolesi, LOW);
      digitalWrite (motor_saat_yonu_tersi_rolesi, LOW);
      delay (100);
    }  
  
}

iletiþim: 0542 343 09 15
 

12 Haziran 2016, 21:58:01
Yantla #14
Badwet

leti:

Akþam evde deneyeceðim hocam elinize saðlýk.