Multiplexer: allt du behöver veta

multiplexerchip

Un multiplexor är en kombinationskrets som har flera ingångar och en enda datautgång. Med detta är det möjligt att välja passagen för endast en av dess ingångar för att kanalisera den till dess utgång. Det vill säga, du kan välja från vilken ingång som ska ta data eller biten som finns vid ingången och ignorera resten av ingångarna. Detta är mycket vanligt inom elektronik när flera anslutningar behöver dela en linje eller buss.

Det vill säga genom att styra multiplexern kan du välj lämplig ingång hela tiden. Vad gör det möjligt att trots att du bara har en anslutning, kan du arbeta med flera ingångsenheter samtidigt utan att de stör varandra. Du bör också veta att en demultiplexer vanligtvis används i kombination med multiplexern i många projekt ...

Vad är en multiplexer?

multiplexor

Dessa kombinationstjänster kallas multiplexrar de är vanligtvis inte komplexa. De består av några logiska grindar beroende på deras mängd dataingångar och kontroll kan öka komplexiteten. De inkluderar vanligtvis 2n ingångar och en enda utgång, samt kontrollinjer. Och du kan använda flera av dem i kombination för att öka antalet tillgängliga biljetter.

Det kan förstås som en väljare. Föreställ dig till exempel att du har en mycket enkel med två ingångar, det enklaste som kan byggas. Den kretsen kommer att ha en enda styringång och utgång. Om ingångarna är A och B är det med styringången möjligt att styra om det är A som överför sitt värde till utgången S eller om det är B som gör det. För att göra detta behöver du bara ändra värdet på kontrollinjen C. Till exempel, om C = 0 blir det A och om C = 1 blir det B.

Som du kommer att förstå, om det finns fler ingångar, kommer mer att behövas kontrollingångar för val. Faktum är att multiplexorn är en speciell typ av avkodare, med en aktiveringssignal för varje inkluderad AND-grind och en ELLER-grind mellan utgången och AND-grindarna. På så sätt kan det enkelt väljas.

När det gäller dess applikationer kan du använda den för en mängd saker:

  • Ingångsväljare för att dela en enda buss eller linje när du har flera ingångar.
  • Serializer så att den tar värdet på varje ingång i ordning.
  • För multiplexerad överföring med samma anslutningslinjer för olika data från olika enheter. Tänk dig till exempel att du vill använda samma datapinne på en mikrokontroller för att ansluta flera enhetsutgångar, men att den bara kan skicka information en i taget ...
  • Utför logiska funktioner etc.

Multiplexer typer

Beroende på hur överföringen är uppdelad finns det olika typer multiplexers eller multiplexing:

  • Genom frekvensdelning
  • Efter tidsdelning
  • Genom koddelning
  • Genom delning av våglängd

Som ni kan föreställa er styrs de av frekvens, av tid av en klocka, av binär kod och av våglängd. Men här är jag bara intresserad av det konventionella ...

Förutom typerna, som med demultiplexern, kan du hitta den med mer eller mindre kanaler 2, 4, 8, 16, etc., beroende på vad du behöver för dina DIY-projekt.

Skillnader med en demultiplexer

demultiplexer

I digital elektronik finns det demultiplexer, en kombinationskrets som är antagonisten för multiplexern. I detta fall kommer det bara att finnas en informationsingång, men den kan överföras via dess olika utgångar. Med andra ord, i detta fall kommer det att bestämmas med hjälp av styrsignalerna till vilka utmatningen ingångsdata överförs.

Si du ansluter en demultiplexer till utgången från en multiplexerkan du ha ett mycket användbart system för att lära dig hur båda enheterna fungerar.

Var man kan köpa?

multiplexer demultiplexer

Dessa enheter implementeras normalt i doppa marker väldigt enkelt. Du hittar dem i en mängd olika märken och med ett antal ingångar eller utgångar om du är en demultiplexer. Dessutom finns de lätt i olika specialmedier eller onlinebutiker. Om du är intresserad av att köpa en till ett bra pris kan det här vara bra exempel till att börja med dina projekt:

Jag råder dig att läsa datablad från sina tillverkare för att få en klar uppfattning om deras pinouteftersom de kan variera beroende på tillverkare eller typ du har köpt.

cd74hc4067

Dessutom, som du kan se, finns det också mycket bra moduler som gör att du kan ha båda enheterna i en. Det är fallet med känd CD74HC4067, en liten modul med TTL-teknik som kan hjälpa dig att arbeta med sina 16 banaler på ett dubbelriktat sätt genom att ha MUX / DEMUX. Det vill säga, du kan använda den som en slags smart switch.

Således kan din Arduino läsa och skriva upp till 16 olika enheter med endast 5 stift, varav 4 används för kontroll och ytterligare en för att samla in signalen som är avsedd att läsas eller skrivas enligt vald kanal.

Det som är bra med detta chip är det fungerar med både digitala och analoga signaler, så det är kompatibelt med många sensorer som fungerar på analoga och andra digitala chips, liksom en mängd olika elektroniska element. Det ger stor mångsidighet. Det är därför de också är kända som I / O-utökare eller ingångs- och utgångsförstärkare ...

Du kan till och med använda den för kommunikation via den seriella porten, I2C-bussen eller SPI, som vi redan har talat om vid andra tillfällen.

Naturligtvis måste du se till att innan du arbetar med honom möta spänningar och strömmar som erkänner denna krets för att inte skada den. I det här fallet kan det till exempel ge upp till 20 mA, liksom en spänning på 2 till 6v. Men om du vill arbeta med högre strömmar du kan använda ett relä eller genom en transistor.

Integration med Arduino

Arduino med Bluetooth

En form av har fler ingångar på ditt Arduino-kort eller fler utgångar, är att använda dessa multiplexorer och demultiplexers. Med dem kommer du att undvika att behöva köpa ett billigare kort som har fler stift, eller att behöva använda andra knep för att ansluta allt du behöver.

Du kan till exempel använda en MUX- och DEMUX-modul att kunna ha båda i ett enda element och sedan enkelt integrera det i ditt projekt med Arduino. Med CD74HC4067 kan du ansluta den mycket enkelt, så du måste följa dessa regler:

  • Vcc för MUX / DEMUX-chipet måste du ansluta det till Vcc of Arduino eller 5V.
  • GND, marken, du måste ansluta den till Arduinos GND.
  • Stiften märkta S0, S1, S2, S3 är de som styr den aktiva kanalen, med fyra Arduino digitala I / O, som D8, D9, D10 och D11.
  • EN är också möjlig, så att den fungerar som en multiplexer kan du ansluta den till Arduinos GND.
  • Och SIG är utsignalen som bestämmer vald kanal. Den kan anslutas till Arduino eller till vilken enhet som helst som behöver läsa utgången. I det här fallet har jag anslutit den till A0 för att få värdena från själva Arduino.
  • I den andra änden av modulen har du ingångarna i detta fall, vilka är C0-C10 som du kan ansluta till dina enheter.

När du är ansluten kan Arduino-koden vara enkel. De Arduino IDE-skiss som multiplexer Det kan vara följande (den här koden stängs bara av respektive på deras kanaler, men du kan ändra den för att göra det projekt du vill ha):

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

Om du vill använda den som DEMUX, bör du bara tänka på att C0-C10 skulle vara utgångarna och SIG skulle vara ingången. Om du vill använd den som en demultiplexer, skulle koden ändras så här:

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

Kom ihåg att du kan få mer information med hjälp av vår gratis Arduino programmeringskurs.


En kommentar, lämna din

Lämna din kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med *

*

*

  1. Ansvarig för uppgifterna: Miguel Ángel Gatón
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.

  1.   Xavier Ortiz sade

    Hej, jag gör ett projekt, saken som jag gör för att använda 74hc4067 för ingångar av 16 infraröda hinder sensorer, och att varje sensor visar mig på en annan utgång. Tja, om jag kunde göra det med arduino mega men jag måste använda 50 infraröda sensorer och att var och en slår på en utgång, det vill säga 50 utgångar, tänker jag använda flera 744067 för sensoringångar och tlc5940 för utgångar, men i vad är programmeringskoden är jag lite vilse, tack på förhand för din hjälp.