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.
[[{"fid":"985","view_mode":"default","fields":{"format":"default","field_file_image_alt_text[und][0][value]":"Multiplekser Arduino","field_file_image_title_text[und][0][value]":"Multiplekser Arduino"},"type":"media","field_deltas":{"2":{"format":"default","field_file_image_alt_text[und][0][value]":"Multiplekser Arduino","field_file_image_title_text[und][0][value]":"Multiplekser Arduino"}},"link_text":null,"attributes":{"alt":"Multiplekser Arduino","title":"Multiplekser Arduino","class":"media-element file-default","data-delta":"2"}}]]
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.
[[{"fid":"986","view_mode":"default","fields":{"format":"default","field_file_image_alt_text[und][0][value]":"Multiplekser Arduino","field_file_image_title_text[und][0][value]":"Multiplekser Arduino"},"type":"media","field_deltas":{"3":{"format":"default","field_file_image_alt_text[und][0][value]":"Multiplekser Arduino","field_file_image_title_text[und][0][value]":"Multiplekser Arduino"}},"link_text":null,"attributes":{"alt":"Multiplekser Arduino","title":"Multiplekser Arduino","class":"media-element file-default","data-delta":"3"}}]]
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:
S1 | S0 | Pilihan Input |
---|---|---|
0 | 0 | A |
0 | 1 | B |
1 | 0 | C |
1 | 1 | D |
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.
[[{"fid":"996","view_mode":"default","fields":{"format":"default","field_file_image_alt_text[und][0][value]":"Multiplekser Arduino","field_file_image_title_text[und][0][value]":"Multiplekser Arduino"},"type":"media","field_deltas":{"13":{"format":"default","field_file_image_alt_text[und][0][value]":"Multiplekser Arduino","field_file_image_title_text[und][0][value]":"Multiplekser Arduino"}},"link_text":null,"attributes":{"alt":"Multiplekser Arduino","title":"Multiplekser Arduino","class":"media-element file-default","data-delta":"13"}}]]
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.
[[{"fid":"990","view_mode":"default","fields":{"format":"default","field_file_image_alt_text[und][0][value]":"Multiplekser Arduino","field_file_image_title_text[und][0][value]":"Multiplekser Arduino"},"type":"media","field_deltas":{"7":{"format":"default","field_file_image_alt_text[und][0][value]":"Multiplekser Arduino","field_file_image_title_text[und][0][value]":"Multiplekser Arduino"}},"link_text":null,"attributes":{"alt":"Multiplekser Arduino","title":"Multiplekser Arduino","class":"media-element file-default","data-delta":"7"}}]]
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.
[[{"fid":"991","view_mode":"default","fields":{"format":"default","field_file_image_alt_text[und][0][value]":"Multiplekser 4051 Arduino","field_file_image_title_text[und][0][value]":"Multiplekser 4051 Arduino"},"type":"media","field_deltas":{"8":{"format":"default","field_file_image_alt_text[und][0][value]":"Multiplekser 4051 Arduino","field_file_image_title_text[und][0][value]":"Multiplekser 4051 Arduino"}},"link_text":null,"attributes":{"alt":"Multiplekser 4051 Arduino","title":"Multiplekser 4051 Arduino","class":"media-element file-default","data-delta":"8"}}]]
Gambar 5. Konfigurasi Pin IC 4051
Jika digunakan sebagai multiplekser, skematik untuk mempermudah pemahaman dalam menggunakan IC 4051 diperlihatkan seperti pada Gambar 6.
[[{"fid":"997","view_mode":"default","fields":{"format":"default","field_file_image_alt_text[und][0][value]":"Multiplekser Arduino","field_file_image_title_text[und][0][value]":"Multiplekser Arduino"},"type":"media","field_deltas":{"14":{"format":"default","field_file_image_alt_text[und][0][value]":"Multiplekser Arduino","field_file_image_title_text[und][0][value]":"Multiplekser Arduino"}},"link_text":null,"attributes":{"alt":"Multiplekser Arduino","title":"Multiplekser Arduino","class":"media-element file-default","data-delta":"14"}}]]
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 4051 | Pin Arduino |
---|---|
VCC | 5V |
GND | GND |
VEE | GND |
E | GND (active LOW) |
z | A0 |
S0,S1,S2 | 5,6,7 |
y0-y1 | input sensor |
[[{"fid":"994","view_mode":"default","fields":{"format":"default","field_file_image_alt_text[und][0][value]":"Multiplekser Arduino","field_file_image_title_text[und][0][value]":"Multiplekser Arduino"},"type":"media","field_deltas":{"11":{"format":"default","field_file_image_alt_text[und][0][value]":"Multiplekser Arduino","field_file_image_title_text[und][0][value]":"Multiplekser Arduino"}},"link_text":null,"attributes":{"alt":"Multiplekser Arduino","title":"Multiplekser Arduino","style":"height: 344px; width: 500px;","class":"media-element file-default","data-delta":"11"}}]]
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:
S2 | S1 | S0 | y ke- |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 |
0 | 1 | 0 | 2 |
0 | 1 | 1 | 3 |
1 | 0 | 0 | 4 |
1 | 0 | 1 | 5 |
1 | 1 | 0 | 6 |
1 | 1 | 1 | 7 |
Catatan: 0 berarti LOW dan 1 berarti HIGH pada Arduino
[[{"fid":"995","view_mode":"default","fields":{"format":"default","field_file_image_alt_text[und][0][value]":"Multiplekser Arduino","field_file_image_title_text[und][0][value]":"Multiplekser Arduino"},"type":"media","field_deltas":{"12":{"format":"default","field_file_image_alt_text[und][0][value]":"Multiplekser Arduino","field_file_image_title_text[und][0][value]":"Multiplekser Arduino"}},"link_text":null,"attributes":{"alt":"Multiplekser Arduino","title":"Multiplekser Arduino","style":"height: 310px; width: 500px;","class":"media-element file-default","data-delta":"12"}}]]
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.
[[{"fid":"993","view_mode":"default","fields":{"format":"default","field_file_image_alt_text[und][0][value]":"Multiplekser Arduino","field_file_image_title_text[und][0][value]":"Multiplekser Arduino"},"type":"media","field_deltas":{"10":{"format":"default","field_file_image_alt_text[und][0][value]":"Multiplekser Arduino","field_file_image_title_text[und][0][value]":"Multiplekser Arduino"}},"link_text":null,"attributes":{"alt":"Multiplekser Arduino","title":"Multiplekser Arduino","class":"media-element file-default","data-delta":"10"}}]]
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); } }
[[{"fid":"998","view_mode":"default","fields":{"format":"default","field_file_image_alt_text[und][0][value]":"Multiplekser Arduino","field_file_image_title_text[und][0][value]":"Multiplekser Arduino"},"type":"media","field_deltas":{"15":{"format":"default","field_file_image_alt_text[und][0][value]":"Multiplekser Arduino","field_file_image_title_text[und][0][value]":"Multiplekser Arduino"}},"link_text":null,"attributes":{"alt":"Multiplekser Arduino","title":"Multiplekser Arduino","style":"height: 411px; width: 500px;","class":"media-element file-default","data-delta":"15"}}]]
Gambar 9. Percobaan menggunaan multiplekser
Demikian tutorial kali ini. Semoga bermanfaat :)
Komentar Terbaru