Un multiplexor és un circuit combinacional que té diverses entrades i una única sortida de dades. Amb això s'aconsegueix seleccionar el pas de només una de les seves entrades per canalitzar a la seva sortida. És a dir, podries anar seleccionant de quina entrada agafar la dada o bit que hi ha a l'entrada i ignorar la resta d'entrades. Això és molt comú en electrònica quan es necessita que diverses connexions hagin de compartir una mateixa línia o bus.
És a dir, mitjançant el control de l'multiplexor es pot seleccionar l'entrada adequada en cada moment. El que possibilita que tot i haver només una connexió, es pugui estar treballant amb múltiples dispositius d'entrada a la vegada sense que ells interfereixin entre si. A més, has de saber que en general es fa servir un desmultiplexor en conjunt amb el multiplexor en molts projectes ...
Què és un multiplexor?

Aquests serveis combinacionals anomenats multiplexors no solen ser complexos. Estan compostos per unes quantes portes lògiques en funció de la seva quantitat d'entrades de dades i control podria augmentar la complexitat. En general inclouen 2n entrades i una sola sortida, així com línies de control. I es poden usar diversos d'ells combinats per augmentar aquest nombre d'entrades disponibles.
Es pot entendre com un selector. Per exemple, imagina que tens un de molt simple amb dues entrades, el més simple que es pot construir. Aquest circuit tindrà una sortida i una entrada de control única. Si les entrades són A i B, amb l'entrada de control es pot controlar si és A qui passa el seu valor a la sortida S o si és B qui ho fa. Per a això, només cal variar el valor de la línia de control C. Per exemple, si C = 0 serà A i si C = 1 serà B.
Com entendràs, si hi ha més entrades es necessitaran més entrades de control per a la selecció. De fet, el multiplexor és un tipus especial de descodificador, amb un senyal d'habilitació per cada porta AND inclosa i una porta OR entre la sortida i les portes AND. D'aquesta manera es pot seleccionar fàcilment.
Quant a les seves aplicacions, el pots fer servir per a multitud de coses:
- Selector d'entrades per compartir un únic bus o línia quan es tenen múltiples entrades.
- Serializador perquè vagi prenent el valor de cadascuna de les seves entrades en ordre.
- Per a la transmissió multiplexada usant les mateixes línies de connexió per a diversos dades de dispositius variats. Per exemple, imagina que vols fer servir una mateixa patilla de dades d'un microcontrolador per connectar diverses sortides de dispositius, però que només pot enviar informació un alhora ...
- Realitzar funcions lògiques, etc.
Tipus de multiplexor
Segons la forma en què es realitza la divisió de la transmissió, existeixen diversos tipus de multiplexors o multiplexació:
- Per divisió de freqüència
- Per divisió de temps
- Per divisió de codi
- Per divisió de longitud d'ona
Com pots imaginar, es controlen per freqüència, per temps mitjançant un clock, per codi binari, i per longitud d'ona. Però aquí només m'interessa el convencional ...
A més dels tipus, a l'igual que passa amb el desmultiplexor, el pots trobar amb més o menys canals 2, 4, 8, 16, etc., en funció del que necessitis per als teus projectes DIY.
Diferències amb un demultiplexor

En electrònica digital ha el desmultiplexor, Un circuit combinacional que és l'antagonista de l'multiplexor. En aquest cas només hi haurà una entrada d'informació, però es pot transmetre a través dels seus diverses sortides. És a dir, en aquest cas, mitjançant els senyals de control es decidirà a quina sortida es trasllada la dada de l'entrada.
Si unes un demultiplexor a la sortida d'un multiplexor, Pots tenir un sistema molt útil per a l'aprenentatge de com funcionen tots dos dispositius.
On comprar?

Aquests dispositius vénen implementats normalment en xips DIP molt senzills. Els pots trobar en gran varietat de marques i amb número d'entrades o sortides en cas de ser un desmultiplexor. A més, es troben fàcilment en diversos mitjans especialitzats o botigues en línia. Si t'interessa comprar algun a bon preu, aquests poden ser bons exemples per començar amb els teus projectes:
- TI multiplexor de 8 canals
- Perel multiplexor de 8 canals
- No s'ha trobat cap producte.
- CD74HC4067 Multiplexor / demultiplexor de 16 canals
T'aconsello llegir els datasheets dels seus fabricants per obtenir una idea clara de la seva pinout, Ja que poden variar en funció de l'fabricant o tipus que hagis comprat.
cd74hc4067
A més, com pots veure, també hi ha mòduls molt bons que permeten tenir dos dispositius en un. És el cas de l' conegut CD74HC4067, Un mòdul petit amb tecnologia TTL que et pot ajudar per treballar amb els seus 16 banals de forma bidireccional, a l'haver MUX / DEMUX. És a dir, el pots fer servir com una mena d'interruptor intel·ligent.
Així, el teu Arduino pot llegir i escriure fins en 1A 6 dispositius diferents amb només 5 pins, 4 d'ells usats per al control i un altre addicional per recollir el senyal que es pretén llegir o escriure segons el canal seleccionat.
El millor d'aquest xip és que funciona tant amb senyals digitals com analògiques, Per la qual cosa és compatible amb molts sensors que treballen en analògic i altres xips digitals, així com multitud d'elements electrònics diferents. Dóna gran versatilitat. Per això se'ls denomina també com a I / O expanders o amplificadors d'entrades i sortides ...
Fins i tot ho podries fer servir per a les comunicacions pel port sèrie, el bus I2C o la SCI, de què ja hem parlat en altres ocasions.
Això sí, abans de treballar amb ell, has d'assegurar- complir els voltatges i intensitats que admet aquest circuit per no danyar-lo. Per exemple, en aquest cas pot proporcionar fins a 20 mA, així com una tensió de 2 a 6v. No obstant això, si vols treballar amb corrents superiors podries fer servir un relé o mitjançant un transistor.
Integració amb Arduino

Una manera de tenir més entrades a la teva placa Arduino o més sortides, És usar aquests multiplexors i demultiplexors. Amb ells evitaràs haver de comprar una placa de preu més gran que tenen més quantitat de pins, o haver d'usar altres estratagemes per poder connectar tot el que necessites.
Per exemple, pots fer servir un mòdul MUX i DEMUX per poder tenir tots dos en un sol element, i després integrar-lo de forma simple al teu projecte amb Arduino. Amb el CD74HC4067 pots conexionarlo de forma molt senzilla, tan dol has de seguir aquestes regles:
- Vcc de l'xip MUX / DEMUX l'has de connectar a Vcc d'Arduino o 5V.
- GND, la terra, l'has de connectar a la GND d'Arduino.
- Els pins marcats com S0, S1, S2, S3 són els que controlen el canal actiu, amb quatre I / S digitals d'Arduino, com poden ser D8, D9, D10 i D11.
- La A també és d'habilitació, perquè funcioni com multiplexor la pots connectar a GND d'Arduino.
- I SIG és el senyal de sortida que determinarà el canal seleccionat. Pot anar connectat a Arduino o qualsevol dispositiu que necessiti llegir la sortida. En aquest cas l'he connectat a A0 per obtenir els valors des del propi Arduino.
- A l'altre extrem de la lliçó tindràs les entrades en aquest cas, que són C0-C10 que podràs connectar als teus dispositius.
Un cop connectat, el codi d'Arduino pot ser simple. el sketch d'Arduino IDE com multiplexor pot ser el següent (aquest codi només s'apagarà i s'encendrà seus canals respectivament, però pots modificar-lo per fer el projecte que vulguis):
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);
}
}
Si el vols fer servir com DEMUX, només hauries de considerar que C0-C10 serien les sortides i SIG seria l'entrada. En cas que vulguis usar-lo com desmultiplexor, El codi canviaria així:
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);
}
Recorda que pots obtenir més informació amb ajuda del nostre curs gratuït de programació d'Arduino.