Laporan Akhir Percobaan 2



  [KEMBALI KE MENU SEBELUMNYA]





1. Komponen [kembali]


    a. Arduino

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

Buzzer adalah sebuah komponen elektronika yang dapat mengubah sinyal listrik menjadi getaran suara. Buzzer dapat bekerja dengan baik dalam menghasilkan frekuensi kisaran 1-5 KHz hingga 100 KHz untuk aplikasi ultrasound. Tegangan operasional buzzer yang umumnya berkisar 3-12 V. Cara Kerja Buzzer yaitu egangan listrik yang mengalir ke buzzer akan menyebabkan gerakan mekanis, gerakan tersebut akan diubah menjadi suara atau bunyi yang dapat didengar oleh manusia.



    c. Push Button

Push Button adalah saklar yang berupa tombol dan berfungsi sebagai pemutus atau penyambung arus listrik dari sumber arus ke beban listrik. Push button memiliki kontak NC (normally close) dan NO (normally open). Prinsip kerja push button adalah pemutus dan penyambung aliran listrik. Namun dalam hal ini, ia tak bersifat mengunci. Jadi ia akan kembali ke posisi semua saat selesai ditekan. Saat push button ditekan, ia menjadi bernilai HIGH dan akan menghantarkan arus listrik. Sedangkan apabila dilepas, maka ia bernilai LOW dan memutus arus listrik.






2. Rangkaian Simulasi [kembali]



 Prinsip Kerja:

Pada rangkaian terdapat dua buah Arduino Uno, yang sebelah kanan merupakan Master sedangkan yang kiri adalah Slave. Pada pin Digital 10,11,12,13 saling terhubung kedua belah Arduino, kemudian pada pin 2 terhubung ke button dan buzzer. Terdapat Resistor sebesar 1k ohm disetiap kaki (pin 2) Arduino.

Data yang dapat dikirimkan dari Master ke Slave (MOSI), maupun sebaliknya (MISO) merupakan bentuk Communication-nya (dapat dilihat pada listing program). Adapun ketika button diPull-up, maka akan berlogika high, dan juga mengakibatkan Buzzer berlogika high (aktif/berbunyi). Namun sebelumnya kita perlu mengatur Operating voltage pada buzzer agar selalu lebih kecil daripada tegangan yang didapatnya.




3. Flowchart [kembali]

Master:




Slave:






4. Listing Program [kembali]

Master:

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

#define button 2

void setup (void) {

  pinMode(button, INPUT_PULLUP);

  Serial.begin(115200 ); //Set baud rate 115200

  digitalWrite(SS, HIGH);

  // disable Slave Select

  SPI.begin ();

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

}

void loop (void) {

  char c;

  int nilai=digitalRead(button);

  if(nilai==0){

   digitalWrite(SS, LOW); //enable Slave Select

  // send test string

  for (const char * p = "Hello, world!\r" ; c = *p; p++)

  {

    SPI.transfer (c);

    Serial.print(c);

  }

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

  delay(2000);

  }

}

 

Slave:

#include <SPI.h>

#define led 2

 

char buff [50];

volatile byte indx;

volatile boolean process;

 

void setup (void) {

  Serial.begin (115200);

  pinMode(led, 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;

  SPI.attachInterrupt(); // turn on interrupt

}

 

ISR (SPI_STC_vect) // SPI interrupt routine

{

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

  if (indx < sizeof buff) {

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

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

      process = true;

  }

}

void loop (void) {

  if (process) {

    digitalWrite(led, 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(led, LOW);

  }

}




5. Video [kembali]







6. Kondisi [kembali]

Percobaan 2 Kondisi 13: Ganti LED menjadi buzzer, tambahkan resistor sebelum buzzer sebesar 1k ohm

Analisa 

1. Jelaskan transmisi data pada SPI dan gambakan timing diagram dari transmisi data pada SPI

Dalam komunikasi SPI, dua atau lebih  device yang terhubung yang salah satunya akan bertindak sebagai Master dan yang lainnya akan bertindak sebagai Slave. 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 ). SPI menggunakan empat pin untuk berkomunikasi. Yaitu MOSI, MISO, SCK dan  SS.

- MOSI berarti Master Output Slave Input, dimana pin ini digunakan sebagai Master mengirim data dan Slave sebagai penerima data.

- MISO berarti Master Input Slave Output, dimana pin ini digunakan sebagai Master bertindak sebagai penerima data dan Slave sebagai pengirim data.

- SCK, SPI Clock Line yang berarti clock yang digunakan untuk berkomunikasi (Komunikasi synchronous).

- SS artinya Slave Select. Jika SS bernilai 0 atau low maka Device bertindak sebagai slave dan jika bernilai 1 atau high maka device bertindak sebagai Master.

Timing Diagram:


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

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.



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












Tidak ada komentar:

Posting Komentar