Solar Tracker
1. Tujuan[kembali]
- Memberikan efektivitas yang lebih bagi solar panel untuk mendapatkan cahaya matahari
- Memudahkan manusia dalam memanfaatkan energi cahaya matahari
- Arduino Uno (Datasheet)
- LDR (Datasheet)
Grafik Respon LDR
Dari grafik diatas dapat dilihat hubungan cahaya dan resistansi, semakin besar cahaya yang diterima maka resistansi semakin mengecil.
- Motor Servo (Datasheet)
- LCD 16x2 (dengan modul 12c) (Datasheet)
#include <LiquidCrystal.h> //Include library LCD
#include <Servo.h> //Include library Motor Servo
#define LDR_east A0 // LDR timur di pin 1
#define LDR_west A1 // LDR barat di pin 2
#define LDR_delta 10 // selisih intensitas cahaya pada LDR timur dan barat
#define servoMin 30 //Sudut rotasi servo minimal
#define servoMax 150 // sudut rotasi servo maximal
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // inisialisasi lcd pada pin arduino
int hasilSensorLDR; //integer untuk hasil sensor dari LDR
Servo servo;
byte pos = 90; //posisi awal servo
void setup() {
// put your setup code here, to run once:
lcd.begin(16,2); //menginisialisai bahwa lcd dengan 16 colom dan 2 baris
servo.attach(9); //servo dikendalikan di pin 9 arduino
}
void loop() {
// put your main code here, to run repeatedly:
if(abs(analogRead(LDR_east) - analogRead(LDR_west)) > LDR_delta){
if(analogRead(LDR_east) - analogRead(LDR_west) > 0){ //apabila cahaya yang diterima ldr timur lebih banyak dibanding dengan barat dan lebih besar dibanding 10 dan 0 maka servo bergerak ke timur
pos++;
lcd.setCursor(0,0);//peletakkan cursor di kolom 0 dan baris 0
lcd.print("Arah Timur"); // menampilkan di lcd
lcd.setCursor(0,1);//peletakkan cursor di kolom 0 dan baris 1
lcd.print("Hasil LDR :");// menampilkan di lcd
lcd.setCursor(12,1);//peletakkan cursor di kolom 12 dan baris 1
hasilSensorLDR = analogRead(0);
lcd.print(hasilSensorLDR); // menampilkan pembacaan ldr pada pin 0 di lcd
}
else{ //servo bergerak arah sebaliknya
pos--;
lcd.setCursor(0,0);//peletakkan cursor di kolom 0 dan baris 0
lcd.print("Arah Barat");// menampilkan di lcd
lcd.setCursor(0,1);//peletakkan cursor di kolom 0 dan baris 1
lcd.print("Hasil LDR :");// menampilkan di lcd
lcd.setCursor(12,1);//peletakkan cursor di kolom 12 dan baris 1
hasilSensorLDR = analogRead(1);
lcd.print(hasilSensorLDR);// menampilkan pembacaan ldr di pin 1 di lcd
}
if(pos>servoMax) pos = servoMax; // apabila rotasi lewat dari batas max, maka akan diarahkan sama dengan max
else if(pos<servoMin) pos = servoMin;//apabila rotasi lewat dari batas min, maka akan diarahkan sama dengan min
servo.write(pos);
}
}
Pembacaan cahaya di lakukan oleh ldr1 dan ldr2, ketika cahaya pada sisi ldr1 > ldr2 maka pada arduino diproses dari coding yang telah dilakukan sebelumnya, akan mengendalikan motor servo dengan bergerak searah jarum jam (arah timur) dan arduino akan menampilkan pada LCD berupa arah putaran dan intensitas cahaya pada sisi ldr1 sebaliknya juga demikian,
Video Simulasi
Gambar Alat
Video Alat
- Rangkaian download disini
- Program download disini
- Video simulasi download disini
- Video alat download disini
Comments
Post a Comment