Laporan Percobaan 2 Modul 3




1. Tujuan
[Kembali]

     -Memahami prinsip kerja dari komunikasi SPI 
     -Memahami rangkaian percobaan menggunakan komunikasi SPI 
     
2. Komponen
[Kembali]

    a. Arduino UNO 
        Arduino Uno adalah board mikrokontroler berbasis ATmega328 (datasheet). Memiliki 14 pin input dari output digital  dimana 6 pin input tersebut dapat digunakan sebagai output PWM dan 6 pin input analog, 16 MHz osilator kristal, koneksi USB, jack power, ICSP header, dan tombol reset. Untuk mendukung mikrokontroler agar dapat digunakan, cukup hanya menghubungkan Board Arduino Uno ke komputer dengan menggunakan kabel USB atau listrik dengan AC yang-ke adaptor-DC atau baterai untuk menjalankannya.

        b. LED 




    LED adalah komponen elektronika yang dapat memancarkan cahaya monokromatik ketika diberikan tegangan maju. LED merupakan keluarga Dioda yang terbuat dari bahan semikonduktor. Warna-warna Cahaya yang dipancarkan oleh LED tergantung pada jenis bahan semikonduktor yang dipergunakannya.

        c.. Resistor 



        Pada dasarnya Resistor adalah komponen Elektronika Pasif yang memiliki nilai resistansi atau hambatan tertentu yang berfungsi untuk membatasi dan mengatur arus listrik dalam suatu rangkaian Elektronika. 

        d. button 


            Push button switch (saklar tombol tekan) adalah perangkat / saklar sederhana yang berfungsi untuk menghubungkan atau memutuskan aliran arus listrik dengan sistem kerja tekan unlock (tidak mengunci). Sistem kerja unlock disini berarti saklar akan bekerja sebagai device penghubung atau pemutus aliran arus listrik saat tombol ditekan, dan saat tombol tidak ditekan (dilepas), maka saklar akan kembali pada kondisi normal.

    e. buzzer 



            Buzzer Elektronika adalah sebuah komponen elektronika yang dapat menghasilkan getaran suara berupa gelombang bunyi.

3. Dasar Teori
[Kembali]

   a. Arduino UNO 
Pin pin pada arduino UNO


konfigurasi pin Arduino UNO


            Arduino Uno adalah board mikrokontroler berbasis ATmega328 (datasheet). Memiliki 14 pin input dari output digital dimana 6 pin input tersebut dapat digunakan sebagai output PWM dan 6 pin input analog, 16 MHz osilator kristal, koneksi USB, jack power, ICSP header, dan tombol reset. Untuk mendukung mikrokontroler agar dapat digunakan, cukup hanya menghubungkan Board Arduino Uno ke komputer dengan menggunakan kabel USB atau listrik dengan AC yang-ke adaptor-DC atau baterai untuk menjalankannya. Setiap 14 pin digital pada arduino uno dapat digunakan sebagai input dan output, menggunakan fungsi pinMode(), digitalwrite(), dan digitalRead(). Fungsi fungsi tersebut beroperasi di tegangan 5 volt, Setiap pin dapat memberikan atau menerima suatu arus maksimum 40 mA dan mempunyai sebuah resistor pull-up (terputus secara default) 20-50 kOhm.

    b. LED 

        LED adalah komponen elektronika yang dapat memancarkan cahaya monokromatik ketika diberikan tegangan maju. LED merupakan keluarga Dioda yang terbuat dari bahan semikonduktor. Warna-warna Cahaya yang dipancarkan oleh LED tergantung pada jenis bahan semikonduktor yang dipergunakannya.

        Cara kerja LED hanya akan memancarkan cahaya apabila dialiri tegangan maju (bias forward) dari Anoda menuju ke Katoda. LED terdiri dari sebuah chip semikonduktor yang di doping sehingga menciptakan junction P dan N. Yang dimaksud dengan proses doping dalam semikonduktor adalah proses untuk menambahkan ketidakmurnian (impurity) pada semikonduktor yang murni sehingga menghasilkan karakteristik kelistrikan yang diinginkan. Ketika LED dialiri tegangan maju atau bias forward yaitu dari Anoda (P) menuju ke Katoda (K), Kelebihan Elektron pada N-Type material akan berpindah ke wilayah yang kelebihan Hole (lubang) yaitu wilayah yang bermuatan positif (P-Type material). Saat Elektron berjumpa dengan Hole akan melepaskan photon dan memancarkan cahaya monokromatik (satu warna).

        c.  Resistor 

            
Resistor merupakan salah satu komponen dasar elektronika, salah satu tipe resistor yaitu resistor tetap. Resistor tetap merupakan jenis resistor yang memiliki nilai hambatan yang relatif tetap. Komponen resistor tetap pada umumnya terbuat dari karbon, kawat atau paduan logam.

Nilai hambatan dari resistor tetap ini ditentukan oleh tebal dan panjangnya lintasan dari bahannya. Panjang lintasan tergantung dari berapa panjang alur dari lintasan resistor tersebut yang berbentuk spiral. 

Menentukan nilai hambatan resistor dari Kode Warna
Kode warna yang terdapat pada resistor menyatakan nilai tahanan (resistansi) dan toleransi dari resistor tersebut. Semakin kecil nilai toleransi dari suatu resistor maka akan semakin baik, dikarenakan nilai tahanan resistor yang dibaca menurut kode warna tersebut akan mendekati nilai tahanan dari resistor sebenarnya. 

Bila jumlah gelang resistor tersebut ada 4 buah maka cara membaca nilai tahanannya yaitu :
  • Gelang pertama menunjukkan angka pertama dari nilai tahanan
  • Gelang kedua menunjukkan angka kedua dari nilai tahanan
  • Gelang ketiga menunjukkan faktor pengali
  • Gelang keempat menunjukkan nilai toleransi

Bila jumlah gelang resistor tersebut ada 5 buah maka cara membaca nilai tahanannya yaitu :
  • Gelang pertama menunjukkan angka pertama dari nilai tahanan
  • Gelang kedua menunjukkan angka kedua dari nilai tahanan
  • Gelang ketiga menunjukkan angka ketiga dari nilai tahanan
  • Gelang keempat menunjukkan faktor pengali
  • Gelang kelima menunjukkan nilai toleransi

Bila jumlah gelang resistor tersebut ada 6 buah maka cara membaca nilai tahanannya yaitu :
  • Gelang pertama menunjukkan angka pertama dari nilai tahanan
  • Gelang kedua menunjukkan angka kedua dari nilai tahanan
  • Gelang ketiga menunjukkan angka ketiga dari nilai tahanan
  • Gelang keempat menunjukkan faktor pengali
  • Gelang kelima menunjukkan nilai toleransi
  • Gelang kelima menunjukkan nilai koefisien suhu

    d. button 


    Sebagai device penghubung atau pemutus, push button switch hanya memiliki 2 kondisi, yaitu On dan Off (1 dan 0). Istilah On dan Off ini menjadi sangat penting karena semua perangkat listrik yang memerlukan sumber energi listrik pasti membutuhkan kondisi On dan Off.

Karena sistem kerjanya yang unlock dan langsung berhubungan dengan operator, push button switch menjadi device paling utama yang biasa digunakan untuk memulai dan mengakhiri kerja mesin di industri. Secanggih apapun sebuah mesin bisa dipastikan sistem kerjanya tidak terlepas dari keberadaan sebuah saklar seperti push button switch atau perangkat lain yang sejenis yang bekerja mengatur pengkondisian On dan Off.

    


            Berdasarkan fungsi kerjanya yang menghubungkan dan memutuskan, push button switch mempunyai 2 tipe kontak yaitu NC (Normally Close) dan NO (Normally Open).
  • NO (Normally Open), merupakan kontak terminal dimana kondisi normalnya terbuka (aliran arus listrik tidak mengalir). Dan ketika tombol saklar ditekan, kontak yang NO ini akan menjadi menutup (Close) dan mengalirkan atau menghubungkan arus listrik. Kontak NO digunakan sebagai penghubung atau menyalakan sistem circuit (Push Button ON).
  • NC (Normally Close), merupakan kontak terminal dimana kondisi normalnya tertutup (mengalirkan arus litrik). Dan ketika tombol saklar push button ditekan, kontak NC ini akan menjadi membuka (Open), sehingga memutus aliran arus listrik. Kontak NC digunakan sebagai pemutus atau mematikan sistem circuit (Push Button Off).

4.  Percobaan
[Kembali]

    a.  Prosedur Percobaan
[Kembali]

              1. Memahami materi komunikasi SPI
              2. Merangkai simulasi rangkaian 
              3. Menambahakna komponen tambahan sesuai kondisi yang diminta
              4. Membuat listing program 
              5. Mengopy kan hex dari program dan dipastekan pada arduino master dan arduino slave
              6. Menjalankan rangkaian 

    b. Hardware
[Kembali]

        Arduino
                                            

        Resistor 

                                                        

        LED 

                        
                                                

             Button 

        
        Buzzer



    c.  Rangkaian Simulasi
[Kembali]



    d. Video


            Pada percobaan komunikasi SPI digunakan 2 Arduino untuk master dan untuk slave. Selanjutnya dihubungkan pin CLK, MOSI, MISO dan SS pada master dengan slave. Selanjutnya pada pin 7 master dihubungkan dengan buzzer yang telah dibungkan dengan sebuah transistor dan resistor sebesar 220 ohm. Dan pada pin 6 dihubungkan dengan sebuah led dan resistor sebesar 220 ohm dan dilanjutnya keground. Pada slave pin 7 dihubungkan dengan buzzer dan pada pin 6 dihubungkan dengan led. Selanjutnya digunakan 2 buah button yang akan digunakan sebagai input_pullup.

Selanjutnya pada listing program master dideklrasikan komunikasi yang digunakan yaitu komunikasi SPI, dan dideklarasi pin 6 untuk buzzer, pin 7 untuk led, dan pin 2 untuk button. Pada void setup, terdapat serial.begin untuk pengaturan kecepatan pengiriman atau penerimaan data sebesar 115.200 bps. Selajutnya pendeklarasian button sebagai input pull up, dan buzzer dan led sebagai output. Selanjutnya pada bagian void loop, akan dideklarasikan kondisi dimana jika x = 1 atau button value=LOW maka master akan mengirimkan data menuju slave dengan digitalWrite (SS, LOW). Dan master juga akan menerima data dari slave, jika data yang diterima yaitu 1, maka buzzer akan hidup, dan led akan hidup dan sebaliknya.

Pada listing program slave, dideklarasikan komunikasi yang digunakan, dan buzzer pada pin 6, led  pada pin 7, button pada pin 2. Selanjutnya dideklrasikan bahwa slave akan menerima dan mengirimkan data pad amaster. Pada void setup, dideklarasi baudrate sebesar 115.200 bps. Selajutnya pad avoid loop, jika slave menerima data 1, maka buzzer dan LED akan menyala. Sedangkan pada kondisi lain, buzzer dan led akan mati. 




    e. Flowchart
        [Kembali]

        MASTER 


            SLAVE



    f. Listing Program 
        [Kembali]
        
        //Master

#include<SPI.h>    //deklarasi komunikasi SPI                        
#define buzz 6     //deklarasi pin 6 sebagai buzzer
#define led 7       //deklarasi pin 7 sebagai led
#define button 2   // deklarasi pin 2 untuk button 
int buttonvalue;     
int x;               // deklarasi nilai x

void setup (void)  //semua kode dalam fungsi ini dieksekusi sekali

{
  Serial.begin(115200);   //pengatur kecepatan pengiriman atau penerimaan data     
  
  pinMode(button,INPUT_PULLUP);  //deklarasi button sebagai input pull_up          
  pinMode(buzz,OUTPUT);            //deklarasi buzzer sebagai output
  pinMode(led,OUTPUT);             //deklarasi led sebagai output  
  
  SPI.begin();                         
  SPI.setClockDivider(SPI_CLOCK_DIV4);  //menggunakan kecepatan prosesor sebesar 4 hz
  digitalWrite(SS,HIGH);                // slave select berlogika HIGH
}

void loop(void)      //kode dalam fungsi ini dieksekusi berulang 
{
  byte Mastersend,Mastereceive;        //master akan mengirim dan master akan menerima

  buttonvalue = digitalRead(button);  //akan dibaca sebagai input pada button 

  if(buttonvalue == LOW)               
  {
    x = 1;
  }
  else
  {
    x = 0;
  }
  
  digitalWrite(SS, LOW);                 
  
  Mastersend = x;                            
  Mastereceive=SPI.transfer(Mastersend);  //master akan mentransfer 
  
  if(Mastereceive == 1)                   
  {
    digitalWrite(buzz,HIGH);
    digitalWrite(led,HIGH);             
    Serial.println("Master Buzz ON");
    Serial.println("Master led ON");
    delay(1000);
  }
  else
  {
   digitalWrite(buzz,LOW); 
   digitalWrite(led,LOW);         

  }
  delay(1000);
}

// Slave

#include<SPI.h>    //deklarasi komunikasi SPI
#define buzz 6      //deklarasi buzzer pada pin 6
#define led 7        //deklarasi led pada pin 7
#define button 2   // deklarasi button pin 2

volatile boolean received;       //deklrasi bahwa slave akan menjadi penerima 
volatile byte Slavereceived,Slavesend;  // slave menjadi pengirim dan penerima
int buttonvalue;
int x;
void setup()

{
  Serial.begin(115200);    //pengatur kecepatan pengiriman atau penerimaan data
  
  pinMode(button,INPUT_PULLUP);      //button sebagai input pull_up       
  pinMode(buzz,OUTPUT);               //buzzer sebagai output
  pinMode(led,OUTPUT);                //led sebagai output
  pinMode(MISO,OUTPUT);               //pin miso akan menjadi output

  SPCR |= _BV(SPE);         //SPCR = BV            
  received = false;        // jika input salah, maka output tidak akan menyala

  SPI.attachInterrupt();        //SPI diinteruppt         
  
}

ISR (SPI_STC_vect)                       
{
  Slavereceived = SPDR;        //slave akan menjadi received
  received = true;                       
}

void loop()            //semua kode dalam fungsi ini akan dieksekusi berulang
{ if(received)                           
   {
      if (Slavereceived==1) 
      {
        digitalWrite(buzz,HIGH);  
        digitalWrite(led,HIGH);       
        Serial.println("Slave buzz ON");
        Serial.println("Slave led ON");
        delay(1000);
      }else
      {
        digitalWrite(buzz,LOW);   
        digitalWrite(led,LOW);    
       Serial.println("Slave buzz OFF");
       Serial.println("Slave led OFF");
      }
      
      buttonvalue = digitalRead(button);
      
      if (buttonvalue == LOW)             
      {
        x=1;
        
      }else
      {
        x=0;
      }
      
  Slavesend = x;                             
  SPDR = Slavesend;                          
  delay(1000);
}
}

    g. Kondisi
[Kembali]

    Kondisi : Tambahkan buzzer sebagai output, sehingga output yang tertera LED dan buzzer.

    Analisa :

    1. Pada komunikasi SPI menggunakan lebih dari 1 meter dalam sistem yang sama apakah dapat dilakukan ? Jelaskan alasannya !

    Jawab : 
    Pada komusikasi SPIO tidakdapat digunakan lebih dari 1 master dalam sistem yang sama, karena master bagaikan otak yang mengatur jalannya sistem, tetapi 1 master apat menjalankan beberapa slave. 

`2. Pada kondisi master menggunakan lebih 1 satu slave, bagaimana cara agar master mengirimkan data yang berbeda pada setiap slave? Jelaskan! 

    Jawab : 
    Pada komunikasi SPI bisa menggunakan lebih dari 1 slave, dan untuk master dapat menggunakan 1 master dengan beberapa slave. Untuk penghubung master dengan slave dapat dihubungkan dengan pin ss, jika terdapat 2 slave pada rangkaian maka dihubungkan pin ss1 dan pin ss2 dari master menuju slave. 
    Cara untuk master mengirimkan data yang berbeda tiap slave dengan cara membuat perbedaan paa listing program master. Jika ingin mengirimkan data maka akan memberikan logika LOW kepada slave yang akan dikirimkan. Data dari master akan dikirim kepada slave yang diberikan pin LOW melalui pin MOSI, sedagkan untuk pin MISO berguna untuk master mendapatkan respon dari slave. 

    3.     Apakah baudrate pada master dan slave pada komunikasi SPI harus bernilai sama ? berikan alasan!

    Jawab : 
    Baudrate merupakan pengatur kecepatan dat ayang akan dikirim atau diterima pada 1 arduino ke arduino lain melalui komunikasi serial. Untuk kecepatan data dari master ataupun slave pada komunikasi SPI tidak berpengaruh jika besarnya berbeda, besar nilai baudrate hanya untuk mempengaruhi cepat atau lambatnya pengiriman data.


    
    h. Link Download
[Kembali]

Rangkaian disini
Video disini
Listing Program Master disini
Listing Program Slave disini
Library Arduino UNO disini
Datasheet button disini
Datasheet resistor disini
Datasheet led disini
Datasheet Arduino UNO disini 
Datasheet buzzer disini

Tidak ada komentar:

Posting Komentar