Multiplexor: tot ce trebuie să știți

cip multiplexor

Un multiplexor este un circuit combinațional care are mai multe intrări și o singură ieșire de date. Cu aceasta, este posibil să selectați trecerea doar una dintre intrările sale pentru a o canaliza către ieșirea sa. Adică, puteți selecta din ce intrare să luați datele sau bitul care este la intrare și să ignorați restul intrărilor. Acest lucru este foarte frecvent în electronică atunci când mai multe conexiuni trebuie să partajeze o singură linie sau autobuz.

Adică, controlând multiplexorul pe care îl poți selectați intrarea corespunzătoare în orice moment. Ceea ce face posibil ca, în ciuda faptului că aveți o singură conexiune, puteți lucra cu mai multe dispozitive de intrare în același timp, fără ca acestea să interfereze unul cu celălalt. De asemenea, trebuie să știți că un demultiplexor este utilizat în general împreună cu multiplexorul în multe proiecte ...

Ce este un multiplexor?

multiplexor

Aceste servicii combinaționale numite multiplexoare nu sunt de obicei complexe. Acestea sunt alcătuite din câteva porți logice, în funcție de cantitatea de date introduse, iar controlul ar putea crește complexitatea. Ele includ de obicei 2n intrări și o singură ieșire, precum și linii de control. Și mai multe dintre ele pot fi utilizate în combinație pentru a crește numărul de bilete disponibile.

Poate fi înțeles ca un alegător. De exemplu, imaginați-vă că aveți una foarte simplă cu două intrări, cea mai simplă care poate fi construită. Circuitul respectiv va avea o singură intrare și ieșire de control. Dacă intrările sunt A și B, cu intrarea de control este posibil să se controleze dacă este A care își transmite valoarea la ieșirea S sau dacă B o face. Pentru a face acest lucru, trebuie doar să modificați valoarea liniei de control C. De exemplu, dacă C = 0 va fi A și dacă C = 1 va fi B.

După cum veți înțelege, dacă există mai multe intrări, vor fi necesare mai multe intrări de control pentru selecție. De fapt, multiplexorul este un tip special de decodor, cu un semnal de activare pentru fiecare poartă AND inclusă și o poartă SAU între ieșire și porțile AND. Astfel poate fi selectat cu ușurință.

În ceea ce privește aplicațiile sale, îl puteți folosi pentru o multitudine de lucruri:

  • Selector de intrare pentru a partaja o singură magistrală sau linie atunci când aveți mai multe intrări.
  • Serializer astfel încât să ia în ordine valoarea fiecăreia dintre intrările sale.
  • Pentru transmisie multiplexată utilizând aceleași linii de conexiune pentru diferite date de la dispozitive variate. De exemplu, imaginați-vă că doriți să utilizați același pin de date al unui microcontroler pentru a conecta mai multe ieșiri ale dispozitivului, dar că poate trimite informații doar una câte una ...
  • Efectuați funcții logice etc.

Tipuri multiplexoare

În funcție de modul în care transmisia este împărțită, există tipuri variate multiplexoare sau multiplexare:

  • După divizarea frecvenței
  • Prin împărțirea timpului
  • După divizarea codului
  • Prin diviziune a lungime de undă

După cum vă puteți imagina, acestea sunt controlate de frecvență, de timp de un ceas, de cod binar și de lungimea de undă. Dar aici mă interesează doar cele convenționale ...

În plus față de tipuri, ca și în cazul demultiplexorului, îl puteți găsi cu mai multe sau mai puține canale 2, 4, 8, 16 etc., în funcție de ceea ce aveți nevoie pentru proiectele dvs. DIY.

Diferențe cu un demultiplexor

demultiplexor

În electronica digitală există demultiplexor, un circuit combinațional care este antagonistul multiplexorului. În acest caz, va exista o singură intrare de informații, dar aceasta poate fi transmisă prin diferitele sale ieșiri. Cu alte cuvinte, în acest caz, semnalele de control vor decide către ce ieșire sunt transferate datele de intrare.

Si conectați un demultiplexor la ieșirea unui multiplexor, puteți avea un sistem foarte util pentru a învăța cum funcționează ambele dispozitive.

De unde să cumpăr?

multiplexer demultiplexor

Aceste dispozitive sunt în mod normal implementate în jetoane înmuiate foarte simplu. Le puteți găsi într-o mare varietate de mărci și cu un număr de intrări sau ieșiri în cazul în care sunteți un demultiplexor. În plus, acestea se găsesc cu ușurință în diverse medii specializate sau magazine online. Dacă sunteți interesat să cumpărați unul la un preț bun, acestea pot fi exemple bune pentru a începe cu proiectele dvs.:

Vă sfătuiesc să citiți fișele tehnice de la producătorii lor pentru a-și face o idee clară pin out, deoarece acestea pot varia în funcție de producător sau de tipul pe care l-ați achiziționat.

cd74hc4067

În plus, după cum puteți vedea, există și module foarte bune care vă permit să aveți ambele dispozitive într-unul. Este cazul cunoscut CD74HC4067, un mic modul cu tehnologie TTL care vă poate ajuta să lucrați cu cele 16 banale ale sale într-un mod bidirecțional, având MUX / DEMUX. Adică îl puteți folosi ca un fel de switch inteligent.

Astfel, Arduino poate citi și scrie până la 16 dispozitive diferite cu doar 5 pini, 4 dintre ei utilizați pentru control și unul suplimentar pentru a colecta semnalul care este destinat să fie citit sau scris în funcție de canalul selectat.

Lucrul bun al acestui cip este că funcționează atât cu semnale digitale, cât și cu semnale analogice, deci este compatibil cu mulți senzori care funcționează pe cipuri analogice și alte cipuri digitale, precum și cu o multitudine de elemente electronice diferite. Oferă o mare versatilitate. De aceea, ei sunt, de asemenea, cunoscuți ca extensori I / O sau amplificatoare de intrare și ieșire ...

Ai putea chiar să-l folosești pentru comunicații prin portul serial, autobuzul I2C sau SPI, despre care am vorbit deja cu alte ocazii.

Desigur, înainte de a lucra cu el, trebuie să vă asigurați că îndeplinesc tensiunile și curenții care admite acest circuit pentru a nu-l deteriora. De exemplu, în acest caz poate furniza până la 20 mA, precum și o tensiune de 2 până la 6v. Cu toate acestea, dacă doriți să lucrați cu curenți mai mari ai putea folosi un releu sau printr-un tranzistor.

Integrare cu Arduino

Arduino cu Bluetooth

O cale aveți mai multe intrări pe placa Arduino sau mai multe ieșiri, este de a utiliza aceste multiplexoare și demultiplexoare. Cu ele veți evita să cumpărați o placă cu un preț mai mare, care să aibă mai mulți ace sau să folosiți alte trucuri pentru a conecta tot ce aveți nevoie.

De exemplu, puteți utiliza un Modulul MUX și DEMUX pentru a le putea avea pe amândouă într-un singur element, și apoi pentru a le integra într-un mod simplu la proiectul dvs. cu Arduino. Cu CD74HC4067 îl puteți conecta foarte ușor, deci trebuie să urmați aceste reguli:

  • Vcc-ul cipului MUX / DEMUX trebuie să-l conectați la Vcc-ul Arduino sau 5V.
  • GND, la sol, trebuie să-l conectați la GND din Arduino.
  • Pinii marcați S0, S1, S2, S3 sunt cei care controlează canalul activ, cu patru I / O digitale Arduino, precum D8, D9, D10 și D11.
  • EN este, de asemenea, activat, astfel încât să funcționeze ca un multiplexor, îl puteți conecta la GND de Arduino.
  • Și SIG este semnalul de ieșire care va determina canalul selectat. Poate fi conectat la Arduino sau la orice dispozitiv care trebuie să citească ieșirea. În acest caz, l-am conectat la A0 pentru a obține valorile de la Arduino în sine.
  • La celălalt capăt al modulului veți avea intrările în acest caz, care sunt C0-C10 pe care le puteți conecta la dispozitivele dvs.

Odată conectat, codul Arduino poate fi simplu. Schiță Arduino IDE ca multiplexor Poate fi următorul (acest cod se va opri și respectiv pe canalele lor, dar îl puteți modifica pentru a face proiectul dorit):

const int muxSIG = A0;
const int muxS0 = 8;
const int muxS1 = 9;
const int muxS2 = 10;
const int muxS3 = 11;
 
int SetMuxChannel(byte channel)
{
   digitalWrite(muxS0, bitRead(channel, 0));
   digitalWrite(muxS1, bitRead(channel, 1));
   digitalWrite(muxS2, bitRead(channel, 2));
   digitalWrite(muxS3, bitRead(channel, 3));
}
 
void setup()
{
   pinMode(muxSIG, OUTPUT);
   pinMode(muxS0, OUTPUT);
   pinMode(muxS1, OUTPUT);
   pinMode(muxS2, OUTPUT);
   pinMode(muxS3, OUTPUT);
}
 
void loop()
{
   for (byte i = 0; i < 16; i++)
   {
      SetMuxChannel(i);
      digitalWrite(muxSIG, HIGH);
      delay(200);
      digitalWrite(muxSIG, LOW);
      delay(200);
   }
}

Dacă doriți să-l utilizați ca DEMUX, ar trebui să luați în considerare doar că C0-C10 ar fi ieșirile și SIG ar fi intrarea. În caz că vrei folosiți-l ca demultiplexor, codul s-ar schimba astfel:

onst int muxSIG = A0;
const int muxS0 = 8;
const int muxS1 = 9;
const int muxS2 = 10;
const int muxS3 = 11;
 
int SetMuxChannel(byte channel)
{
   digitalWrite(muxS0, bitRead(channel, 0));
   digitalWrite(muxS1, bitRead(channel, 1));
   digitalWrite(muxS2, bitRead(channel, 2));
   digitalWrite(muxS3, bitRead(channel, 3));
}
 
void setup()
{
   Serial.begin(9600);
   pinMode(muxS0, OUTPUT);
   pinMode(muxS1, OUTPUT);
   pinMode(muxS2, OUTPUT);
   pinMode(muxS3, OUTPUT);
}
 
void loop()
{
   for (byte i = 0; i < 16; i++)
   {
      SetMuxChannel(i);
      byte muxValue = analogRead(muxSIG);
 
      Serial.print(muxValue);
      Serial.print("\t");
   }
   Serial.println();
   delay(1000);
}

Amintiți-vă că puteți obține mai multe informații cu ajutorul nostru curs gratuit de programare Arduino.


Un comentariu, lasă-l pe al tău

Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.

  1.   Xavier Ortiz el a spus

    Bună, fac un proiect, așa cum fac eu să folosesc 74hc4067 pentru intrări de 16 senzori de obstacole în infraroșu și că fiecare senzor mă transformă pe o ieșire diferită. Ei bine, dacă aș putea face asta cu arduino mega, dar trebuie să folosesc 50 de senzori în infraroșu și fiecare să pornească o ieșire, adică 50 de ieșiri, mă gândesc să folosesc mai multe 744067 pentru intrări senzor și tlc5940 pentru ieșiri, dar în ceea ce este codul de programare sunt puțin pierdut, mulțumesc anticipat pentru ajutor.