Multiplexer: alt hvad du behøver at vide

multiplexer-chip

Un multiplekser er et kombinationskredsløb, der har flere indgange og en enkelt dataudgang. Med dette er det muligt at vælge passage af kun en af ​​dens indgange for at kanalisere den til dens udgang. Det vil sige, du kan vælge fra hvilket input du vil tage dataene eller biten, der er ved indgangen, og ignorere resten af ​​inputene. Dette er meget almindeligt inden for elektronik, når flere forbindelser skal dele en enkelt linje eller bus.

Det vil sige ved at kontrollere multiplexeren, du kan vælg altid den relevante indgang. Hvad gør det muligt, at selvom du kun har en forbindelse, kan du arbejde med flere inputenheder på samme tid uden at de forstyrrer hinanden. Du skal også vide, at en demultiplexer generelt bruges i forbindelse med multiplexeren i mange projekter ...

Hvad er en multiplexer?

multiplekser

Disse kombinerede tjenester kaldes multiplexere de er normalt ikke komplekse. De består af et par logiske porte afhængigt af deres antal dataindgange, og kontrol kan øge kompleksiteten. De inkluderer normalt 2n indgange og en enkelt udgang samt kontrollinjer. Og du kan bruge flere af dem i kombination for at øge antallet af tilgængelige billetter.

Det kan forstås som en vælger. Forestil dig for eksempel, at du har en meget enkel med to indgange, den enkleste, der kan bygges. Dette kredsløb har en enkelt kontrolindgang og -udgang. Hvis indgangene er A og B, kan du med kontrolindgangen kontrollere, om det er A, der overfører sin værdi til udgangen S, eller hvis det er B, der gør det. For at gøre dette behøver du kun variere værdien af ​​kontrollinjen C. For eksempel, hvis C = 0 vil det være A, og hvis C = 1 vil det være B.

Som du vil forstå, er der behov for mere, hvis der er flere input kontrolindgange til valg. Faktisk er multiplexeren en speciel type dekoder med et aktiveringssignal for hver AND-gate inkluderet og en OR-gate mellem output og AND-porte. På den måde kan det let vælges.

Med hensyn til dets applikationer kan du bruge det for en lang række ting:

  • Inputvælger til at dele en enkelt bus eller linje, når du har flere indgange.
  • Serializer, så den tager værdien af ​​hver af sine input i rækkefølge.
  • Til multiplekset transmission ved hjælp af de samme forbindelseslinjer til forskellige data fra forskellige enheder. Forestil dig for eksempel, at du vil bruge den samme datapind på en mikrocontroller til at forbinde flere enhedsudgange, men at den kun kan sende information en ad gangen ...
  • Udfør logiske funktioner osv.

Multiplexer typer

Afhængigt af den måde, hvorpå transmission divisionen udføres, er der forskellige typer multiplexere eller multiplexing:

  • Efter frekvensdeling
  • Efter tidsinddeling
  • Ved kodedeling
  • Ved opdeling af bølgelængde

Som du kan forestille dig, styres de af frekvens, af tid af et ur, af binær kode og af bølgelængde. Men her er jeg kun interesseret i det konventionelle ...

Ud over typerne, som med demultiplexeren, kan du finde den med mere eller mindre kanaler 2, 4, 8, 16 osv., Afhængigt af hvad du har brug for til dine DIY-projekter.

Forskelle med en demultiplexer

demultiplexer

I digital elektronik er der demultiplexer, et kombinationskredsløb, der er antagonisten til multiplexeren. I dette tilfælde vil der kun være et informationsinput, men det kan overføres via dets forskellige udgange. Med andre ord vil styresignalerne i dette tilfælde beslutte, hvilket output indgangsdataene overføres.

Si du forbinder en demultiplexer til output fra en multiplexer, kan du have et meget nyttigt system til at lære, hvordan begge enheder fungerer.

Hvor kan det købes?

multiplexer demultiplexer

Disse enheder implementeres normalt i dip chips meget simpelt. Du kan finde dem i en lang række mærker og med et antal input eller output i tilfælde af at være en demultiplexer. Derudover findes de let i forskellige specialiserede medier eller onlinebutikker. Hvis du er interesseret i at købe en til en god pris, kan disse være gode eksempler til at starte med dine projekter:

Jeg råder dig til at læse databladene fra deres producenter for at få en klar idé om deres pinout, da de kan variere afhængigt af producenten eller typen, du har købt.

cd74hc4067

Derudover er der, som du kan se, også meget gode moduler, der giver dig mulighed for at have begge enheder i en. Det er tilfældet med kendt CD74HC4067, et lille modul med TTL-teknologi, der kan hjælpe dig med at arbejde med sine 16 banaler på en tovejs måde ved at have MUX / DEMUX. Det vil sige, du kan bruge det som en slags smart switch.

Således kan din Arduino læse og skrive op til 16 forskellige enheder med kun 5 ben, hvoraf 4 bruges til kontrol og en ekstra til at indsamle det signal, der er beregnet til at blive læst eller skrevet i henhold til den valgte kanal.

Det gode ved denne chip er, at fungerer med både digitale og analoge signaler, så det er kompatibelt med mange sensorer, der fungerer på analoge og andre digitale chips samt et væld af forskellige elektroniske elementer. Det giver stor alsidighed. Derfor er de også kendt som I / O-udvidere eller input- og outputforstærkere ...

Du kan endda bruge det til kommunikation gennem den serielle port, I2C-bussen eller SPI, som vi allerede har talt om ved andre lejligheder.

Før du arbejder sammen med ham, skal du selvfølgelig sørge for det møde spændinger og strømme der indrømmer dette kredsløb for ikke at beskadige det. For eksempel kan det i dette tilfælde give op til 20 mA samt en spænding på 2 til 6v. Men hvis du vil arbejde med højere strømme du kunne bruge et relæ eller gennem en transistor.

Integration med Arduino

Arduino med Bluetooth

En måde har flere indgange på dit Arduino-kort eller flere output, er at bruge disse multiplexere og demultiplexere. Med dem undgår du at skulle købe et bord med højere priser, der har flere ben, eller at skulle bruge andre tricks til at forbinde alt, hvad du har brug for.

For eksempel kan du bruge en MUX og DEMUX modul at kunne have begge dele i et enkelt element og derefter integrere det på en enkel måde i dit projekt med Arduino. Med CD74HC4067 kan du tilslutte den meget let, så du skal følge disse regler:

  • Vcc af MUX / DEMUX-chippen, du skal forbinde den til Vcc af Arduino eller 5V.
  • GND, jorden, du skal forbinde den til Arduino's GND.
  • Stifterne mærket S0, S1, S2, S3 er dem, der styrer den aktive kanal med fire Arduino digitale I / O, såsom D8, D9, D10 og D11.
  • EN muliggør også, så det fungerer som en multiplexer, du kan forbinde det til GND af Arduino.
  • Og SIG er det udgangssignal, der bestemmer den valgte kanal. Det kan tilsluttes Arduino eller til en hvilken som helst enhed, der skal læse output. I dette tilfælde har jeg tilsluttet det til A0 for at få værdierne fra selve Arduino.
  • I den anden ende af modulet har du indgangene i dette tilfælde, som er C0-C10, som du kan oprette forbindelse til dine enheder.

Når du er tilsluttet, kan Arduino-koden være enkel. Det Arduino IDE-skitse som multiplexer Det kan være følgende (denne kode slukkes kun og hhv. På deres kanaler, men du kan ændre den for at lave det ønskede projekt):

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

Hvis du vil bruge det som DEMUX, skal du kun overveje, at C0-C10 ville være udgangene, og SIG ville være input. Hvis du vil Brug det som en demultiplexer, ville koden ændre sig således:

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

Husk at du kan få mere information ved hjælp af vores gratis Arduino programmeringskursus.


En kommentar, lad din

Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.

  1.   Xavier Ortiz sagde han

    Hej, jeg laver et projekt, som jeg gør for at bruge 74hc4067 til indgange af 16 infrarøde forhindringssensorer, og at hver sensor tænder for mig på forskellige output. Nå, hvis jeg kunne gøre det med arduino mega, men jeg har brug for 50 infrarøde sensorer, og at hver enkelt tænder en udgang, det vil sige 50 udgange, tænker jeg på at bruge flere 744067 til sensorindgange og tlc5940 til udgange, men i hvad er programmeringskoden er jeg lidt vild, tak på forhånd for din hjælp.