Mekatronik Mühendisliği Forum


Güneşi Takip Eden Robot Yapımı (Arduino Solar Tracker)
Değerlendir:
  • 0 Oy - 0 Yüzde
  • 1
  • 2
  • 3
  • 4
  • 5


Konu: 114
Mesaj: 184
Cinsiyet: Erkek
Kıdem: Oct 2015





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

Arduino
2 Adet servo motor
4 Adet LDR sensör
4 Adet 10k direnç
2 Adet 10k potansiyometre

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);
}


Burada her yöne bir tane ldr yerleştirilerek her açıdan veri alınması sağlanmıştır.Sensörlerin değerlerini karşılaştırılarak servo motora konum yazdırıldı.
Mekatronik Mühendisi
 kilicaslanabdullah95@gmail.com

Cevapla
Teşekkür Edenler Erkan Dereli
.
Konu: 0
Mesaj: 1
Cinsiyet: Erkek
Kıdem: Feb 2018

geliştirilip küçük güneş hücrelerinin en yüksek verimli açıya doğru çevrilmesini sağlamak pek zor olmayacak gibi görünüyor.

Cevapla
Teşekkür Edenler
.


Benzeyen Konular
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  Arduino PLC Yapımı Ömer Yasin ADIGÜZEL 3 2,584 11-10-2016, 21:17 PM
Son Mesaj: nzlyrm46
  Sesli Renk Okuyucu Robot Yapımı kilicaslanabdullah 0 1,020 09-05-2016, 19:35 PM
Son Mesaj: kilicaslanabdullah
  Arduino ile Basit Park Sensörü Yapımı Emre Dölek 0 1,223 06-03-2016, 20:23 PM
Son Mesaj: Emre Dölek
  Arduino ile 3x3x3 Küp yapımı kilicaslanabdullah 0 1,084 05-02-2016, 15:22 PM
Son Mesaj: kilicaslanabdullah

Foruma atla:


Konuyu görüntüleyenler: 1 Misafir

Türkçe Çeviri : MyBB Türkiye
MyBB, © 2002-2018 MyBB Group.