Anda di sini

Elektronika

[TUTORIAL] Menggunakan Multiplekser (Multiplexer) 4051 pada Arduino

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

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

5.678
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

Komentar

Permisi, numpang tanya, jadi multiplexer itu nggak bisa baca 8 analog input secara bersamaan ya, jadi input dibaca secara bergantian, berarti ada delay untuk si multiplexer dalam membaca inputnya satu persatu ya, kira kira berapa lama delaynya ya, ditentukan oleh arduino kah...???

, dan kira kira memungkinkan nggak untuk sebuah multiplexer outputnya (y0 - y7) digunakan sebagai input multiplexer lainnya (S0, S1, S2)...???, Satu lagi, bedanya fungsi multiplexer sama shift register untuk arduino apa ya...???. Itu aja, maaf kalau banyak nanya, lagi tertarik soalnya.

Terimakasih.

Halo,

thankyou udah mampir, langsung aja dari yang pertama:

jadi multiplexer itu nggak bisa baca 8 analog input secara bersamaan ya,

Tidak, dia harus di switch dulu mau pilih channel yang mana... kayak kita nonton tv tidak bisa nonton semua channel berbarengan.

jadi input dibaca secara bergantian, berarti ada delay untuk si multiplexer dalam membaca inputnya satu persatu ya,

Iya, dibacanya bergantian sesuai dengan pilihan channel berapa, untuk delay saat penggantian channel pastinya ada tetapi itu sangat kecil, hitungannya mikro detik, namun selain itu proses pembacaan atau penulisan melalui multiplexer juga menghasilkan delay tentunya, sesuai dengan jenis perangkat yang lagi diakses. Tapi umumnya delay ini tidak menyebabkan masalah, karena fungsi utama dari si multiplexer cuma mengalihkan satu pin itu ke banyak channel. Proses baca tulis tetap sama seperti baca tulis dari pin aslinya langsung.

kira kira berapa lama delaynya ya, ditentukan oleh arduino kah

Dalam satuan mikro detik, nanti bisa dihitung dengan fungsi micros() yang ada diarduino, jadi cara kerjanya micros sebelum fungsi yang mau diukur dijalankan dicatat dulu, terus jalankan fungsi, dan di bawahnya juga catat lagi nilai microsnya berapa, nanti tinggal dikurangi nilai mikros akhir dengan micros awal. Ketemu deh berapa tuh durasinya.

dan kira kira memungkinkan nggak untuk sebuah multiplexer outputnya (y0 - y7) digunakan sebagai input multiplexer lainnya (S0, S1, S2)

Of course yes, nested multiplexer tentunya dimungkinkan... more bisa cek librarinya untuk mempermudah di sini: https://github.com/maxpowel/Multiplexer

Satu lagi, bedanya fungsi multiplexer sama shift register untuk arduino apa ya

bedanya adalah jenis channelnya, kalau multiplexer dia bisa analog dan digital tapi kalau shift register dia cuma digital aja. Multiplexer juga lebih cepat daripada shift register, karena seperti namanya, shift register itu tv maka kalau mau nonton channel sembilan mesti teken dari channel satu dulu, terus dua, terus tiga .... sampai sembilan, tapi kalau multiplexer tinggal ambil remot teken sembilan udah. Kira2 begitu.

Oke, Semoga penjelasannya berguna Bye

HTSL://HIGH THINKING SIMPLE LIVING . ME

ohh, gitu ya, berarti input multiplexer nggak perlu disupplay tegangan terus menerus untuk memilih chanel mana yang akan dipakai, cukup sekali suplay saja, chanel sudah aktif, atau mungkin chanel multiplaxer bisa aktif terus menerus aktif sesudah inputnya disupplay tegangan selama chanel lain belum ditentukan...???. untuk shift register, berarti untuk menyalakan led di chanel 3 shift register, led di chanel 1 dan 2 akan menyala sebelumnya ya....ehh, terus kalo shift register itu bisa nerima input dari sensor nggak ya...???. Terimakasih sebelumnya

Halo,

Untuk tegangan select yang diurus oleh pin select tentunya akan terus aktif selama pengoperasian, tapi ini tegangan sangat kecil dengan amper yang sangat kecil, jadi tidak akan boros kalau konsennya ke masalah daya. Channel yang tidak aktiv tentunya ya tidak aktif alias low.

Shift register led 1 dan 2 akan nyala seper sekian mikro detik, karena prosesnya adalah shifting, penggeseran, otomatis ya kena juga. Kalau shift register umumnya tidak diperuntukan untuk input/baca sensor, tetapi ada juga IC yang support untuk itu, namanya shiftin. Biasanya pakai IC model CD4021B, dan yang perlu dicatat adalah metode ini hanya support untuk melakukan pembacaan input digital. Bye

HTSL://HIGH THINKING SIMPLE LIVING . ME

ohh, oke, terimakasih banyak ya kak, informasinya....

Mari Gabung

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