Modul 4 Mikro 2019





Sun Tracker Dual Axis Berbasis Arduino menggunakan sensor  LDR


1. Tujuan [kembali]
  1. Praktikan dapat merancang sebuah sistem secara detail sehingga rancangan tersebut dapat menjadi sebuah alat.
  2. Praktikan dapat mengkombinasikan berbagai sensor, aktuator dan display.
  3. Praktikan dapat membuat sebuah sistem menggunakan mikrokontroller.
  4. Alat dapat mengikuti posisi cahaya yang optimal
  5. Alat dapat menampilkan intensitas cahaya pada lcd
2. Alat dan Bahan [kembali]
    A. LDR
Hasil gambar untuk sensor ldr  
   B.Arduino UNO 


   C. Motor Servo
Hasil gambar untuk motor servo

   D. 100k ohm resistor 

 

   E. Connecting wires / Jumper


  F. NRF24l01


 G. Breadbord

Hasil gambar untuk breadboard 



3. Dasar Teori [kembali]
A. Arduino Uno  (datasheet)
Arduino adalah mikrokontroller single-board yang bersifat open-source.Untuk saat ini, arduino merupakan mikrokontroller yang laris di pasaran. Selain karena harganya yang murah dan mudah digunakan, sifat open-source pada arduino membuat arduino berkembang sangat cepat. Selain itu, tutorial dan forum diskusi tentang arduino sangat banyak. Dari proyek sederhana hingga proyek yang rumit. Sehingga arduino menjadi pilihan utama dari berbagai pihak untuk membuat sebuah sistem automasi.

B. LDR (datasheet)

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 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.

GRAFIK RESPON SENSOR LDR


  1. Datasheet

    2. Percobaan


         Dari Grafik dapat disimpulkan bahwa besarnya hambatan atau resistansi dari sensor ldr dipengaruhi oleh intensitas cahaya yang diberikan, dan dapat dilihat bahwa semakin besar intensitas cahaya maka nilai resistansinya akan semakin kecil dan begitu sebaliknya.

C.  Solar Panel 





Panel surya berfungsi untuk melewati efek fotolistrik dimana bahan-bahan tertentu menciptakan aliran listrik saat matahari bersinar di atasnya. Panel surya sendiri terdiri dari kristal silikon di mana setiap setengah didopin menjadi dopan yang berbeda untuk menghasilkansebuah semikonduktor. Ketika matahari muncul di permukaan, panelsurya menyediakan energi yang dibutuhkan untuk semikonduktoruntuk menghasilkan arus searah (DC).

D. Motor Servo  (datasheet)

Motor servo adalah sebuah perangkat atau aktuator putar (motor) yang dirancang dengan sistem kontrol umpan balik loop tertutup (servo), sehingga dapat di set-up atau di atur untuk menentukan dan memastikan posisi sudut dari poros output motor. motor servo merupakan perangkat yang terdiri dari motor DC, serangkaian gear, rangkaian kontrol dan potensiometer. Serangkaian gear yang melekat pada poros motor DC akan memperlambat putaran poros dan meningkatkan torsi motor servo, sedangkan potensiometer dengan perubahan resistansinya saat motor berputar berfungsi sebagai penentu batas posisi putaran poros motor servo.


Ada dua jenis motor servo, yaitu motor servo AC dan DC. Motor servo AC lebih dapat menangani arus yang tinggi atau beban berat, sehingga sering diaplikasikan pada mesin-mesin industri. Sedangkan motor servo DC biasanya lebih cocok untuk digunakan pada aplikasi-aplikasi yang lebih kecil. Dan bila dibedakan menurut rotasinya, umumnya terdapat dua jenis motor servo yang dan terdapat di pasaran, yaitu motor servo rotation 180⁰ dan servo rotation continuous.
  • Motor servo standard (servo rotation 180⁰) adalah jenis yang paling umum dari motor servo, dimana putaran poros outputnya terbatas hanya 90⁰ kearah kanan dan 90⁰ kearah kiri. Dengan kata lain total putarannya hanya setengah lingkaran atau 180⁰.
  • Motor servo rotation continuous merupakan jenis motor servo yang sebenarnya sama dengan jenis servo standard, hanya saja perputaran porosnya tanpa batasan atau dengan kata lain dapat berputar terus, baik ke arah kanan maupun kiri.
Prinsip kerja motor servo:
      Motor servo dikendalikan dengan memberikan sinyal modulasi lebar pulsa (Pulse Wide Modulation / PWM) melalui kabel kontrol. Lebar pulsa sinyal kontrol yang diberikan akan menentukan posisi sudut putaran dari poros motor servo. Ketika lebar pulsa kendali telah diberikan, maka poros motor servo akan bergerak atau berputar ke posisi yang telah diperintahkan, dan berhenti pada posisi tersebut dan akan tetap bertahan pada posisi tersebut. Jika ada kekuatan eksternal yang mencoba memutar atau mengubah posisi tersebut, maka motor servo akan mencoba menahan atau melawan dengan besarnya kekuatan torsi yang dimilikinya (rating torsi servo). Namun motor servo tidak akan mempertahankan posisinya untuk selamanya, sinyal lebar pulsa kendali harus diulang setiap 20 ms (mili detik) untuk menginstruksikan agar posisi poros motor servo tetap bertahan pada posisinya.

E. NRF24l01  (datasheet)

Module Wireless nRF24L01 merupakan module yang mempunyai fungsi untuk komunikasi jarak jauh atau nirkabel yang memanfaatkan gelombang RF 2.4 GHz yang biasanya diaplikasikan untuk Scientific , Industrial, maupun Medical.
Pada modul ini menggunakan antarmuka SPI (Serial Parallel Interface) untuk berkomunikasi dengan mikrokontroler dalam hal ini Arduino. Tegangan operasional normal untuk mengakses module ini yaitu 3.3Vdc, yang biasanya dibantu dengan regulator AMS1117.
Module nRF24L01 memiliki perangkat keras yang berupa baseband logic Enhanced ShockBurst dan protocol accelerator yang memungkinan untuk berkomunikasi dalam kecepatan tinggi.
Selain itu, module ini juga memiliki fitur true ULP solution, yang berfungsi sebagai penghemat konsumsi daya sehingga hemat energi.  Dan bisa digunakan juga sebagai pembuatan perangkat fitnes dan olahraga, pendukung PC, mainan anak-anak, piranti perangkat untuk permainan, dan lainnya.
Kesimpulan dari beberapa fitur Modul Wireless RF nRF24L01 :
  • Data rate mencapai 2Mbps
  • Penanganan transaksi paket otomatis
  • Beroperasi pada pada pita ISM 2.4 GHZ
  • Konsumsi daya yang rendah
  • Penanganan paket data otomatis
  • Jarak komunikasinya 1100 meter
4.Flowchart [kembali]

          A. MASTER


  B. SLAVE


     A. MASTER
     #include <Servo.h>                              // library untuk motor servo
     #include <SPI.h>                                // library untuk komunikasi SPI
     #include <nRF24L01.h>                     // library untuk komunikasi wireless
     #include <RF24.h>                             // library untuk komunikasi wireless

    Servo horizontal;
    int pos = 90;                                          // posisi awal
    int sens1 = A0;                                      // LRD 1 pin
    int sens2 = A1;                                       //LDR 2 pin
    int tolerance = 2;                                    //toleransi pergeseran servo horizontal
 
    Servo vertikal;
    int pos2 = 90;                                      // posisi awal
    int sens3 = A2;                                    // LRD 3 pin
    int sens4 = A3;                                    //LDR 4 pin
    int tolerance2 = 2;                               //toleransi pergeseran servo vertikal
 
    void setup()
     {
      horizontal.attach(9);                         // pin servo horizontal
      vertikal.attach(10);                           // pin servo vertikal
      pinMode(sens1, INPUT);                // deklarasi pin sens1  sebagai input
      pinMode(sens2, INPUT);                // deklarasi pin sens2  sebagai input
      pinMode(sens3, INPUT);                // deklarasi pin sens3  sebagai input
      pinMode(sens4, INPUT);                // deklarasi pin sens4  sebagai input
      pinMode(OT,OUTPUT);                 // deklarasi pin OT  sebagai output
      horizontal.write(pos);                        // servo bergerak sesuai posisi
      vertikal.write(pos2);   
      delay(2000);                                     // delay pengaturan posisi awal
       
     radio.startListening();                       // memulai komunikasi wireless
     while (!radio.available())    }
   
    void loop()
    {
      int val1 = analogRead(sens1);            // inisialisasi val1 sebagai pembacaan sens1
      int val2 = analogRead(sens2);           // inisialisasi val1 sebagai pembacaan sens2
      int val3 = analogRead(sens3);           // inisialisasi val1 sebagai pembacaan sens3
      int val4 = analogRead(sens4);           // inisialisasi val1 sebagai pembacaan sens4
      digitalWrite(OT,HIGH);
   
  // pengarturan horizontal 
      if((abs(val1 - val2) <= tolerance) || (abs(val2 - val1) <= tolerance)) {

      } else { 
        if(val1 > val2)                                     // jika hasil val1>val2
        {
          pos = --pos;                                   //motor servo akan bergeser ke kiri
        }
        if(val1 < val2)                                    // jika hasil val1<val2
        {
          pos = ++pos;                                   //motor servo akan bergeser ke kanan
        }
      }
   
      if(pos > 180) { pos = 180; }
      if(pos < 0) { pos = 0; }
   
      horizontal.write(pos);                           // servo bergerak sesuai posisi
      delay(60);
   
// pengaturan vertikal
      if((abs(val3 - val4) <= tolerance2) || (abs(val4 - val3) <= tolerance2)) {

      } else { 
        if(val3 > val4)                                  // jika hasil val3>val4
        {
          pos2 = --pos2;                              //motor servo akan bergeser ke bawah
        }
        if(val3 < val4)                                  // jika hasil val3<val4
        {
          pos2 = ++pos2;                          //motor servo akan bergeser ke atas
        }
      }
   
      if(pos2 > 180) { pos2 = 180; }
      if(pos2 < 0) { pos2 = 0; }
   
      vertikal.write(pos2);
      delay(60);
    }

B. SLAVE
 #include <LiquidCrystal.h>                          // library untuk LCD
 #include <SPI.h>                                       // library untuk komunikasi SPI
 #include <nRF24L01.h>                           // library untuk komunikasi wireless
 #include <RF24.h>                                   // library untuk komunikasi wireless

 LiquidCrystal lcd(12, 11, 7, 6, 5, 4);          // Definsi pin untuk lcd
  void setup()
  {
      Serial.begin(9600);
      lcd.begin(16,2);
      lcd.setCursor(0,0);
      lcd.print("MODUL 4");
      delay(100);
      lcd.clear();
      lcd.print("SUN TRACKER");
      delay(100);
      lcd.clear();
      radio.begin();
      radio.openWritingPipe(addresses[0]); // 00002
      radio.openReadingPipe(1, addresses[1]); // 00001
      radio.setPALevel(RF24_PA_MAX);
   
    }
     void loop()
    {
    radio.write(&data, sizeof(data));
    Serial.println(data);
    delay(100);  {
      int c = Wire.read();
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("intensitas:");
      lcd.print(c);
      delay(100);
      lcd.clear();
  }


    }
6. Rangkaian Simulasi  [kembali]


     

7. Video simulasi  [kembali]




8. Foto Alat [kembali]


9. Video Project [kembali]





10. Analisa [kembali]

     Hasil pembacaan sensor ldr yaitu LDR1 , LDR2, LDR3 dan LDR4 akan diinisialisasikan sebagai INPUT  ke arduino melalui pin A0 A1 A2 dan A3. sebagai output dari arduino adalah dua buah motor servo yang diletakkan secara horizontal dan vertikal. dan inisialisasi pin lcd (4,5,6,7)

       Input dari sensor LDR akan diproses didalam arduino, jika intensitas cahaya pada LDR1(pin A0) >LDR2(pin A1) pada horizontal maka pada pin9 akan menghasilkan output HIGH (50 Hz) motor servo satu akan bergerak berlawana jarum jam CCW dan ditampilkan di lcd sebagai CCW. sedangkan jika LDR1(pin A0)<LDR2(pin A1) maka pin9 akan menghasilkan output LOW (0Hz) sehingga motor servo bergerak searah jarum jam CW dan akan di tampilkan di lcd sebagai CW. motor akan terus bergerak hingga hasil pembacaan sensor ldr bernilai sama.

      untuk sisi vertikal jika cahaya pada  LDR 3 >LDR 4 maka pin10 akan menghasilkan ouput HIGH atau bergerak secara vertikal.Begitu juga jika LDR 3 <LDR 4 maka pin10 akan menghasilkan output LOW dan ditampilkan di lcd sebgai CW dan motor servo akan berhenti bergerak jika intensitas cahaya yang diterima masing-masing sensor ldr memiliki nilai yang sama dengan artian bahwa solar panel telah mencapai posisi optimal untuk menerima cahaya.

11.Link Download [kembali]
        File Proteus - Download
        File HTML - Download
        File Program - Download
        Seluruh DataSheet - Download
        Library Sensor dan NRF24l01 - Download 
        Video  - Download ( rangkaian)
                   - Download (alat)
                   - Download (coding)

Tidak ada komentar:

Posting Komentar