Anda di sini

Elektronika

[TUTORIAL] Menggunakan Multiplekser (Multiplexer) 4051 pada Arduino

Kusuma Wardana - 03 Juli 2017 19:40:44 0

Pendahuluan

Multiplekser (Multiplexer, atau biasa disingkat dengan mux) adalah adalah alat yang dapat memilih satu dari beberapa input digital/analog dan meneruskan sinyal yang dipilih tersebut menjadi hanya SEBUAH jalur output. Amatilah Gambar 1 berikut.

Gambar 1. Multiplekser 2-ke-1

Jumlah input dari Multiplekser tergantung dari jumlah pin Select yang digunakan. Pada Gambar 1, jika hanya terdapat sebuah pin Select (S0), maka kemungkinan nilai dari S0 adalah 0 (LOW) atau 1 (HIGH). Jika kita beri pin Select dengan nilai 0, maka input A yang akan dipilih, dan sebaliknya jika diberi nilai 1, maka input B yang akan dipilih.

Gambar 2. Multiplekser 4-ke-1

Mari kita kembangkan ide dasar ini. Amatilah Gambar 2. Jika kita memiliki dua pin Select, maka jumlah maksimum input akan menjadi empat. Mengapa demikian? Sebab kombinasi dari kedua nilai pin Select tersebut dapat tiperlihatkan sesuai dengan Tabel 1 berikut:

Tabel 1. Kombinasi Nilai Pin Select dan Input Multiplekser
S1S0Pilihan Input
00A
01B
10C
11D

Untuk mempermudah, multiplekser yang memiliki pin Select sebanyak n akan memiliki maksimum input sebanyak 2n. Dengan demikian, jika jumlah pin Select adalah 3, maka maksimum input adalah 8, dan seterusnya.

Multiplekser bertindak seperti "saklar". Saklar ini dikontrol oleh nilai yang diberikan kepada pin Select. Amatilah Gambar 3.

Gambar 3. Sistem Kerja Multiplekser

Kebalikan dari multiplekser adalah Demultiplekser (demux). Demultiplekser memiliki satu input dan banyak output. Topik mengenai demultiplekser akan kita bahas pada tutorial berikutnya.

Menggunakan IC 4051

IC 4051 merupakan sebuah IC yang dapat bertindak baik sebagai Multiplekser maupun Demultiplekser. Jenis IC ini memiliki 8 analog (otomatis dapat bertindak sebagai digital) channel. Jika digunakan sebagai multiplekser, IC ini dapat memilih satu dari delapan input. Sebaliknya, jika digunakan sebagai demultiplekser, kita dapat memilih 8 ouput dari sebuah input. Amatilah salah satu contoh IC 4051 pada Gambar 4 berikut.

Gambar 4. IC 4051

Pada kasus dimana kita kekurangan pin ADC (misalnya menggunakan ESP8266 yang hanya memiliki sebuah ADC), maka kita dapat memanfaatkan IC ini sebagai multiplekser dengan input maksimal 8 channel. Jika Input lebih dari 8, maka kita bisa menggunakan IC jenis lain, misalnya 74HC4067 yang memiliki 16-channel. Konfigurasi dari pin IC 4051 diperlihatkan seperti pada Gambar 5.

Gambar 5. Konfigurasi Pin IC 4051

Jika digunakan sebagai multiplekser, skematik untuk mempermudah pemahaman dalam menggunakan IC 4051 diperlihatkan seperti pada Gambar 6.

Gambar 6. Input/Output IC 4051 sebagai Multiplekser

Pemrograman Arduino

Asumsi saat ini kita memiliki sebuah potensiometer sebagai pengganti semua jenis sensor analog. Konfigurasilah seperti berikut:

Pin IC 4051Pin Arduino
VCC5V
GNDGND
VEEGND
EGND (active LOW)
zA0
S0,S1,S25,6,7
y0-y1input sensor

Gambar 7. Multiplekser dengan sebuah input dari potensiometer

Amatilah Gambar 7. Tempatkan output potensiometer ke kaki y0, dan selanjutnya ketik dan unggahlah program berikut ke Arduino UNO:

//sesuikan posisi pin select
int s0 = 5;
int s1 =  6;
int s2 =  7;

//gunakan A0 sebagai input
int analogPin = 0;

//variabel untuk menyimpan nilai input
int nilaiInput = 0;

void setup() {
  //jadikan pin select sebagai output
  pinMode(s0, OUTPUT);
  pinMode(s1, OUTPUT);
  pinMode(s2, OUTPUT);

  //aktifkan komunikasi serial
  Serial.begin(9600);
}

void loop() {
  //memilih y0 sebagai input
  digitalWrite(s0,LOW);
  digitalWrite(s1,LOW);
  digitalWrite(s2,LOW);
  nilaiInput = analogRead(analogPin);
  Serial.println(nilaiInput);
  delay(200);  
}

Putar-putar dan lihatlah hasilnya pada Serial Monitor.

Pada koding di atas, semua pin Select (S0, S1, dan S2) digunakan sebagai output. Masing-masing pin Select akan diberi nilai menggunakan fungsi digitalWrite. Nilai 0 merupakan LOW, sedangkan nilai 1 merupakan HIGH. Ubah-ubahlah nilai S0, S1, dan S2 untuk memilih input mana yang digunakan berdasarkan tabel berikut:

S2S1S0y ke-
0000
0011
0102
0113
1004
1015
1106
1117

Catatan: 0 berarti LOW dan 1 berarti HIGH pada Arduino

Gambar 8. Multiplekser dengan sebuah input dari potensiometer

Sekarang, mari kita kembangkan program kita. Amatilah Gambar 8. Asumsi saat ini kita memiliki DUA buah potensiometer yang diletakkan pada pin y0 dan y1. Unggahlah koding berikut:

//sesuikan posisi pin select
int s0 = 5;
int s1 =  6;
int s2 =  7;

//gunakan A0 sebagai input
int analogPin = 0;

//variabel untuk menyimpan nilai input
int nilaiInput = 0;

void setup() {
  //jadikan pin select sebagai output
  pinMode(s0, OUTPUT);
  pinMode(s1, OUTPUT);
  pinMode(s2, OUTPUT);

  //aktifkan komunikasi serial
  Serial.begin(9600);
}

void loop() {
  //memilih y0 sebagai input
  digitalWrite(s0,LOW);
  digitalWrite(s1,LOW);
  digitalWrite(s2,LOW);
  nilaiInput = analogRead(analogPin);
  Serial.println(nilaiInput);
  delay(200);
   
  //memilih y1 sebagai input
  digitalWrite(s0,HIGH);
  digitalWrite(s1,LOW);
  digitalWrite(s2,LOW);
  nilaiInput = analogRead(analogPin);
  Serial.println(nilaiInput);
  delay(200);  
}

Putar-putarlah kedua potensiometer tersebut, dan lihatlah hasilnya pada Serial Monitor. Pada Gambar 9, Penulis memutar potensiometer sehingga memiliki dua nilai pada posisi maksimum dan minimum (yaitu 0 dan 1023) semata-mata untuk memperlihatkan bahwa multiplekser telah bekerja secara bergantian untuk membaca input dua input sensor yang berbeda.

Gambar 9. Multiplekser telah bekerja untuk membaca dua input yang berbeda (y0 dan y1)

Untuk mempermudah penulisan program (agar konfgurasi pin Select tidak dilakukan berulang kali), maka kita dapat membuat konfigurasi pin Select ke dalam suatu fungsi. Selanjutnya, kita cukup memanggil fungsi tersebut secara berulang. Ketiklah program berikut dan lihatlah hasilnya pada Serial Monitor. Hasilnya akan sama dengan percobaan sebelumnya.

//sesuikan posisi pin select
int s0 = 5;
int s1 =  6;
int s2 =  7;

//gunakan A0 sebagai input
int analogPin = 0;

//variabel untuk menyimpan nilai input
int nilaiInput = 0;

void setup() {
  //jadikan pin select sebagai output
  pinMode(s0, OUTPUT);
  pinMode(s1, OUTPUT);
  pinMode(s2, OUTPUT);

  //aktifkan komunikasi serial
  Serial.begin(9600);
}

void loop() {
  //ambil input y0
  inputMultiplekser(0);
  nilaiInput = analogRead(analogPin);
  Serial.println(nilaiInput);
  delay(200);

  //ambil input y1
  inputMultiplekser(1);
  nilaiInput = analogRead(analogPin);
  Serial.println(nilaiInput);
  delay(200);
}


void inputMultiplekser(int y){
  if (y==0){
    digitalWrite(s0,LOW);
    digitalWrite(s1,LOW);
    digitalWrite(s2,LOW);
  }
  else if (y==1){
    digitalWrite(s0,HIGH);
    digitalWrite(s1,LOW);
    digitalWrite(s2,LOW);
  }
  else if (y==2){
    digitalWrite(s0,LOW);
    digitalWrite(s1,HIGH);
    digitalWrite(s2,LOW);
  }
  else if (y==3){
    digitalWrite(s0,HIGH);
    digitalWrite(s1,HIGH);
    digitalWrite(s2,LOW);
  }
  else if (y==4){
    digitalWrite(s0,LOW);
    digitalWrite(s1,LOW);
    digitalWrite(s2,HIGH);
  }
  else if (y==5){
    digitalWrite(s0,HIGH);
    digitalWrite(s1,LOW);
    digitalWrite(s2,HIGH);
  }
  else if (y==6){
    digitalWrite(s0,LOW);
    digitalWrite(s1,HIGH);
    digitalWrite(s2,HIGH);
  }
  else if (y==7){
    digitalWrite(s0,HIGH);
    digitalWrite(s1,HIGH);
    digitalWrite(s2,HIGH);
  }
  //jika input bukan 0-7, maka jadikan saja y0
  else {
    digitalWrite(s0,LOW);
    digitalWrite(s1,LOW);
    digitalWrite(s2,LOW);
  }
}

Gambar 9. Percobaan menggunaan multiplekser

Demikian tutorial kali ini. Semoga bermanfaat Smile

Produk Terkait
CD4051BE IC Multiplexer Switch 8-Channel Analog

CD4051BE IC Multiplexer Switch 8-Channel Analog

CMP221117-74

IC 4051 merupakan sebuah IC yang dapat bertindak baik sebagai Multiplekser maupun Demultiplekser. Jenis IC ini memiliki 8 analog (otomatis dapat...

4,000 IDR Beli

1.630
Image

Kusuma Wardana

I Nyoman Kusuma Wardana, yang akrab dipanggil Kusuma, lahir dan besar di Bali. Ia tinggal di Desa Wisata Ubud, dan lebih banyak melaksanakan aktivitasnya di Denpasar. Profesinya adalah sebagai staf pengajar di Jurusan Teknik Elektro, Politeknik Negeri Bali. Saat ini Ia menjadi salah satu penulis di tutorkeren.com.

Artikel Menarik Lainnya
Mari Gabung

Halo Emo 51 , Ada yang ingin disampaikan? Jangan sungkan untuk gabung diskusi ini. Silahkan Login dulu atau Daftar baru.