Multiplexer: tutto ciò che devi sapere

chip multiplexer

Un multiplexer è un circuito combinatorio che ha diversi input e un unico output di dati. Con questo è possibile selezionare il passaggio di uno solo dei suoi ingressi per incanalarlo verso la sua uscita. Cioè, è possibile selezionare da quale ingresso prendere i dati o il bit che si trova all'ingresso e ignorare il resto degli ingressi. Questo è molto comune nell'elettronica quando più connessioni devono condividere una singola linea o bus.

Cioè, controllando il multiplexer puoi selezionare sempre l'ingresso appropriato. Ciò che rende possibile che nonostante si disponga di una sola connessione, è possibile lavorare con più dispositivi di input contemporaneamente senza che questi interferiscano tra loro. Inoltre, dovresti sapere che un demultiplexer viene generalmente utilizzato insieme al multiplexer in molti progetti ...

Cos'è un multiplexer?

multiplexer

Questi servizi combinatori chiamati multiplexer di solito non sono complessi. Sono composti da poche porte logiche a seconda della quantità di input di dati e il controllo potrebbe aumentare la complessità. Di solito includono 2n ingressi e una singola uscita, oltre a linee di controllo. E molti di loro possono essere utilizzati in combinazione per aumentare il numero di biglietti disponibili.

Può essere inteso come un selettore. Ad esempio, immagina di averne uno molto semplice con due ingressi, il più semplice che può essere costruito. Quel circuito avrà un singolo ingresso e uscita di controllo. Se gli ingressi sono A e B, con l'ingresso di controllo è possibile controllare se è A che passa il suo valore all'uscita S o se è B a farlo. Per fare ciò, devi solo variare il valore della linea di controllo C.Ad esempio, se C = 0 sarà A e se C = 1 sarà B.

Come capirai, se ci sono più input, saranno necessari di più ingressi di controllo per la selezione. Infatti, il multiplexer è un tipo speciale di decodificatore, con un segnale di abilitazione per ogni porta AND inclusa e una porta OR tra l'uscita e le porte AND. In questo modo può essere facilmente selezionato.

Per quanto riguarda le sue applicazioni, puoi usarlo per una moltitudine di cose:

  • Selettore di ingresso per condividere un singolo bus o linea quando si hanno più ingressi.
  • Serializzatore in modo che prenda in ordine il valore di ciascuno dei suoi input.
  • Per la trasmissione multiplex utilizzando le stesse linee di connessione per vari dati da diversi dispositivi. Ad esempio, immagina di voler utilizzare lo stesso pin dati di un microcontrollore per collegare diverse uscite del dispositivo, ma che può inviare informazioni solo una alla volta ...
  • Eseguire funzioni logiche, ecc.

Tipi di multiplexer

A seconda del modo in cui è suddivisa la trasmissione, ci sono vari tipi multiplexer o multiplexing:

  • Per divisione di frequenza
  • Per divisione di tempo
  • Per divisione del codice
  • Per divisione di lunghezza d'onda

Come puoi immaginare, sono controllati dalla frequenza, dal tempo da un orologio, dal codice binario e dalla lunghezza d'onda. Ma qui mi interessa solo il convenzionale ...

Oltre ai tipi, come con il demultiplexer, puoi trovarlo con più o meno canali 2, 4, 8, 16, ecc., A seconda di ciò che ti serve per i tuoi progetti fai-da-te.

Differenze con un demultiplatore

demultiplexer

Nell'elettronica digitale c'è demultiplexer, un circuito combinatorio che è l'antagonista del multiplexer. In questo caso ci sarà solo un ingresso di informazione, ma può essere trasmesso attraverso le sue varie uscite. In altre parole, in questo caso, si deciderà tramite i segnali di controllo a cui in uscita verranno trasferiti i dati in ingresso.

Si si collega un demultiplexer all'uscita di un multiplexer, puoi avere un sistema molto utile per imparare come funzionano entrambi i dispositivi.

Dove comprare?

multiplexer demultiplexer

Questi dispositivi sono normalmente implementati in patatine fritte molto semplice. Puoi trovarli in un'ampia varietà di marchi e con un numero di ingressi o uscite in caso di demultiplatore. Inoltre, sono facilmente reperibili in vari media specializzati o negozi online. Se sei interessato ad acquistarne uno a buon prezzo, questi possono essere dei buoni esempi per iniziare con i tuoi progetti:

Ti consiglio di leggere le schede tecniche dai loro produttori per avere un'idea chiara del loro piedinatura, poiché possono variare a seconda del produttore o del tipo acquistato.

cd74hc4067

Inoltre, come puoi vedere, ci sono anche ottimi moduli che ti permettono di avere entrambi i dispositivi in ​​uno. È il caso di noto CD74HC4067, un piccolo modulo con tecnologia TTL che può aiutarti a lavorare con i suoi 16 banali in modo bidirezionale, disponendo di MUX / DEMUX. Cioè, puoi usarlo come una sorta di interruttore intelligente.

Pertanto, il tuo Arduino può leggere e scrivere fino a 16 dispositivi diversi con soli 5 pin, 4 dei quali utilizzati per il controllo e uno aggiuntivo per raccogliere il segnale che si intende leggere o scrivere in base al canale selezionato.

La cosa buona di questo chip è che funziona con segnali sia digitali che analogici, quindi è compatibile con molti sensori che funzionano su chip analogici e altri digitali, oltre a una moltitudine di diversi elementi elettronici. Dà grande versatilità. Ecco perché sono anche conosciuti come espansori I / O o amplificatori di ingresso e uscita ...

Potresti anche usarlo per comunicazioni attraverso la porta seriale, il bus I2C o lo SPI, di cui abbiamo già parlato in altre occasioni.

Ovviamente, prima di lavorare con lui, devi assicurartene soddisfare le tensioni e le correnti che ammette questo circuito per non danneggiarlo. Ad esempio, in questo caso può fornire fino a 20 mA, oltre a una tensione da 2 a 6v. Tuttavia, se vuoi lavorare con correnti più elevate potresti usare un relè o tramite un transistor.

Integrazione con Arduino

arduino con bluetooth

Un modo avere più ingressi sulla scheda Arduino o più uscite, è quello di utilizzare questi multiplexer e demultiplexer. Con loro eviterai di dover acquistare una scheda più costosa che ha più pin, o di dover usare altri trucchi per collegare tutto ciò di cui hai bisogno.

Ad esempio, puoi utilizzare un file Modulo MUX e DEMUX per poterle avere entrambe in un unico elemento, per poi integrarle facilmente nel tuo progetto con Arduino. Con il CD74HC4067 puoi collegarlo molto facilmente, quindi devi seguire queste regole:

  • Vcc del chip MUX / DEMUX è necessario collegarlo a Vcc di Arduino o 5V.
  • GND, la terra, devi collegarlo al GND di Arduino.
  • I pin contrassegnati S0, S1, S2, S3 sono quelli che controllano il canale attivo, con quattro I / O digitali Arduino, come D8, D9, D10 e D11.
  • Anche l'EN è abilitato, in modo che funzioni come multiplexer puoi collegarlo al GND di Arduino.
  • E SIG è il segnale di uscita che determinerà il canale selezionato. Può essere collegato ad Arduino oa qualsiasi dispositivo che necessiti di leggere l'output. In questo caso l'ho collegato ad A0 per ottenere i valori da Arduino stesso.
  • All'altra estremità del modulo avrete gli ingressi in questo caso, che sono C0-C10 che potete collegare ai vostri dispositivi.

Una volta connesso, il codice Arduino può essere semplice. Il Schizzo IDE Arduino come multiplexer Può essere il seguente (questo codice spegnerà e accenderà solo i loro canali rispettivamente, ma puoi modificarlo per realizzare il progetto che desideri):

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);
   }
}

Se vuoi usarlo come DEMUX, dovresti solo considerare che C0-C10 sarebbero le uscite e SIG sarebbe l'ingresso. Nel caso tu voglia usalo come demultiplatore, il codice cambierebbe in questo modo:

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);
}

Ricorda che puoi ottenere maggiori informazioni con l'aiuto del nostro corso gratuito di programmazione Arduino.


Un commento, lascia il tuo

Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.

  1.   Saverio Ortiz suddetto

    Ciao, sto facendo un progetto, la cosa che faccio io uso il 74hc4067 per gli ingressi di 16 sensori di ostacoli a infrarossi e che ogni sensore mi fa girare su un'uscita diversa. Bene, se potessi farlo con il mega arduino ma ho bisogno di usare 50 sensori a infrarossi e che ognuno accenda un'uscita, cioè 50 uscite, sto pensando di utilizzare diversi 744067 per gli ingressi dei sensori e tlc5940 per le uscite, ma in quello che è il codice di programmazione sono un po 'perso, grazie in anticipo per il tuo aiuto.