2 Eksen Arduino Shild Güneş Paneli

bolubeyi

Profesyonel Üye
Katılım
27 Eyl 2008
Mesajlar
1,681
Puanları
421
Yaş
54
Konum
Trabzon
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







ISIS çizimi
ISIS çizimini konu ekinden indirebilirsiniz.


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




Fritzing çizimi:
Fritzing dosyasını orjinal konu ekinden indirebilirsiniz.


Arduino kodlarımız:
Arduino kodlarına ait dosyayı orjinalkonu ekinden indirebilirsiniz.
Kod:
  #include <Servo.h>

  Servo yatay;
  int pos = 90;  // Başlama pozisyonu
  int sens1 = A0; // LRD 1 pin
  int sens2 = A1; //LDR 2 pin
  int tolerance = 2;

  Servo dikey;
  int pos2 = 90;  // Başlama pozisyonu
  int sens3 = A2; // LRD 3 pin
  int sens4 = A3; //LDR 4 pin
  int tolerance2 = 2;
  void setup()
  {
  yatay.attach(9);  // Dijital 9 pini yatay servoya bağlanacak
  dikey.attach(10);  // Dijital 10 pini dikey servoya bağlanacak
  pinMode(sens1, INPUT);
  pinMode(sens2, INPUT);
  pinMode(sens3, INPUT);
  pinMode(sens4, INPUT);
  yatay.write(pos);
  dikey.write(pos2);
  delay(2000); // a 2 seconds delay while we position the solar panel
  }

  void loop()
  {
  int val1 = analogRead(sens1); // sensor 1 oku
  int val2 = analogRead(sens2); // sensor 2 oku
  int val3 = analogRead(sens3); // sensor 3 oku
  int val4 = analogRead(sens4); // sensor 4 oku
  if((abs(val1 - val2) <= tolerance) || (abs(val2 - val1) <= tolerance)) {

  } else {
  if(val1 > val2)
  {
  pos = --pos;
  }
  if(val1 < val2)
  {
  pos = ++pos;
  }
  }

  if(pos > 180) { pos = 180; }
  if(pos < 0) { pos = 0; }

  yatay.write(pos);
  delay(60);



  if((abs(val3 - val4) <= tolerance2) || (abs(val4 - val3) <= tolerance2)) {

  } else {
  if(val3 > val4)
  {
  pos2 = --pos2;
  }
  if(val3 < val4)
  {
  pos2 = ++pos2;
  }
  }

  if(pos2 > 180) { pos2 = 180; }
  if(pos2 < 0) { pos2 = 0; }

  dikey.write(pos2);
  delay(60);
  }

Orjinal konu ve gerekmesi halinde konu ekleri (Üyelik gerektirir.) için tıklayınız.
 
Son düzenleme:
Hocam ışık izleyicileri gibi 2 ldr yetmez mi, her motora tek ldr bu şekidle bir çalışma yapar mısınız lütfen?
 
Emeğiniz için tebrikler
Paylasiminiz için teşekkürler


aydinDr
 
 
@bolubeyi ;Sayın hocam projenizin aynısını bende denedim ve çalıştırdım fakat ben arduino ile yatay eksende(doğu-batı)çalışan bir devre yapmak istiyorum şöyleki;2 ldr ve 1dc motor ile (linear motor)ile doğudan başlayarak ldr'lerin değerlerine göre batıya doğru yönelecek ve en sonunda güneş battığında her iki ldr'ninde karanlıkta kaldığı anda ertesi güne hazır olmak için doğuya dönüp orada bekleyecek ve en son doğu noktasına ulaştığında limit sw.ile hareketin yani motorun voltajının kesileceği bir devre tasarlamak istiyorum,motoru röle yardımıyla sürmek istiyorum batıya ulaştığında devir yönü değişiminide röle yardımıyla yapmayı düşünüyorum umarım tam anlatabilmişimdir. arduino'da yeniyim böyle bir sistem için kod konusunda yardımcı olursanız çok sevinirim.Saygılar.
 
@badwet hocamız foruma küstü artık yazmıyor mesajındaki linkten kednisine ulaşmaya çalışabilirsin.
 
ldr yerine doğrudan panelin akımı ölçülebilirdi aslında . amaç yüksek akımlı Elektrik enerjisi elde etmek sonuçta. yani ben öyle yapardım en azından
 
Bir öğrenci ile atıştı daha doğrusu öğrenci eğitim sistemine ve hocalara atıfta bulundu öğretmiyorlar filan. Hocamız da 2. şansı vermedi ya o ya ben dedi ... benim görüşüm gerçek hayatta da direk silemezsin tekrar fırsat verirsin kişi öğrenci uslanmaz disiplinlik suç işler o zaman yaptrım uygularsın.
 
Bu da bir başka örnek:
LDR'yi doğrudan servo içindeki potansiyometreye bağlayarak, direncine göre servonun hareket etmesini sağlamış..
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…