Home / elektronika / Tutorial Multiplexer Demultiplexer 74HC4067 16 Channel Analog

Tutorial Multiplexer Demultiplexer 74HC4067 16 Channel Analog

kelas-fisika.com – Tutorial Multiplexer Demultiplexer 74HC4067 16 Channel Analog

Multiplekser atau disingkat MUX adalah alat atau komponen elektronika yang bisa memilih input (masukan) yang akan diteruskan ke bagian output (keluaran). Pemilihan input mana yang dipilih akan ditentukan oleh signal yang ada di bagian kontrol (kendali) Select.

Komponen yang berfungsi kebalikan dari MUX ini disebut Demultiplekser (DEMUX). Pada DEMUX, jumlah masukannya hanya satu, tetapi bagian keluarannya banyak. Signal pada bagian input ini akan disalurkan ke bagian output (channel) yang mana tergantung dari kendali pada bagian SELECTnya.

misalkan anda sedang ingin memperluas kemampuan I / O dari mikrokontroller, seperti output yang membutuhkan banyak pin , LED berjalan yang banyak sekali, dll. Salah satu contoh untuk menyelesaikannya adalah demultiplexer – multiplexer analog 74HC4067 16 chanel. Itu adalah IC yang dapat mengarahkan arus arus ke salah satu arah dari satu pin ke salah satu dari enam belas pin. selain itu dapat digunakan sebagai pengganti digital untuk switch-switch putar yang memungkinkan Anda untuk memilih satu dari enam belas posisi.

Berikut contoh versi SMD :

Penggunaan MUX atau DEMUX

Sebelumnya Anda perlu untuk mengunduh  datasheet, . Hal pertama yang perlu diperhatikan adalah bahwa 74HC4067 dapat beroperasi pada tegangan antara 2 dan 6V DC, yang memungkinkan digunakan dengan mikrokontroler dan papan 3.3V dan 5V seperti Arduino dan Raspberry Pi. Jika karena suatu alasan Anda memiliki 74HCT4067, ia hanya dapat bekerja pada 4.5 ~ 5.5V DC. Berikutnya – perhatikan diagram pinout dari datasheet:

Catu daya untuk bagian diterapkan pada pin 24, dan GND ke pin 12. Pin 15 digunakan untuk mengubah kontrol aliran arus melalui input / output – jika ini terhubung ke Vcc, IC menghentikan aliran, dan ketika terhubung ke GND memungkinkan aliran. Anda selalu dapat mengontrol ini dengan pin output digital jika diperlukan, atau hanya mengikatnya ke GND jika ini tidak masalah.

Berikutnya – pin satu (I). Di sinilah arus mengalir baik untuk dikirim ke salah satu dari enam belas output – atau di mana arus mengalir keluar dari salah satu dari enam belas input. Keenam belas input / output diberi label I0 ~ I15. Akhirnya ada empat pin kontrol – berlabel S0 ~ S3. Dengan menyetel HIGH atau LOW (Vcc atau GND) ini Anda dapat mengontrol pin I / O mana arus diarahkan. Jadi bagaimana cara kerjanya? Sekali llihat datasheet  dan tinjau tabel berikut:

Tidak hanya itu menunjukkan apa yang terjadi ketika pin 15 diatur ke HIGH (yaitu tidak ada) itu menunjukkan apa kombinasi HIGH dan LOW untuk pin kontrol diperlukan untuk memilih yang I / O pin arus akan mengalir melalui. Jika Anda gulir ke bawah sedikit semoga Anda memperhatikan bahwa kombinasi S0 ~ S3 sebenarnya setara biner nomor pin – dengan bit paling signifikan pertama. Misalnya, untuk memilih pin 9 (9 dalam biner adalah 1001) Anda mengatur pin IC S0 dan S3 ke HIGH, dan S1 dan S2 ke LOW. Cara Anda mengontrol pin kontrol itu tentu terserah Anda – entah dengan rangkaian logika digital untuk aplikasi Anda atau seperti yang disebutkan sebelumnya dengan mikrokontroler.

Keterbatasan

Terlepas dari persyaratan pasokan listrik, ada beberapa keterbatasan yang perlu diingat. Buka datasheet Anda dan perhatikan tabel “Spesifikasi Listrik DC”. Dua parameter pertama menunjukkan berapa tegangan minimum yang dapat dianggap sebagai HIGH dan maksimum untuk LOW tergantung pada tegangan suplai Anda. Item berikutnya yang menarik adalah “ON” resistensi – yaitu resistensi di Ohm (Ω) antara salah satu dari enam belas input / output dan pin umum. Ketika saluran aktif, dan tegangan suplai 5V, kami mengukur resistansi 56Ω tanpa beban melalui saluran itu – dan lembar data menunjukkan nilai lain tergantung pada beban dan suplai tegangan saat ini. Terakhir, jangan coba dan jalankan lebih dari 25 mA arus melalui pin.

Contoh

Sekarang untuk menunjukkan contoh dari multiplexing dan demultiplexing. Untuk tujuan demonstrasi, kami menggunakan papan Arduino Uno-kompatibel dengan 74HC4067 berjalan dari tegangan suplai 5V. Pin 15 dari ‘4067 diatur ke GND, dan pin kontrol S0 ~ S3 terhubung ke pin output digital Arduino D7 ~ D4 masing-masing.

Multiplexing

Di sinilah kita memilih satu pin input enam belas dan memungkinkan arus mengalir ke pin umum (1). Dalam contoh ini kami menghubungkan pin umum ke pin masukan analog dewan – jadi ini dapat digunakan sebagai metode membaca enam belas sinyal analog (satu per satu) hanya menggunakan satu ADC. Ketika melakukannya – perhatikan keterbatasan yang disebutkan sebelumnya – ambillah beberapa pengukuran hambatan dalam situasi Anda untuk menentukan berapa nilai maksimum dari ADC Anda dan kalibrasikan kode yang sesuai.

Dengan kedua contoh ini, kami akan menggunakan manipulasi port untuk mengontrol pin digital yang terhubung ke pin kontrol 74HC4067. Kami melakukan ini karena mengurangi kode yang diperlukan dan secara konseptual saya merasa itu lebih mudah. Misalnya – untuk memilih I / O 15 Anda perlu mengaktifkan semua pin kontrol – sehingga Anda hanya perlu mengatur Arduino PORTD ke B11110000 (yang merupakan biner 15 LSB terlebih dahulu) dan jauh lebih rapi daripada menggunakan empat fungsi digitalWrite ().

Dalam contoh sketsa berikut, Anda dapat melihat bagaimana kami menempatkan nilai biner untuk setiap kemungkinan kontrol di dalam array byte controlPins [] – yang kemudian digunakan untuk mengatur pin dengan mudah dalam kekosongan loop ().

Ini hanya menetapkan setiap pin input secara bergantian, kemudian membaca nilai ADC ke dalam array – yang nilainya kemudian dikirim ke monitor serial:

// 74HC4067 multiplexer demonstration (16 to 1)
// control pins output table in array form
// see truth table on page 2 of TI 74HC4067 data sheet
// connect 74HC4067 S0~S3 to Arduino D7~D4 respectively
// connect 74HC4067 pin 1 to Arduino A0
byte controlPins[] = {B00000000,
                  B10000000,
                  B01000000,
                  B11000000,
                  B00100000,
                  B10100000,
                  B01100000,
                  B11100000,
                  B00010000,
                  B10010000,
                  B01010000,
                  B11010000,
                  B00110000,
                  B10110000,
                  B01110000,
                  B11110000 };
// holds incoming values from 74HC4067                 
byte muxValues[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,};
void setup()
{
  Serial.begin(9600);
  DDRD = B11111111; // set PORTD (digital 7~0) to outputs
}
void setPin(int outputPin)
// function to select pin on 74HC4067
{
  PORTD = controlPins[outputPin];
}
void displayData()
// dumps captured data from array to serial monitor
{
  Serial.println();
  Serial.println("Values from multiplexer:");
  Serial.println("========================");
  for (int i = 0; i < 16; i++)
  {
    Serial.print("input I");
    Serial.print(i);
    Serial.print(" = ");
    Serial.println(muxValues[i]);
  }
  Serial.println("========================"); 
}
void loop()
{
  for (int i = 0; i < 16; i++)
  {
    setPin(i); // choose an input pin on the 74HC4067
    muxValues[i]=analogRead(0); // read the vlaue on that pin and store in array
  }
  // display captured data
  displayData();
  delay(2000);
}

Demultiplexing

Sekarang untuk fungsi sebaliknya – mengirim arus dari pin umum ke salah satu dari enam belas output. Contoh cepat dari ini adalah dengan mengendalikan satu dari enam belas LED yang terhubung ke pin output, dan dengan 5V pada pin umum 74HC4067. Kami tidak memerlukan resistor yang membatasi arus untuk LED karena hambatan internal pada 74HC4067. Inilah contoh programnya :

// 74HC4067 demultiplexer demonstration (1 to 16)
// control pins output table in array form
// see truth table on page 2 of TI 74HC4067 data sheet
// connect 74HC4067 S0~S3 to Arduino D7~D4 respectively
// 5V to 74HC4067 pin 1 to power the LEDs :)
byte controlPins[] = {B00000000,
                      B10000000,
                      B01000000,
                      B11000000,
                      B00100000,
                      B10100000,
                      B01100000,
                      B11100000,
                      B00010000,
                      B10010000,
                      B01010000,
                      B11010000,
                      B00110000,
                      B10110000,
                      B01110000,
                      B11110000 };
void setup()
{
  DDRD = B11111111; // set PORTD (digital 7~0) to outputs
}
void setPin(int outputPin)
// function to select pin on 74HC4067
{
  PORTD = controlPins[outputPin];
}
void loop()
{
  for (int i = 0; i < 16; i++)
  {
    setPin(i);
    delay(250);
  }
}

 

About kelas-fisika

Check Also

Modul Microphone Mic MAX9841

kelas-fisika.com – Modul Microphone Mic MAX9841 Modul amplifier mikrofon mewah ini adalah  built in gain control …

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

Powered by themekiller.com