Laporan Akhir 2



 

Modul 3 Percobaan 2


1. Komponen [Kembali]

 a. Push Buttom 

Push button adalah satu komponen elektronika yang dapat memutus dan mengalirkan arus listrik dalam suatu rangkaian project Arduino. fungsi push button adalah untuk memutus dan menyambungkan arus listrik.


b. LED

LED merupakan kependekan dari Light Emitting Diode, yakni salah satu dari banyak jenis perangkat semikonduktor yang mengeluarkan cahaya ketika arus listrik melewatinya. LED sering dijadikan sebagai indikator atau output dalam rangkaian elektronika.



c. 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. Arduino yang kita gunakan dalam praktikum ini adalah Arduino Uno yang menggunakan chip AVR ATmega 328P.



d. Resistor

    Resistor merupakan komponen penting dan sering dijumpai dalam sirkuit Elektronik. Boleh dikatakan hampir setiap sirkuit Elektronik pasti ada Resistor. Tetapi banyak diantara kita yang bekerja di perusahaan perakitan Elektronik maupun yang menggunakan peralatan Elektronik tersebut tidak mengetahui cara membaca kode warna ataupun kode angka yang ada ditubuh Resistor itu sendiri.


2. Rangkaian  Simulasi

Rangkai ketika LED sebelah kanan menyala

Rangkaian Ketika LED sebelah kiri menyala

Rangkaian ketika LED kiri dan kanan menyala bersama


Prinisp Kerja :

Rangkaian pada percobaan 2 ini adalah rangkaian SPI (Serial Peripheral Interfacedimana rangkaian ini termasuk rangkaian serial sinkron, jadi ada pembanding nya. Arduino sebelah kiri berperan sebagai master, yang akan memberi perintah kepad arduino di sebelah kanan yang berperan sebagai slave, yang akan menjalankan perintah dari master. Rangkaian ini juga terdiri dari LED sebagai output, resistor sebagai pengatur tegangan/hambatan agar arus yang masuk ke LED tidak terlalu berat, dan juga ada push button yang berperan sebagai switch (penghubung/pemutus aliran arus)

Pada SPI ini terdapat 4 pin yang digunakan yaitu 
1. MOSI = Master Out Slave In. Artinya jika dikonfigurasi sebagai master maka pin MOSI sebagai output tetapi jika dikonfigurasi sebagai slave maka pin MOSI sebagai input.
2. MISO = Master In Slave Out. Artinya jika dikonfigurasi sebagai master maka pin MISO sebagai input tetapi jika dikonfigurasi sebagai slave maka pin MISO sebagai output.
3. SCK = Serial Clock. Clock Jika dikonfigurasi sebagai master maka pin CLK berlaku sebagai output tetapi jika dikonfigurasi sebagai slave maka pin CLK berlaku sebagai input.
4. SS/CS = Slave Select/ Chip Select adalah jalur master memilih slave mana yang akan dikirimkan data.

Pada rangkaian ini karena slave nya hanya ada 1, pin yang wajib dihubungkan hanya MISO, MOSI, dan SCL. Data akan ditransmisikan dari Master melalui pin MISO (pin MISO aktif) dan akan diterima oleh Slave. Kemudian Slave mengirim lagi ke Master melalui pin MOSI (pin MOSI aktif)

Data dari master di transmisikan ke Slave bisa secara simplex (1 arah), half duplex (2 arah dengan proses), dan full duplex (2 arah tanpa proses). Program yang telah dirancang kemudian ditmbahkan ke arduino sehingga menghasilkan output yang diinginkan, yaitu LED awalnya mati, lalu hidup secara bergantian dengan delay 500 ms.



3. Flowchart







4. Listing Program

//Master

#include<SPI.h>                             //Library for SPI 
#define LED 7           
#define ipbutton 2
int buttonvalue;
int x;
void setup ()

{
  Serial.begin(115200);                   //Starts Serial Communication at Baud Rate 115200 
  
  pinMode(ipbutton,INPUT);                //Sets pin 2 as input 
  pinMode(LED,OUTPUT);                    //Sets pin 7 as Output
  
  SPI.begin();                            //Begins the SPI commnuication
  SPI.setClockDivider(SPI_CLOCK_DIV16);    //Sets clock for SPI communication at 8 (16/8=2Mhz)
  digitalWrite(SS,HIGH);                  // Setting SlaveSelect as HIGH (So master doesnt connnect with slave)
}

void loop()
{
  byte Mastersend,Mastereceive;          

  buttonvalue = digitalRead(ipbutton);   //Reads the status of the pin 2

  if(buttonvalue == HIGH)                //Logic for Setting x value (To be sent to slave) depending upon input from pin 2
  {
    x = 1;
  }
  else
  {
    x = 0;
  }
  
  digitalWrite(SS, LOW);                  //Starts communication with Slave connected to master
  
  Mastersend = x;                            
  Mastereceive=SPI.transfer(Mastersend); //Send the mastersend value to slave also receives value from slave
  
  if(Mastereceive == 1)                   //Logic for setting the LED output depending upon value received from slave
  {
    digitalWrite(LED,HIGH);
    delay(500);
    digitalWrite(LED,LOW);
          //Sets pin 7 HIGH
    Serial.println("Master LED ON");
  }
  else
  {
   digitalWrite(LED,LOW);               //Sets pin 7 LOW
   Serial.println("Master LED OFF");
  }
  delay(250);
}

// SLAVE PROGRAM


#include<SPI.h>
#define LEDpin 7
#define buttonpin 2
volatile boolean received;
volatile byte Slavereceived,Slavesend;
int buttonvalue;
int x;
void setup()

{
  Serial.begin(115200);
  
  pinMode(buttonpin,INPUT);               // Setting pin 2 as INPUT
  pinMode(LEDpin,OUTPUT);                 // Setting pin 7 as OUTPUT
  pinMode(MISO,OUTPUT);                   //Sets MISO as OUTPUT (Have to Send data to Master IN 

  SPCR |= _BV(SPE);                       //Turn on SPI in Slave Mode
  received = false;

  SPI.attachInterrupt();                  //Interuupt ON is set for SPI commnucation
  
}

ISR (SPI_STC_vect)                        //Inerrrput routine function 
{
  Slavereceived = SPDR;         // Value received from master if store in variable slavereceived
  received = true;                        //Sets received as True 
}

void loop()
{ if(received)                            //Logic to SET LED ON OR OFF depending upon the value recerived from master
   {
      if (Slavereceived==1) 
      {
        digitalWrite(LEDpin,HIGH);
        delay(500);    
        digitalWrite(LEDpin, LOW);//Sets pin 7 as HIGH LED ON
        Serial.println("Slave LED ON");
      }else
      {
        digitalWrite(LEDpin,LOW);          //Sets pin 7 as LOW LED OFF
        Serial.println("Slave LED OFF");
      }
      
      buttonvalue = digitalRead(buttonpin);  // Reads the status of the pin 2
      
      if (buttonvalue == HIGH)               //Logic to set the value of x to send to master
      {
        x=1;
        
      }else
      {
        x=0;
      }
      
  Slavesend=x;                             
  SPDR = Slavesend;                           //Sends the x value to master via SPDR 
  delay(250);
}
}

5. Video





6. Kondisi

Buatlah kondisi awal LED mati, lalu hidup berkedip dengan delay 500 ms

7. Analisa

1.      1.      Bagaimana jika set baud rate yang di master dan di slave di tukar ?

Jawab : Set baud rate pada Master dan Slave adalah 115200. Sedangkan jika ditukar salah satu atau keduanya dengan 9600, maka rangkaian akan tetap berjalan  seperti yang diinginkan karena transmisi data secara full duplex  sehingga tidak ada terjadi penumpukan data-data (bit-bit).

2.      Jelaskan apakah percobaan berupa simplex, half duplex, atau full duplex (analisa dari program, apakah dari master/slave, lalu pin apa yang aktif)

Jawab : Rangkaian tersebut adalah rangkaian SPI dengan komunikasi secara full duplex. Hal ini dapat diketahui dari pin yang dihubungkan adalah pin MISO dan MOSI dimana data bertransmisi dari master ke slave melalui pin MISO lalu tanpa diproses, data langsung ditransmisikan kembali ke master melalui pin MOSI. Ini dapat terjadi karena bilik-bilik pada slot bit yang kosong dapat langsung diisi oleh bit yang datang, begitu seterusnya.

3.      SPI_CLOCK_DIV8. Kenapa 8? Bagaimana jika diganti dengan 16?

Jawab : SPI_CLOCK_DIV8. Artinya adalah membagi clock pada komunikasi menjadi 16/8 = 2 Mhz. Kenapa 8? Karena pembagi yang tersedia bisa berupa 2,4,8,16,32,64,128. Jadi walaupun diganti menjadi 16, rangkaian masih bisa berjalan sesuai dengan yang diinginkan.


8. Link Download

File HTML - Download
File Rangkaian Simulasi - Download
File Video Simulasi - Download
Listing Program Master - Download
Listing Program Slave - Download

Tidak ada komentar:

Posting Komentar

BAHAN PRESENTASI UNTUK MATAKULIAH SISTEM DIGITAL 2021 OLEH: Elfiwani Juliaranti 1910952006 Dosen Pengampu: Dr. ...

Cari Blog Ini