Laporan akhir percobaan 2 modul 3





1. Komponen[kembali]


a. Arduino UNO

    



B. Buzzer





C. Button


D. Resistor
 





2. Rangkaian Simulasi[kembali]


Prinsip Kerja:

  Arduino uno pertama berfungsi sebagai master dan arduino kedua sebagai slave. Pin 10, 11, 12, 13 pada mater dihubungkan ke pin 10, 11, 12, 13 pad slave.Pin 2 digital master dihubungkan ke button dan pin 2 slave dihubungkan ke buzzer, tapi terlebih dahulu operating voltage diturunkan menjadi 2V, lalu kemudian di hubungkan ke ground. Push button berfungsi sebagai input pullup dari master, artinya apabila push button ditekan maka akan berlogika low (0) dan apabila diangkat maka akan berlogika high (1) Arduino Master akan menerima input dari push button. Kemudian Arduino Master akan mentransfer data ke Arduino Slave. Pada Arduino Slave, akan di periksa apakah ada perintah dari Arduino Master. Jika ada, maka buzzer akan hidup atau menyala, begitu juga sebaliknya. Sesuai pada input arduino slave, kondisi awal buzzer mati lalu hidup dengan delay 200ms.



3. Flowchart[kembali]




. Master


B. Slave







4. Listing Program[kembali]

A. 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);

  }


B. 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, LOW);


    delay(200);

    digitalWrite(buzzer, HIGH);


     delay(200);

  }

  else

  {

    digitalWrite(buzzer, LOW);

  }

}


5. Video[kembali]












6. Kondisi[kembali]

Percobaan 2
Kondisi 11 : Ganti LED menjadi Buzzer, Buatlah kondisi awal Buzzer mati, lalu hidup dengan delay 200 ms

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

Jawab:

Pada SPI, device terhubung satu sama lain secara Full Duplex, yaitu terjadi komunikasi secara timbal balik. Satu clock pada SPI, master mengirimkan satu bit data ke slave, lalu slave akan membacanya dalam line yang sama. Setelah itu,  slave device akan mengirimkan data kembali ke master device dan master juga akan membacanya dalam line yang sama.

Transmisi data melibatkan dua shift register yang terhubung secara topologi ring seperti 8 bit, 10 bit atau 12 bit. Umumnya transmisi data menggunakan 8 bit shift register.  Data bergeser satu persatu dari bit 1 sampai bit 8. Master dan slave akan bertukar data lalu dilanjutkan dengan bergantian slave dan master. Jika data yang dikirim banyak, maka shift register akan diisi ulang dengan data yang baru dan proses pengirimannya pun diulang. Proses ini akan berhenti jika master mengirim sinyal toggle untuk mengakhiri pemilihan slave.







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

Jawab:

    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 Rangkaian klik disini

Video Simulasi Rangkaian klik disini

Listing Program Master klik disini

Listing Program Slave klik disini

Flowchart klik disini

Library Arduino UNO klik disini

Datasheet Arduino UNO klik disini

HTML klik disini

No comments:

Post a Comment

BAHAN PRSENTASI UNTUK MATA KULIAH SISTEM DIGITAL SEMESTER GENAP 2020-2021 OLEH AHMAD MIZAN 1910953037 TEKNIK ELEKTRO ...