Güneş takip farklı metot

Güneşi takip etmek işi hareketli uydu çanak antenleri ile de yapılabilir. Böyle bir anten kaidesini incelerseniz aslında çok basit sistemler. Mekaniğe anten yerine güneş panelini bağlayıp, uydu pozisyonerini de uydu alıcısı yerine arduino ve bir adet röle üzerinden kontrol ederseniz, basit ve ucuz bir takip sisteminiz olabilir. Uydu işleri için turkeyforum size yardımcı olabilir.
mafsal motor kullanılıyor o sistemde, uydukurdu ve türkeyformun en eski üyelerindenimdir, ters ve düz akım vs meşakati doğuyor,
daha basit olanı tek yön sadece ileri tek role ile step motoru ağır devirde ileri sürmek en kolayı, egsantrik mi deniyordu git gel koluna her neyse kasnak Panel kasasını kaldırıp indirecek, solidworks kurdum elimdeki iş bitince 3d olarak paylaşacam kafamdakini, 4 yada 5 adet ldr den alınan veriye göre hep ileri sürmesi yetiyor, böylece sabah saatine gelip durmasında sıkıntı çıkmaz, ağır devir olacağı için durması gereken konumunu kaçırmaz
 
LDR kapalı havalarda sorun çıkarmaz mı? RTC modul ile yılın gününe göre gideceği konuma konumlanması zor olmaz, koordinat olarak.
 
1669010113974.png

#include <Servo.h>
//defining Servos
Servo servohori;
int servoh = 0;
int servohLimitHigh = 160;
int servohLimitLow = 20;
Servo servoverti;
int servov = 0;
int servovLimitHigh = 160;
int servovLimitLow = 20;
//Assigning LDRs
int ldrtopl = 2; //top left LDR green
int ldrtopr = 1; //top right LDR yellow
int ldrbotl = 3; // bottom left LDR blue
int ldrbotr = 0; // bottom right LDR orange
void setup ()
{
servohori.attach(10);
servohori.write(0);
servoverti.attach(9);
servoverti.write(0);
delay(500);
}
void loop()
{
servoh = servohori.read();
servov = servoverti.read();
//capturing analog values of each LDR
int topl = analogRead(ldrtopl);
int topr = analogRead(ldrtopr);
int botl = analogRead(ldrbotl);
int botr = analogRead(ldrbotr);
// calculating average
int avgtop = (topl + topr) / 2; //average of top LDRs
int avgbot = (botl + botr) / 2; //average of bottom LDRs
int avgleft = (topl + botl) / 2; //average of left LDRs
int avgright = (topr + botr) / 2; //average of right LDRs
if (avgtop < avgbot)
{
servoverti.write(servov +1);
if (servov > servovLimitHigh)
{
servov = servovLimitHigh;
}
delay(10);
}
else if (avgbot < avgtop)
{
servoverti.write(servov ‐1);
if (servov < servovLimitLow)
{
servov = servovLimitLow;

}
delay(10);
}
else
{
servoverti.write(servov);
}
if (avgleft > avgright)
{
servohori.write(servoh +1);
if (servoh > servohLimitHigh)
{
servoh = servohLimitHigh;
}
delay(10);
}
else if (avgright > avgleft)
{
servohori.write(servoh ‐1);
if (servoh < servohLimitLow)
{
servoh = servohLimitLow;
}
delay(10);
}
else
{
servohori.write(servoh);
}
delay(50);
}

kodları başka yerden buldum, uzman değilim kodları daha önce derleyip proteus da çalıştırdım..
kolay gelsin..
 
Ekli dosyayı görüntüle 92781
#include <Servo.h>
//defining Servos
Servo servohori;
int servoh = 0;
int servohLimitHigh = 160;
int servohLimitLow = 20;
Servo servoverti;
int servov = 0;
int servovLimitHigh = 160;
int servovLimitLow = 20;
//Assigning LDRs
int ldrtopl = 2; //top left LDR green
int ldrtopr = 1; //top right LDR yellow
int ldrbotl = 3; // bottom left LDR blue
int ldrbotr = 0; // bottom right LDR orange
void setup ()
{
servohori.attach(10);
servohori.write(0);
servoverti.attach(9);
servoverti.write(0);
delay(500);
}
void loop()
{
servoh = servohori.read();
servov = servoverti.read();
//capturing analog values of each LDR
int topl = analogRead(ldrtopl);
int topr = analogRead(ldrtopr);
int botl = analogRead(ldrbotl);
int botr = analogRead(ldrbotr);
// calculating average
int avgtop = (topl + topr) / 2; //average of top LDRs
int avgbot = (botl + botr) / 2; //average of bottom LDRs
int avgleft = (topl + botl) / 2; //average of left LDRs
int avgright = (topr + botr) / 2; //average of right LDRs
if (avgtop < avgbot)
{
servoverti.write(servov +1);
if (servov > servovLimitHigh)
{
servov = servovLimitHigh;
}
delay(10);
}
else if (avgbot < avgtop)
{
servoverti.write(servov ‐1);
if (servov < servovLimitLow)
{
servov = servovLimitLow;

}
delay(10);
}
else
{
servoverti.write(servov);
}
if (avgleft > avgright)
{
servohori.write(servoh +1);
if (servoh > servohLimitHigh)
{
servoh = servohLimitHigh;
}
delay(10);
}
else if (avgright > avgleft)
{
servohori.write(servoh ‐1);
if (servoh < servohLimitLow)
{
servoh = servohLimitLow;
}
delay(10);
}
else
{
servohori.write(servoh);
}
delay(50);
}

kodları başka yerden buldum, uzman değilim kodları daha önce derleyip proteus da çalıştırdım..
kolay gelsin..
teşekkür ederim , ben bu servo olayını kodlarla roleye çeviremem ama aynı mantıkta komutla roleyi çeker kanımca, oda işimi görür
LDR kapalı havalarda sorun çıkarmaz mı? RTC modul ile yılın gününe göre gideceği konuma konumlanması zor olmaz, koordinat olarak.
ne kadar kapalı olursa olsun eşik değerlerini çok hassas değere çekerim orda sıkıntı yaşamam da sıkıntı panelleri kuracağım yerde başlıyor, evin konumu ağaçların arasında olduğu için karşı tepenin yamacına konuşlanacak, orada da sokak lambası var, bende lambanın batısına kurarım lamba doğuda kalınca gece doğu yönüne bakar sabaha kadar öyle bekler :)
 
Son düzenleme:
lodos görmez bizim ova, yanında wind türbinde olacak, devasa bir alternatör de yaptım :)
 

Forum istatistikleri

Konular
129,827
Mesajlar
930,545
Kullanıcılar
452,650
Son üye
HiAxiSeytan

Yeni konular

Çevrimiçi üyeler

Geri
Üst