Multiplexer: alles wat u moet weten

multiplexer chip

Un multiplexer is een combinatieschakeling met meerdere ingangen en een enkele gegevensuitgang. Hiermee is het mogelijk om de doorgang van slechts één van zijn ingangen te selecteren om deze naar zijn uitgang te kanaliseren. Dat wil zeggen, je zou kunnen kiezen uit welke input je de data of bit wilt halen die aan de input zit en de rest van de inputs negeren. Dit is heel gebruikelijk in elektronica wanneer meerdere verbindingen een enkele lijn of bus moeten delen.

Dat wil zeggen, door de multiplexer te besturen, kunt u selecteer altijd de juiste ingang. Wat het mogelijk maakt dat je, ondanks dat je maar één verbinding hebt, met meerdere invoerapparaten tegelijk kunt werken zonder dat ze elkaar storen. U moet ook weten dat een demultiplexer in veel projecten over het algemeen in combinatie met de multiplexer wordt gebruikt ...

Wat is een multiplexer?

multiplexer

Deze combinatieservices worden genoemd multiplexers ze zijn meestal niet complex. Ze bestaan ​​uit een paar logische poorten, afhankelijk van hun aantal gegevensinvoer en controle kan de complexiteit vergroten. Ze bevatten meestal 2n ingangen en een enkele uitgang, evenals stuurlijnen. En je kunt er meerdere in combinatie gebruiken om dat aantal beschikbare tickets te vergroten.

Het kan worden opgevat als een selector. Stel je voor dat je een heel eenvoudige hebt met twee ingangen, de eenvoudigste die kan worden gebouwd. Dat circuit heeft een enkele stuuringang en -uitgang. Als de ingangen A en B zijn, is het met de stuuringang mogelijk om te controleren of het A is die zijn waarde doorgeeft aan de uitgang S of dat het B is die het doet. Om dit te doen, hoeft u alleen de waarde van de controlelijn C te variëren. Als C = 0 is het bijvoorbeeld A en als C = 1 is het B.

Zoals u zult begrijpen, is er meer nodig als er meer invoer is controle ingangen voor selectie. In feite is de multiplexer een speciaal type decoder, met een vrijgavesignaal voor elke opgenomen EN-poort en een OF-poort tussen de uitgang en de EN-poorten. Op die manier kan het gemakkelijk worden geselecteerd.

Wat betreft de toepassingen, u kunt het gebruiken voor een veelheid aan dingen:

  • Ingangskeuzeschakelaar om een ​​enkele bus of lijn te delen als u meerdere ingangen heeft.
  • Serializer zodat het de waarde van elk van zijn ingangen op volgorde neemt.
  • Voor gemultiplexte verzending met behulp van dezelfde verbindingslijnen voor verschillende gegevens van verschillende apparaten. Stel je bijvoorbeeld voor dat je dezelfde datapin van een microcontroller wilt gebruiken om meerdere apparaatuitgangen aan te sluiten, maar dat deze alleen informatie één voor één kan verzenden ...
  • Voer logische functies uit, enz.

Multiplexer typen

Afhankelijk van de manier waarop de verzending is verdeeld, zijn er verschillende types multiplexers of multiplexen:

  • Door frequentieverdeling
  • Door tijdverdeling
  • Door codeverdeling
  • Door deling van golflengte

Zoals u zich kunt voorstellen, worden ze bestuurd door frequentie, door tijd door een klok, door binaire code en door golflengte. Maar hier ben ik alleen geïnteresseerd in de conventionele ...

Naast de typen, zoals bij de demultiplexer, kun je deze ook vinden bij meer of minder kanalen 2, 4, 8, 16, etc., afhankelijk van wat je nodig hebt voor je doe-het-zelf-projecten.

Verschillen met een demultiplexer

demultiplexer

In digitale elektronica is er demultiplexer, een combinatieschakeling die de antagonist is van de multiplexer. In dit geval is er slechts één informatie-ingang, maar deze kan via de verschillende uitgangen worden verzonden. Met andere woorden, in dit geval zullen de stuursignalen beslissen naar welke uitgang de invoergegevens worden overgedragen.

Si je sluit een demultiplexer aan op de uitgang van een multiplexer, kunt u een zeer handig systeem hebben om te leren hoe beide apparaten werken.

Waar te kopen?

multiplexer-demultiplexer

Deze apparaten worden normaal gesproken geïmplementeerd in dip chips erg makkelijk. Je vindt ze in een grote verscheidenheid aan merken en met een aantal in- of uitgangen in het geval dat je een demultiplexer bent. Bovendien zijn ze gemakkelijk te vinden in verschillende gespecialiseerde media of online winkels. Als u geïnteresseerd bent in het kopen van een voor een goede prijs, kunnen dit goede voorbeelden zijn om met uw projecten te beginnen:

Ik raad je aan om te lezen de datasheets van hun fabrikanten om een ​​duidelijk beeld te krijgen van hun pinout, aangezien ze kunnen variëren afhankelijk van de fabrikant of het type dat u heeft gekocht.

cd74hc4067

Bovendien zijn er, zoals u kunt zien, ook zeer goede modules waarmee u beide apparaten in één kunt hebben. Het is het geval van bekend CD74HC4067, een kleine module met TTL-technologie die u kan helpen om met zijn 16 banalen op een bidirectionele manier te werken, door MUX / DEMUX te hebben. Dat wil zeggen, je kunt het gebruiken als een soort slimme schakelaar.

Uw Arduino kan dus maximaal 1 lezen en schrijven6 verschillende apparaten met slechts 5 pinnen, waarvan er 4 worden gebruikt voor besturing en een extra om het signaal te verzamelen dat moet worden gelezen of geschreven volgens het geselecteerde kanaal.

Het goede aan deze chip is dat werkt met zowel digitale als analoge signalen, dus het is compatibel met veel sensoren die werken op analoge en andere digitale chips, evenals een groot aantal verschillende elektronische elementen. Het geeft een grote veelzijdigheid. Daarom worden ze ook wel I / O-expanders of in- en uitgangsversterkers genoemd ...

Je zou het zelfs voor kunnen gebruiken communicatie via de seriële poort, de I2C-bus of de SPI, waarover we al bij andere gelegenheden hebben gesproken.

Voordat u met hem gaat werken, moet u daar natuurlijk voor zorgen voldoen aan de spanningen en stromen die dit circuit toelaat om het niet te beschadigen. In dit geval kan hij bijvoorbeeld tot 20 mA leveren, evenals een spanning van 2 tot 6 volt. Als u echter met hogere stromen wilt werken je zou een estafette kunnen gebruiken of via een transistor.

Integratie met Arduino

Arduino met Bluetooth

Een vorm van hebben meer inputs op uw Arduino-bord of meer outputs, is om deze multiplexers en demultiplexers te gebruiken. Hiermee voorkom je dat je een duurder bord moet kopen met meer pinnen, of dat je andere trucs moet gebruiken om alles wat je nodig hebt aan te sluiten.

U kunt bijvoorbeeld een MUX- en DEMUX-module om beide in een enkel element te hebben en het vervolgens op een eenvoudige manier met Arduino in uw project te integreren. Met de CD74HC4067 kun je hem heel gemakkelijk aansluiten, dus je moet deze regels volgen:

  • Vcc van de MUX / DEMUX chip moet je aansluiten op Vcc van Arduino of 5V.
  • GND, de aarde, je moet het verbinden met de GND van de Arduino.
  • De pinnen gemarkeerd met S0, S1, S2, S3 zijn degenen die het actieve kanaal besturen, met vier Arduino digitale I / O, zoals D8, D9, D10 en D11.
  • De EN maakt ook vrij, zodat hij werkt als een multiplexer kun je hem aansluiten op de GND van Arduino.
  • En SIG is het uitgangssignaal dat het geselecteerde kanaal zal bepalen. Het kan worden aangesloten op Arduino of op elk apparaat dat de uitvoer moet lezen. In dit geval heb ik het op A0 aangesloten om de waarden van de Arduino zelf te krijgen.
  • Aan het andere uiteinde van de module heb je in dit geval de ingangen, dit zijn C0-C10 die je op je apparaten kunt aansluiten.

Eenmaal verbonden, kan de Arduino-code eenvoudig zijn. De Arduino IDE-schets als multiplexer Het kan het volgende zijn (deze code schakelt alleen hun kanalen respectievelijk uit, maar u kunt het aanpassen om het gewenste project te maken):

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

Als je het als DEMUX wilt gebruiken, moet je er alleen rekening mee houden dat C0-C10 de uitgangen zijn en SIG de ingang. Voor het geval je dat wilt gebruik het als een demultiplexer, zou de code als volgt veranderen:

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

Onthoud dat u meer informatie kunt krijgen met behulp van onze gratis Arduino-programmeercursus.


Een opmerking, laat de jouwe achter

Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.

  1.   Xavier Ortiz zei

    Hallo, ik doe een project, zoals ik doe om de 74hc4067 te gebruiken voor ingangen van 16 infrarood obstakelsensoren, en dat elke sensor me op een andere uitgang zet. Welnu, als ik het zou kunnen doen met de arduino mega, maar ik moet 50 infraroodsensoren gebruiken en die elk een uitgang aanzetten, dat wil zeggen 50 uitgangen, dan denk ik erover om verschillende 744067 te gebruiken voor sensoringangen en de tlc5940 voor uitgangen, maar in wat is de programmeercode ik ben een beetje verdwaald, bij voorbaat dank voor je hulp.