Laporan Akhir Percobaan 2 Modul 3




1. Komponen[kembali]

A.Arduino UNO
Arduino adalah kit elektronik atau papan rangkaian elektronik open source yang di dalamnya terdapat komponen utama yaitu sebuah chip mikrokontroler dengan jenis AVR dari perusahaan Atmel.


B.LED

LED adalah suaatu semikonduktor yang memancarkan cahaya,  LED mempunyai kecenderungan polarisasi. LED mempunyai kutub positif dan negatif (p-n) dan hanya akan menyala bila diberikan arus maju. Ini dikarenakan LED terbuat dari bahan semikonduktor yang hanya akan mengizinkan arus listrik mengalir ke satu arah dan tidak ke arah sebaliknya. Bila LED diberikan arus terbalik, hanya akan ada sedikit arus yang melewati  LED. Ini menyebabkan LED tidak akan mengeluarkan emisi cahaya.
 
C.Button


d. Resistor
    Resistor atau hambatan adalah salah satu komponen elektronika yang memiliki nilai hambatan tertentu, dimana hambatan ini akan menghambat arus listrik yang mengalir melaluinya. Resistor berfungsi sebagai penghambat arus listrik. Jika ditinjau secara mikroskopik, unsur-unsur penyusun resistor memiliki sedikit sekali elektron bebas. Akibatnya pergerakan elektronya menjadi sangat lambat. Sehingga arus yang terukur pada multimeter akan menunjukan angka yang lebih rendah jika dibandingkan rangkaian listrik tanpa resistor.
    Cara membaca kode warna pada gelang warna:




 

2. Rangkaian Simulasi[kembali]

 

Prinsip Kerja Rangkaian :

Pada rangkaian simulasi SPI, disini kita menggunakan 2 buah arduino dimana yang satu sebagai master dan yang lainnya sebagai slave. Untuk listing program masing-masing arduino dapat dilihat di atas. KEdua arduino ini saling berhubungan melalui pin MISO, MOSI, SCK, dan SS.

PAda saat kita menekan push button, maka nantinya buzzer akan berbunyi selama waktu 2 detik, sesuai yang telah kita buat pada program arduino master. Selanjutnya buzzer akan berhenti dengan selang waktu 1 detik sesuai dengan yang kita buat pada program arduino slave. Buzzer akan berbunyi saat push button nya kita matikan.



3. Flowchart[kembali]








4. Listing Program[kembali]

      //MASTER


      #include <SPI.h> //Deklarasi library SPI

      #define button 2


      char data = "1";

      void setup (void) {

        pinMode(button, INPUT_PULLUP);

        Serial.begin(115200); //untuk memulai serial dengan Set baud rate 115200 untuk USART dan SPI

        digitalWrite(SS, HIGH); // disable Slave Select

        SPI.begin (); // untuk memulai komunikasi SPI

        SPI.setClockDivider(SPI_CLOCK_DIV8); //divide the clock by 8

      }


      void loop (void) {

        char c; // menginisialisasikan variabel C dengan tipe data char

        int nilai = digitalRead(button);

        if (nilai == 0) {

          digitalWrite(SS, LOW); // enable Slave Select untuk menghidupkan dari slave dibuat low karena si slave akan hidup ketika diberi input low karena dari master berlogika HIGH supaya arus mengalir

          // send test string

          for (const char * p = "1" ; c = *p; p++)

          {

            SPI.transfer (c);

            Serial.print(c); // sebagai penghubung serial monitornya

          }

          SPI.transfer("1");

          digitalWrite(SS, HIGH); // disable Slave Select menggunakan HIGH dikarenkan HIGH bertemu HIGH akan mati

          delay(2000);

        }

      }


//SLAVE

#include <SPI.h> //Deklarasi library SPI

#define buzzer 2


char buff [50]; // untuk menginisialisasikan variabel buff pada spi.h tinggal tambahkan library

volatile byte indx;// tidak ada koma

volatile boolean process;//  tidak ada koma dan boolean merupakan tipe data yang akan memilih


void setup (void) {

  Serial.begin (115200);// serial begin antara master dan slave harus sama

  pinMode(buzzer, OUTPUT); // have to send on master in so it set as output

  SPCR |= _BV(SPE); // turn on SPI in slave mode

  indx = 0; // buffer empty

  process = false;// Ketika dia masuk maka dia akan mati

  SPI.attachInterrupt(); // turn on interrupt

}


ISR (SPI_STC_vect) // SPI interrupt routine // fungsi yg digunakan Ketika program sudah berjalan

{ // fungsi yg digunakan Ketika program sudah berjalan

  byte c = SPDR; // read byte from SPI Data Register from slave

  if (indx < sizeof buff) {

    buff [indx++] = c; // save data in the next index in the array buff

    if (c == '1') //check for the end of the word

      process = true;

  }

  if (c == '1') { //check for the end of the word

    process = true;

  }

}


void loop (void) {

  if (process) {

    digitalWrite(buzzer, HIGH);

    process = false; //reset the process

    Serial.println (buff); //print the array on serial monitor

    indx = 0; //reset button to zero

    delay(1000);

  }

  else

  {

    digitalWrite(buzzer, LOW);

  }

}


5. Video[kembali]





6. Analisa[kembali]

   Ganti LED menjadi Buzzer

Percobaan 2
1. Jelaskan transmisi data pada SPI dan gambarkan timing diagram dari transmisi data pada SPI

Jawab :

Pengiriman data dimulai dari LSB ke MSB. Data D0 pada MSB bergeser ke R7 pada LSB dan data MSB bergeser ke kanan 1 bit melalui MOSI sehingga data R7 pada LSB masuk ke MSB melalui MISO. SPI beroperasi berdasarkan shift register baik master device maupun slave device, keduanya akan mempunyai 8 bit shift register. Untuk memulai komunikasi, bus master melakukan konfigurasi clock, dengan catatan frekuensi atau kecepatan transfer data antara SPI master device dan slave device harus sama. Setiap satu clock SPI dilakukan, maka akan terjadi komunikasi full duplex antara master device dengan slave device. Master mengirimkan satu Bit pada line MISO, lalu slave akan membacanya. Setelah itu, pada line MISO slave device akan mengirimkan data kembali ke master device dan master akan membacanya. Urutan atau sekuen ini akan bertahan seperti di atas meskipun kita tidak menggunakan komunikasi Full Duplex atau hanya menggunakan satu line komunikasi saja (seperti simplex ).

Timing Diagram:

 


2. Bagaimana cara menghubungkan rangkaian SPi saat menggunakan lebih dari satu slave ?

Jawab :


 

Berdasarkan gambar diatas, rangkaian SPI dengan lebih dari satu slave dihubungkan secara parallel antara kabel master dengan slave, lalu jalur SS (slave select ) digunkan untuk memilih slave yang akan digunakan oleh master.

Rangkaian SPI dapat menggunakan lebih dari satu slave, yaitu maksimal 4 slave. Untuk penambahan slave lebih dari satu (misal 2), maka perubahan yang dilakukan yaitu perubahan rangkaian dan juga programnya. Jika menggunakan lebih dari 1 slave (multislave), maka terdapat 2 bentuk rangkaian yang dapat dibuat, yaitu Independent Slave Configuration dan Daisy Chain Configuration.

  • Independent Slave Configuration

    Pin SS/CS terhubung ke slave yang berbeda-beda. Jadi jika master ingin berkomunikasi dengan slave tertentu, master akan mengirimkan sinyal LOW kepada slave tersebut. Setelah diberi logika LOW kepada slave yang dituju, data pada master akan dikirim ke slave melalui pin MOSI. Dan pada pin SLCK juga dihasilkan clock pada saat yang bersamaan. Dan respon akan diterima oleh master dengan cara mengirim lagi sinyal clock. Jadi data akan dikirim oleh slave melalui pin MISO.

    Untuk program pada Independent Slave Configuration, program pada master harus ada 2 alamat untuk SS/CS yaitu alamat untuk slave select 1 dan slave select 2. Fungsi dari alamat ini yaitu sebagai identitas untuk masing-masing slave. Dan untuk program pada slave juga diubah, yaitu pada kode identitas yang sudah diinisiasi sebelumnya pada master. Tujuannya agar slave mengetahui saat master mengirim kode. Pada slave juga diinisiasi kode untuk perintah menerima atau mengirim data.

  • Daisy Chain Configuration

    Disini master hanya memerlukan satu pin SS/CS untuk berkomunikasi dengan slave. Master akan mengirimkan sinyal LOW kepada slave untuk mengirimkan data yang berfungsi sebagai inisiasi komunikasi. Lalu master akan mengirim data ke slave 1 melalui pin MOSI. Dan pada pin SLCK juga dihasilkan clock pada saat yang bersamaan. Data yang sudah dikirim ke Slave 1 diteruskan ke Slave 2 dan seterusnya. Selama proses komunikasi berlangsung, logika pada SS/CS tetap pada posisi LOW. Master harus mengirimkan sinyal clock yang cukup hingga data sampai pada slave terakhir. Apabila master ingin mendapatkan respon, maka ia harus mengirim sinyal clock hingga data kembali ke master.

 

7. Link Download[kembali]

File Percobaan Proteus disini

File Program Arduino disini

File Listing Program Master disini

File Listing Program Slave disini

Video Simulasi disini

Library Arduino disini

Datasheet Arduino disini

Flowchart disini

HTML disini

Tidak ada komentar:

Posting Komentar