Selasa, 27 Oktober 2020

PERCOBAAN 3

[menuju akhir]



1. Komponen [kembali]

1. Arduino

2. LED


3. Potensiometer


2. Rangkaian Simulasi [kembali]

Gambar 1. Rangkaian Percobaan 3

3. Flowchart [kembali]

Gambar 2. Flowchart Program Master


Gambar 3. Flowchart Program Slave


LISTING MASTER
//MASTER

#include <Wire.h>
#define SLAVE_ADDR 9 

int analogPin = 0;
int val = 0;

void setup() {
  Wire.begin();
}

void loop() {
 delay(50);
 val = map(analogRead(analogPin), 0, 1023, 255, 1);
 
 Wire.beginTransmission(SLAVE_ADDR);
 Wire.write(val);
 Wire.endTransmission();
 
}

LISTING SLAVE
//SLAVE

#include <Wire.h>
#define SLAVE_ADDR 9

int LED = 13;
int rd;
int br;

void setup() {
pinMode(LED, OUTPUT);
Wire.begin(SLAVE_ADDR);
Wire.onReceive(receiveEvent);

Serial.begin(9600);
Serial.println("I2C Slave demo");

}

void receiveEvent(){
rd = Wire.read();
Serial.println(rd);
}
void loop() {
delay(50);

br = map(rd, 1, 255, 100, 2000);

digitalWrite(LED, HIGH);
  delay(br);
digitalWrite(LED, LOW);
  delay(br);
}

5. Video [kembali]




Penjelasan rangkaian :
Rangkaian percobaan 3 ini merupakan rangkaian komunikasi Inter Integrated Circuit (I2C) adalah standar komunikasi serial dua arah menggunakan dua saluran yang di desain khusus untuk mengirim maupun menerima data. Sistem I2C terdiri dari saluran SCL (Serial Clock) dan SDA (Serial Data) yang membawa informasi data antara I2C dengan pengontrolnya. Piranti yang dihubungkan dengan sistem I2C Bus dapat dioperasikan sebagai Master dan Slave. Master adalah piranti yang memulai transfer data pada I2C Bus dengan membentuk sinyal Start, mengakhiri transfer data dengan membentuk sinyalStop, dan membangkitkan sinyal clock. Slave adalah piranti yang dialamati master. merupakan komunikasi seial 2 arah pada rangkaian diatas digunakan komponen-komponen seperti 2 buah arduino, potensiometer, LED, resistor dan ground. potensiometer disini berfungsi sebagai input ke master, ketika potensiometer maksimum maka delay waktu hidup dan mati lampu makin cepat begitupun sebaliknya. LED sebagai output dari slave.

6. Kondisi [kembali]
Analisa percobaan 3

1.      Apakah kita dapat mengirim data sebanyak 9 bit? Jelaskan alasannya!

Jawab:

Jika mengirim data, Master hanya dapat mengirimkan sejumlah byte (masing-masing 8 bit). Saat proses transmitting dari Master, 7 bit pertama sebagai alamat Slave yang akan dituju (Address frame), 1 bit kemudian sebagai R/W bit untuk memberitahukan ke Slave-slave apakah Master akan menerima atau mengirimkan data. Sedangkan bit ke-9, bit tersebut akan dikeluarkan oleh Slave sebagai tanda bahwa data telah diterima oleh receiver (ACK/NACK). Kemudian, Master akan menulis data 8 bit (Data frame) dan bit-9 oleh Slave sebagai sinyal acknowledge / ACK (berlogika 0) yang dikeluarkan Slave kembali untuk dapat menerima data selanjutnya hingga SDA menerima sinyal Not Acknowladge / NACK (berlogika 1) untuk mengakhiri transfer data.

2.      Bagaimana cara master mengirimkan address ke slave? Berapa bit address yang dikirim? Berapa address unit yang dapat tercipta oleh master?

Jawab:

Komunikasi I2C atau inter integrated circuit adalah komunikasi yang memungkinkan terjadinya komunikasi antara controller.  jenis komunikasi ini memiliki pin sendiri pada arduino yaitu pin SDA dan SCL. setiap bit akan ditransfer pada kaki SDA dan akan di sinkronisasikan oleh pulsa clock pada SCL. setiap bit akan ditransfer pada pin SDA dalam bentuk 8 bit dan 1 bit ditransferkan pada clock atau SCL. untuk transfer data pada I2C harus dalam bentuk 8 bit sehingga semua data yang ditransfer dikonfersi kedalam bentuk 8 bit yaitu 256. rangkaian ini terdiri dari potensiometer.

Pulsa START dibaca oleh Slave pada bus SDA dalam keadaan LOW pada saat pulsa clock dalam HIGH. Setelah dikirimkan, maka pada clock berikutnya Master mengirimkan 8 bit alamat, yang dikirimkan secara serial melalui bus SDA, ke Slave dengan format B6, B5, B4, B3, B2, B1, B0, dan R/W. Bit alamat tersebut mengandung informasi R/W pada LSB. Jika LSB pada byte alamat “1” maka master ingin membaca data dari Slave tetapi jika LSB byte alamat “0” maka master akan menulis pada slave. Karena hanya 7 bit yang dipergunakan dalam byte alamat maka banyaknya device yang dapat dijadikan slave hanya 127. Alamat 0 dipergunakan untuk General Call. Bila alamat dan perintah, R/W, yang dikirim master dapat diterima oleh slave dan akan membangkitkan pulsa LOW (ACK), pada bus SDA, jika perintah tersebut dapat dijalankan dan pulsa HIGH (NACK) jika perintah tersebut gagal. Sinyal dasar yang lain dalam I2C Bus adalah sinyal acknowledge yang disimbolkan dengan ACK Setelah transfer data oleh master berhasil diterima slave, slave akan menjawabnya dengan mengirim sinyal acknowledge, yaitu dengan membuat SDA menjadi “0” selama siklus clock ke 9. Ini menunjukkan bahwa Slave telah menerima 8 bit data dari Master.  Address yang dapat tercipta oleh master dari kerja I2C bus dapat dibedakan menjadi format 7 bit addressing dan format 10 bit addressing.

Address byte terdiri dari bagian yang tetap dan bagian yang dapat diprogram, bagian yang tetap merupakan bawaan dari IC , sedangkan yang dapat diprogram biasanya berupa pin address pada IC yang bersangkutan, sebagai contoh IC PCF8591, memiliki address byte sbb : 1 0 0 1 A2 A1 A0 , dimana 1001 adalah bagian yang tetap dan A2,A1,A0 adalah bagian yang dapat diprogram sesuai dengan kondisi logika pada pin IC PCF8591. Sinyal Acknowledge (ACK) terjadi, Dari Slave ke Master Transmitter, kemudian Sesudah address byte diterima slave .Setiap kali Master selesai menerima data byte dengan baik Sinyal Negative Acknowledge (NACK) terjadi, maka dari Slave ke Master Transmitter.

Rangkaian Simulasi - download
Video Simulasi - download
Listing Program Master - download
Listing Program Slave - download
Library Arduino - download
File HTML - downlaod

Tidak ada komentar:

Posting Komentar