SUN TRACKER (Input : LDR dan Output : LCD, Motor DC)



1. Dasar Teori [kembali]
1.1 LDR (Light Dependent Resistor)
    LDR (Light Dependent Resistor) merupakan salah satu komponen resistor yang nilai resistansinya akan berubah-ubah sesuai dengan intensitas cahaya yang mengenai sensor ini. LDR juga dapat digunakan sebagai sensor cahaya. Perlu diketahui bahwa nilai resistansi dari sensor ini sangat bergantung pada intensitas cahaya. Semakin banyak cahaya yang mengenainya, maka akan semakin menurun nilai resistansinya. Sebaliknya jika semakin sedikit cahaya yang mengenai sensor (gelap), maka nilai hambatannya akan menjadi semakin besar sehingga arus listrik yang mengalir akan terhambat.



    Umumnya Sensor LDR memiliki nilai hambatan 200 Kilo Ohm pada saat dalam kondisi sedikit cahaya (gelap), dan akan menurun menjadi 500 Ohm pada kondisi terkena banyak cahaya. Tak heran jika komponen elektronika peka cahaya ini banyak diimplementasikan sebagai sensor lampu penerang jalan, lampu kamar tidur, alarm dan lain-lain.

    LDR berfungsi sebagai sebuah sensor cahaya dalam berbagai macam rangkaian elektronika seperti saklar otomatis berdasarkan cahaya yang jika sensor terkena cahaya maka arus listrik akan mengalir(ON) dan sebaliknya jika sensor dalam kondisi minim cahaya(gelap) maka aliran listrik akan terhambat(OFF). LDR juga sering digunakan sebagai sensor lampu penerang jalan otomatis, lampu kamar tidur, alarm, rangkaian anti maling otomatis menggunakan laser, sutter kamera otomatis, dan masih banyak lagi yang lainnya.

Prinsip Kerja :
Prinsip kerja LDR sangat sederhana tak jauh berbeda dengan variable resistor pada umumnya. LDR dipasang pada berbagai macam rangkaian elektronika dan dapat memutus dan menyambungkan aliran listrik berdasarkan cahaya. Semakin banyak cahaya yang mengenai LDR maka nilai resistansinya akan menurun, dan sebaliknya semakin sedikit cahaya yang mengenai LDR maka nilai hambatannya akan semakin membesar.

1.2 Motor Servo
   Motor Servo merupakan salah satu jenis “motor turunan” dari motor DC. Pada Gambar 1, diperlihatkan bahwa Motor Servo tersusun dari berbagai elemen dengan beberapa elemen utama yang menjadikannya motor “pintar”: Motor bersikat (brushed motor), gir penggerak (drive gears), rangkaian kendali (control circuit), dan potensiometer sebagai sensor posisi. Motor Servo adalah motor DC yang pergerakannya didasarkan pada pulsa-pulsa digital yang diterimanya. Rangkaian kendali dari Motor Servo akan mengolah lebar-pulsa-positif yang diterimanya untuk menghasilkan pergerakan yang presisi.

Tipe-tipe Motor Servo
Terdapat tiga tipe dasar Servo dengan berbagai ukuran:
  • Servo Rotasi Sudut, yaitu Servo yang output porosnya berputar di sekitar setengah-lingkaran atau 180 derajat. Input yang diterima akan menentukan posisi sudut statis output poros Servo. Terdapat sistem mekanikal yang mencegah putaran melibihi batas untuk melindungi sensor rotasi. Tipe Servo ini adalah tipe yang paling umum digunakan, dan dapat ditemukan di industri radio kontrol: mobil, pesawat, perahu; ataupun pada industri robot, dan banyak aplikasi industri lainnya.
  • Servo Rotasi Kontinu, yaitu Servo yang output porosnya berputar searah ataupun berlawanan-arah dengan arah putar jam (Clockwise atau Counter-Clockwise) tanpa batasan sudut. Input yang diterima akan menentukan arah dan kecepatan putaran output poros Servo. Tipe Servo ini dapat digunakan pada sebuah piringan radar pada robot, juga bisa digunakan sebagai motor penggerak pada robot mobil.
  • Servo Linear, yaitu Servo Rotasi Sudut yang telah dimodifikasi sedemikian sehingga output poros bukan bergerak dalam bentuk sudut melainkan dalam bentuk gerak lurus-linier. Tipe Servo ini tidak umum ditemukan, dan sangat spesifik terhadap fungsi-fungsi tertentu.
Prinsip Kerja :
Sebenarnya prinsip kerja dari motor servo tak jauh berbeda dibanding dengan motor DC yang lain. Hanya saja motor ini dapat bekerja searah maupun berlawanan jarum jam. Derajat putaran dari motor servo juga dapat dikontrol dengan mengatur pulsa yang masuk ke dalam motor tersebut.
Motor servo akan bekerja dengan baik bila pin kontrolnya diberikan sinyal PWM dengan frekwensi 50 Hz. Frekwensi tersebut dapat diperoleh ketika kondisi Ton duty cycle berada di angka 1,5 ms. Dalam posisi tersebut rotor dari motor berhenti tepat di tengah-tengah alias sudut nor derajat atau netral.
Pada saat kondisi Ton duty cycle kurang dari angka 1,5 ms, maka rotor akan berputar berlawanan arah jarum jam. Sebaliknya pada saat kondisi Ton duty cycle lebih dari angka 1,5 ms, maka rotor akan berputar searah jarum jam. Berikut gambar atau skema pulsa kendali motor servo.
motor servo tak jauh berbeda dibanding dengan motor DC yang lain. Hanya saja motor ini dapat bekerja searah maupun berlawanan jarum jam. Derajat putaran dari motor servo juga dapat dikontrol dengan mengatur pulsa yang masuk ke dalam motor tersebut.
Motor servo akan bekerja dengan baik bila pin kontrolnya diberikan sinyal PWM dengan frekwensi 50 Hz. Frekwensi tersebut dapat diperoleh ketika kondisi Ton duty cycle berada di angka 1,5 ms. Dalam posisi tersebut rotor dari motor berhenti tepat di tengah-tengah alias sudut nor derajat atau netral.
Pada saat kondisi Ton duty cycle kurang dari angka 1,5 ms, maka rotor akan berputar berlawanan arah jarum jam. Sebaliknya pada saat kondisi Ton duty cycle lebih dari angka 1,5 ms, maka rotor akan berputar searah jarum jam. Berikut gambar atau skema pulsa kendali motor servo.

1.3 Arduino
    Arduino adalah pengendali mikro single-board yang bersifat opensource, diturunkan dari Wiring platform, dirancang untuk memudahkan penggunaan elektronik dalam berbagai bidang. Hardware arduino memiliki prosesor Atmel AVR dan software arduino memiliki bahasa pemrograman C. Memori yang dimiliki oleh Arduino Uno sebagai berikut : Flash Memory sebesar 32KB, SRAM sebesar 2KB, dan EEPROM sebesar 1KB. Clock pada board Uno menggunakan XTAL dengan frekuensi 16 Mhz. Dari segi daya, Arduino Uno membutuhkan tegangan aktif kisaran 5 volt, sehingga Uno dapat diaktifkan melalui koneksi USB. Arduino Uno memiliki 28 kaki yang sering digunakan. Untuk Digital I/O terdiri dari 14 kaki, kaki 0 sampai kaki 13, dengan 6 kaki mampu memberikan output PWM (kaki 3,5,6,9,10,dan 11). Masing-masing dari 14 kaki digital di Uno beroperasi dengan tegangan maksimum 5 volt dan dapat memberikan atau menerima maksimum 40mA. Untuk Analog Input terdiri dari 6 kaki, yaitu kaki A0 sampai kaki A5. Kaki Vin merupakan tempat input tegangan saat menggunakan sumber daya eksternal selain USB dan adaptor.Spesifikasi arduino uno R3 dapat dilihat pada tabel 2 1, gambar arduino uno R3 dapat dilihat pada gambar 2 1 dan .pin Atmega 320 dapat dilihat pada gambar 2.2



1.4 Panel Surya
     Sel Surya atau Solar Cell adalah suatu perangkat atau komponen yang dapat mengubah energi cahaya matahari menjadi energi listrik dengan menggunakan prinsip efek Photovoltaic. Yang dimaksud dengan Efek Photovoltaic adalah suatu fenomena dimana munculnya tegangan listrik karena adanya hubungan atau kontak dua elektroda yang dihubungkan dengan sistem padatan atau cairan saat mendapatkan energi cahaya. Oleh karena itu, Sel Surya atau Solar Cell sering disebut juga dengan Sel Photovoltaic (PV).
    

Prinsip Kerja :
Sinar Matahari terdiri dari partikel sangat kecil yang disebut dengan Foton. Ketika terkena sinar Matahari, Foton yang merupakan partikel sinar Matahari tersebut meghantam atom semikonduktor silikon Sel Surya sehingga menimbulkan energi yang cukup besar untuk memisahkan elektron dari struktur atomnya.  Elektron yang terpisah dan bermuatan Negatif (-) tersebut akan bebas bergerak pada daerah pita konduksi dari material semikonduktor. Atom yang kehilangan Elektron tersebut akan terjadi kekosongan pada strukturnya, kekosongan tersebut dinamakan dengan “hole” dengan muatan Positif (+).

Daerah Semikonduktor dengan elektron bebas ini bersifat negatif dan bertindak sebagai Pendonor elektron, daerah semikonduktor ini disebut dengan Semikonduktor tipe N (N-type). Sedangkan daerah semikonduktor dengan Hole bersifat Positif dan bertindak sebagai Penerima (Acceptor) elektron yang dinamakan dengan Semikonduktor tipe P (P-type).
Di persimpangan daerah Positif dan Negatif (PN Junction), akan menimbulkan energi yang mendorong elektron dan hole untuk bergerak ke arah yang berlawanan. Elektron akan bergerak menjauhi daerah Negatif sedangkan Hole akan bergerak menjauhi daerah Positif. Ketika diberikan sebuah beban berupa lampu maupun perangkat listrik lainnya di Persimpangan Positif dan Negatif (PN Junction) ini, maka akan menimbulkan Arus Listrik.

2. Daftar Komponen [kembali]

=> Sensor LDR (4 buah)
=> Solar Panel (1 buah)
=> Sensor LM35 (1 buah)
=> LCD 16x2 (1 buah)
=> Motor Servo (2 buah)
=> Arduino UNO (1 buah)
=> Potensio (1 buah)
=> Resistor (6 buah)
=> VCC (7 bauh)
=> GND (7 buah)


3. Rangkain Simulasi [kembali]





4. Prinsip Kerja Rangkaian [kembali]
Sun Tracker disini merupakan rangkaian kontrol untuk mengatur gerakan motor supaya intensitas cahaya matahari yang diterima oleh panel surya optimum. Hal tersebut terjadi jika papan panel surya mengikuti terus arah matahari. Pada pagi hari motor akan bergerak dari timur ke barat mengikuti arah matahari berdasarkan 4 buah LDR yang berada diposisi timu dan barat. pergerakan  papan panel surya dapat di ilustrasikan sebagai berikut :

Jadi, Untuk Prinsip kerja dari rangkaian simulasi sun tracker ini adalah :
1.  peran utamanya terdapat pada sensor LDR, yang mana sensor tersebut diposisikan pada masing masing sudut panel surya.

bergerak ke Barat : jika LDR 1 dan LDR 2 nilainya lebih besar dari pada LDR 3 dan LDR 4
bergerak ke Timur : jika LDR 1 dan LDR 2 nilainya lebih kecil dari pada LDR 3 dan LDR 4

2. selanjutnya 2 Motor servo yang terpasang pada papan panel surya akan menjalankan hasil dari data yang dibaca sensor LDR, yang mana jika memungkinkan bergerak ke barat maka servo pada rentang 0-90 derjat dan bergerak ke timur maka servo pada rentang sudut 91-180 derajat. 

3. dan LCD sebagai display berupa data keluaran yang akan ditampilkan, hal ini tergantung pada perancang sun tracker, apakah itu akan menampilkan intensitas cahaya atau peregerakan sudut motor dan lain sebagainya.

5. Flowchart [kembali]


6. Sketch Arduino [kembali]
#include <Servo.h>
#include<LiquidCrystal.h>
const int rs=7, en=6, d4=5 , d5=4, d6=3, d7=2 ;
#define sensor A0
#define VOLT A1
#define LUX A3
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

float Temperature, temp, volt, volts,lux,Temp;
int temp1, value,analog_value;
byte degree[8] =
              {
                0b00011,
                0b00011,
                0b00000,
                0b00000,
                0b00000,
                0b00000,
                0b00000,
                0b00000
              };
Servo myservo;
    int pos = 90;
    int ldr1 = A0;
    int ldr2 = A1;
    int tolerance = 2;
 int x; // set x as absolute of ldr2-ldr1
    int y; // set y as absolute of ldr1-ldr2
    Servo myservo2;
    int pos2 = 90; // initial position of the Vertical movement controlling second servo motor
    int ldr3 = A2; // set ldr 3 to pin A2 as an integer
    int ldr4 = A3; // set ldr 4 to pin A3 as an integer
 
    int tolerance2 = 2; //allowable tolerance setting - so as to prevent servo motor constantly in motion
    int p; // set p as absolute of ldr4-ldr3
    int q; // set q as absolute of ldr3-ldr4
    boolean dark = false;
    const int DAWN = 600;
    const int DUSK = 1800;
    void setup()
{
  lcd.begin(16,2);
  lcd.createChar(1, degree);
  Serial.begin(9600);
  lcd.setCursor(0,0);
  lcd.print("Sun Tracking");
  lcd.setCursor(0,1);
  lcd.print("System");
  delay(2000);
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Wisnu Joko");
  lcd.setCursor(0,1);
   lcd.print("1610951048");
  delay(2000);
  lcd.clear();
  myservo.attach(9); // attaches the servo on digital pin 9 to the horizontal movement servo motor
    pinMode(ldr1, INPUT); //set  ldr1 pin as an input
    pinMode(ldr2, INPUT); //set  ldr2 pin as an input
    myservo.write(pos); // write the starting position of the horizontal movement servo motor
    delay(2000); // 2 second delay to allow the solar panel to move to its staring position before comencing solar tracking
    myservo2.attach(10); // attaches the servo on digital pin 10 to the vertical movement servo motor
    pinMode(ldr3, INPUT); //set  ldr3 pin as an input
    pinMode(ldr4, INPUT); //set  ldr4 pin as an input
    myservo2.write(pos2); // write the starting position of the vertical movement servo motor
    delay(2000); // 2 second delay to allow the solar panel to move to its staring position before comencing solar tracking
}
void loop()
{
   /*---------Temperature-------*/
     float reading=analogRead(sensor);
     Temperature=reading*(5.0/1023.0)*100;
     delay(10);   
  /*---------Voltage----------*/
  temp1=analogRead(VOLT);
  volts= (temp1/511.5)*5;
  delay(10);
  /*-----Light Intensity------*/
  value=analogRead(LUX);
   volt=(value/1023.0)*5;
   lux=((2500/volt)-500)/3.3;
   delay(10);
  /*------Display Result------*/
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("T:");
    lcd.print((int)analog_value);
    lcd.write(1);
    lcd.print("C");
    lcd.setCursor(8,0);
    lcd.print("V:");
    lcd.print(volts);
    lcd.setCursor(0,1);
    lcd.print("LDR1: ");
    lcd.print((int)lux);
    lcd.print(" Lux");
   Serial.println((int)Temp);
   Serial.println(volts);
   Serial.println((int)lux);
   delay(500);
   int val1 = analogRead(ldr1); // read the value of ldr 1
    int val2 = analogRead(ldr2); // read the value of ldr 2
    int val3 = analogRead(ldr3); // read the value of ldr 2
    int val4 = analogRead(ldr4); // read the value of ldr 4
    x= abs(val1 - val2); //compute x as absolute of ldr1-ldr2
     y= abs(val2 - val1); //compute y as absolute of ldr2-ldr1
    p= abs(val3 - val4); //compute p as absolute of ldr3-ldr4
    q= abs(val4 - val3); //compute qas absolute of ldr4-ldr3
 
    // Controlling east-west movement for the servo. i.e horizontal tracking
    if((x <= tolerance) || (y <= tolerance)) {
    //no servo motor horizontal movement will take place if the ldr value is within the allowable tolerance
    } else {
    if(val1 > val2) // if ldr1 senses more light than ldr2
 {
    pos = pos+1; // decrement the 90 degree poistion of the horizontal servo motor - this will move the panel position Eastward
    }
    if(val1 < val2) // if ldr2 senses more light than ldr1
    {
    pos = pos-1; // increment the 90 degree position of the horizontal motor - this will move the panel position Westward
    }
    delay(500);
    }
    if(pos > 180)
  {
  pos = 180; // reset the horizontal postion of the motor to 180 if it tries to move past this point
   }
    if(pos < 0)
  {
  pos = 0; // reset the horizontal position of the motor to 0 if it tries to move past this point
 }
    myservo.write(pos); // write the starting position to the horizontal motor
    delay(50);
    //  Controlling north-south  movement for the servo. i.e vertical  tracking
      if((p <= tolerance) || (q <= tolerance)) {
    //no servo motor vertical movement will take place if the ldr value is within the allowable tolerance
    } else {
    if(val3 > val4) // if ldr3 senses more light than ldr4
    {
 pos2 = pos+1; // decrement the 90 degree poistion of the vertical servo motor - this will move the panel position Northward
    }
    if(val4 > val3) // if ldr4 senses more light than ldr3
    {
    pos2 = pos-1; // increment the 90 degree position of the vertical motor - this will move the panel position Southward
    }
    delay(900);
    }
    // reset the vertical postion of the motor to 180 if it tries to move past this point
    if(pos2 > 180)
   {
   pos2 = 180;
   }
   // reset the vertical position of the motor to 0 if it tries to move past this point
    if(pos2 < 0)
   {
     pos2 = 0;
   }
    myservo2.write(pos2); // write the starting position to the vertical movement motor
    delay(50);
  }



7. Video Simulasi [kembali]



8. Link Download [kembali]

Rangkaian Simulasi
Program Sketch Arduino
Video

Tidak ada komentar:

Posting Komentar

Entri yang Diunggulkan

Ngumpul Seru S3 Dispora Sumbar

Sedari 4 Desember 2022, pemuda pemudi terbaik sumatera barat dijaring oleh Dispora Sumbar untuk meningkatkan kapasitas diri dan kreativitasn...