Menü

Arduino ile ışığa duyarlı güneş paneli

7 Aralık 2017 - Arduino
Arduino ile ışığa duyarlı güneş paneli
4.3 (85.52%) 105 votes

Projemizin amacı, günün her saatinde güneş ışınlarından faydalanmaktır. Güneşin dik gelmediği durumlarda elektrik üretimi az olmaktadır. Bu sorunu çözmek için de güneş ışınlarının panele dik gelmesi gerekmektedir. Güneş ışınları panele dik gelirse güneşten faydalanma oranımız maksimum seviyeye çıkar. Bizim sistemimizde panelimiz güneş ışınlarının geldiği yöne doğru yönelmektedir.

Projemizde kullandığımız malzemeler şunlardır :

Yapım Aşaması:

İlk olarak sisteme ait kodlar arduino programı kullanılarak yazıldı. Sistemimizi  şekildeki gibi breadboard üzerine kurduk.

Sistemin beardboard üzerinde çalıştığını test ettikten sonra platform yapıldı. Platform üzerine servo motor, LDR ve direnç montajı yapıldı. Platform üzerinde sistemin arduino ile çalışıp çalışmadığı kontrol edildi. Ayrıca şekilde servo motorların platform üzerinde nasıl  yerleştiği görülmektedir.

4 adet LDR, 4 adet direnç ve güneş panelimiz mukavvadan yapmış olduğumuz tek plaka üzerine şekilde görüldüğü üzere yerleştirilmiştir.

 

Güneş panelini Boost dönüştürücü yardımıyla Powerbank’e bağladık. Powerbank’imizi de Arduino Uno’ya bağladık. Burada ki amacımız, güneş panelinde üretilen enerjiyi Powerbank’a depolayıp daha sonra  bu enerjiyi Arduino’nun ihtiyaç duyduğu güç olarak kullandık. Servo Motorlar Powerbank’ten alınan güç sayesinde çalışarak platformun hareketini sağladı. Bu şekilde sistem, kendi içerisinde bir enerji dönüşümü sağlamış oldu.

Arduino da yazdığımız kodlar aşağıda belirtilmiştir:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#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 =10 ;//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);
}

L

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Araç çubuğuna atla