Anda di sini

Elektronika

[TUTORIAL] Menggunakan Demultiplekser (Demux) 4051 pada Arduino

Kusuma Wardana - 06 Juli 2017 18:26:14 0

Pendahuluan

Demultiplekser (Demultiplexer atau disingkat Demux) memiliki prinsip kerja kebalikan dari multiplekser. Bagi pembaca yang belum memahami prinsip kerja dari multiplekser, silahkan baca artikel ini terlebih dahulu.

Demux dapat digunakan untuk memilih BEBERAPA jalur output dari SEBUAH input. Demux sangat berguna ketika kita memiliki keterbatasan jalur input, misalnya kekurangan pin out dari sebuah mikrokontroler. Sebagai contoh ketika kita ingin menyalakan beberapa LED secara bergantian, misalnya 8 LED. Jika kita menggunakan satu pin output untuk setiap LED, maka kita memerlukan sebanyak 8 pin output. Kondisi ini dapat memboroskan penggunaan pin. Karena operasinya secara bergantian, kita dapat menggunakan demux yang hanya memerlukan sebuah pin!

Gambar 1. Demux 1-ke-2

Amatilah Gambar 1. Gambar tersebut menunjukkan skemati demux 1-ke-2, dimana sebuah input dapat dipecah menjadi dua buah output. Output yang dipilih tergantung dari nilai pin Select (S0). Jika nilai S0 adalah 0 (LOW), maka sinyal Z akan diteruskan ke A, dan sebaliknya jika S0 bernilai 1(HIGH), maka sinyal Z akan diteruskan ke B.

Gambar 2. Demux 1-ke-4

Mari kita kembangkan ide ini untuk demux 1-ke-4. Amatilah Gambar 2. Output yang dipilih akan mengikuti Tabel Kebenaran berikut:

Tabel Kebenaran Demux 1-ke-4
S1S0Pilihan Output
00A
01B
10C
11D

Menggunakan IC 4051 sebagai Demux

Seperti yang telah dibahas pada tutorial sebelumnya, IC 4051 dapat bertindak baik sebagai Multiplekser maupun sebagai Demultiplekser. Dalam penggunaannya, kita cukup membalikkan input dan output yang telah dilakukan pada percobaan sebelumnya. Berikut skematik IC 4051 ketika digunakan sebagai Demux:

Gambar 3. Pin IC 4051 dan konfigurasinya sebagai Demux

Pemrograman Arduino

Mari kita mengambil salah satu contoh penggunaan demux, yaitu membuat dua buah LED yang hidup dan padam secara bergantian (flip-flop). Amatilah Gambar 4, dengan keterangan koneksi sesuai dengan Tabel berikut:

Pin IC 4051Pin Arduino
VCC5V
GNDGND
VEEGND
EGND (active LOW)
z9
S0,S1,S25,6,7
y0-y1output ke LED

Gambar 4. Skematik LED Flip-flop

Unggahlah program berikut ke Arduino kita:

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

//gunakan pin 9 sebagai output
int outputPin = 9;

void setup() {
  //mode pin select sebagai output
  pinMode(s0, OUTPUT);
  pinMode(s1, OUTPUT);
  pinMode(s2, OUTPUT);
  
  //mode pin out sebagai output
  pinMode(outputPin, OUTPUT);
  //berikan nilai LOW di awal
  digitalWrite(outputPin, LOW);
}

void loop() {
  //memilih y0 sebagai output
  digitalWrite(s0,LOW);
  digitalWrite(s1,LOW);
  digitalWrite(s2,LOW);
  digitalWrite(outputPin, HIGH);
  delay(1000);
  digitalWrite(outputPin, LOW);
   
  //memilih y1 sebagai output
  digitalWrite(s0,HIGH);
  digitalWrite(s1,LOW);
  digitalWrite(s2,LOW);
  digitalWrite(outputPin, HIGH);
  delay(1000);
  digitalWrite(outputPin, LOW); 
}

Jalankan program di atas, dan jika kedua LED menyala dan padam secara bergantian, maka program kita telah sukses.

Pada program di atas, kita menggunakan pin 9 sebagai output dari Arduino, dan memecah output tersebut ke y0 dan y1. 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 output mana yang digunakan berdasarkan tabel berikut:

S2S1S0output y ke-
0000
0011
0102
0113
1004
1015
1106
1117

Catatan: 0 berarti LOW dan 1 berarti HIGH pada Arduino

Untuk pengembangan lebih lanjut, kita dapat memanfaatkan kedelapan output pada IC 4051. Agar kita dapat memprogram dengan lebih mudah, kita dapat membuat konfigurasi pin Select untuk kedelapan output menjadi suatu fungsi. Amatilah contohnya berikut:

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

//gunakan pin 9 sebagai output
int outputPin = 9;

void setup() {
  //jadikan pin select sebagai output
  pinMode(s0, OUTPUT);
  pinMode(s1, OUTPUT);
  pinMode(s2, OUTPUT);
  
  //jadikan pin out sebagai output
  pinMode(outputPin, OUTPUT);
  digitalWrite(outputPin, LOW);
}

void loop() {
  //saat ini gunakan hanya 2 output

  //nyalakan LED 1 pada y0
  inputMultiplekser(0);
  digitalWrite(outputPin, HIGH);
  delay(1000);
  digitalWrite(outputPin, LOW);
  
  //nyalakan LED 2 pada y1
  inputMultiplekser(1);
  digitalWrite(outputPin, HIGH);
  delay(1000);
  digitalWrite(outputPin, LOW);
}


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 y0
  else {
    digitalWrite(s0,LOW);
    digitalWrite(s1,LOW);
    digitalWrite(s2,LOW);
  }
}

Kalau kita jalankan program di atas, hasilnya akan sama dengan program sebelumnya.

Demikian tutorial kali ini. Semoga bermanfaat Smile

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

Mari Gabung

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