Un multiplekser is 'n kombinasiekring wat verskeie insette en 'n enkele data-uitvoer het. Hiermee is dit moontlik om die gang van slegs een van sy ingange te kies om dit na sy uitgang te kanaliseer. Dit wil sê, u kan kies uit watter invoer u die data of bietjie by die invoer moet neem en die res van die insette ignoreer. Dit is baie algemeen in elektronika wanneer verskeie verbindings 'n enkele lyn of bus moet deel.
Dit wil sê deur die multiplexer te beheer wat u kan kies te alle tye die toepaslike invoer. Wat dit moontlik maak dat u, hoewel u net een verbinding het, gelyktydig met verskeie toevoertoestelle kan werk sonder dat dit met mekaar inmeng. U moet ook weet dat 'n demultiplexer gewoonlik in baie projekte saam met die multiplexer gebruik word ...
Index
Wat is 'n multiplexer?
Hierdie kombinasie dienste genoem multiplexers hulle is gewoonlik nie kompleks nie. Dit bestaan uit 'n paar logiese hekke, afhangende van hul hoeveelheid data-insette en beheer kan die kompleksiteit verhoog. Dit sluit gewoonlik in 2n insette en 'n enkele uitset, sowel as beheerlyne. En u kan verskeie daarvan in kombinasie gebruik om die aantal beskikbare kaartjies te vergroot.
Dit kan verstaan word as 'n keurder. Stel jou voor dat jy 'n baie eenvoudige een het met twee insette, die eenvoudigste wat gebou kan word. Daardie stroombaan sal 'n enkele in- en uitset hê. As die insette A en B is, kan u met die beheerinvoer beheer of dit A is wat die waarde daarvan aan die uitset S oordra, of B dit is. Om dit te doen, hoef u slegs die waarde van die kontrolelyn C te varieer. As C byvoorbeeld 0 is, is dit A en as C = 1 sal dit B wees.
Soos u sal verstaan, sal meer nodig wees as daar meer insette is beheer insette vir keuring. In werklikheid is die multiplexer 'n spesiale tipe dekodeerder, met 'n inskakel sein vir elke ingeslote EN-hek en 'n OF-hek tussen die uitset en die AND-hekke. Op hierdie manier kan dit maklik gekies word.
Wat die toepassings daarvan betref, kan u dit gebruik vir 'n menigte dinge:
- Invoerkieser om 'n enkele bus of lyn te deel as u verskeie insette het.
- Serialiseer sodat dit die waarde van elk van sy insette in volgorde neem.
- Vir meervoudige versending met dieselfde verbindingslyne vir verskillende data vanaf verskillende toestelle. Stel u byvoorbeeld voor dat u dieselfde datapen van 'n mikrobeheerder wil gebruik om verskeie toesteluitsette aan te sluit, maar dat dit slegs inligting een vir een kan stuur ...
- Voer logiese funksies uit, ens.
Multiplexer tipes
Afhangend van die manier waarop die transmissie-afdeling uitgevoer word, is daar verskillende soorte multiplexers of multiplexing:
- Volgens frekwensieverdeling
- Deur tydverdeling
- Deur die kodedeling
- Deur verdeling van golflengte
Soos u kan voorstel, word hulle beheer deur frekwensie, deur tyd deur 'n horlosie, deur binêre kode en deur golflengte. Maar hier stel ek net belang in die konvensionele ...
Benewens die tipes, soos by die demultiplexer, kan u dit ook vind met min of meer kanale 2, 4, 8, 16, ens., Afhangende van wat u benodig vir u selfdoenprojekte.
Verskille met 'n demultiplekser
In digitale elektronika is daar demultiplexer, 'n kombinasiekring wat die antagonis van die multiplexer is. In hierdie geval sal daar net een inligtingsinvoer wees, maar dit kan deur die verskillende uitsette oorgedra word. Met ander woorde, in hierdie geval sal die beheerseine besluit na watter uitvoer die insetdata oorgedra word.
Si jy verbind 'n demultiplexer met die uitset van 'n multiplexer, kan u 'n baie nuttige stelsel hê om te leer hoe albei toestelle werk.
Waar om te koop?
Hierdie toestelle word normaalweg geïmplementeer in dip skyfies Baie eenvoudig. U kan dit vind in 'n wye verskeidenheid handelsmerke en met 'n aantal insette of uitsette indien u 'n demultiplexer is. Daarbenewens word dit maklik in verskillende gespesialiseerde media of aanlynwinkels gevind. As u belangstel om een teen 'n goeie prys te koop, kan dit goeie voorbeelde wees om met u projekte te begin:
- IT 8-kanaals multiplexer
- 8-kanaal multiplexer perel
- Geen produkte gevind nie.
- CD74HC4067 16-kanaals multiplexer / demultiplexer
Ek raai u aan om te lees die gegewensblaaie van hul vervaardigers om 'n duidelike idee van hul produkte te kry pen uit, aangesien dit afhang van die vervaardiger of tipe wat u gekoop het.
cd74hc4067
Daarbenewens is daar, soos u kan sien, ook baie goeie modules waarmee u albei toestelle in een kan hê. Dit is die geval van bekend CD74HC4067, 'n klein module met TTL-tegnologie wat u kan help om met sy 16 banale op 'n tweerigting te werk deur MUX / DEMUX te hê. Dit wil sê, jy kan dit as 'n soort slim skakelaar gebruik.
U Arduino kan dus tot 1 lees en skryf6 verskillende toestelle met slegs 5 penne, waarvan 4 gebruik word vir beheer en 'n addisionele een om die sein te versamel wat bedoel is om volgens die gekose kanaal gelees of geskryf te word.
Die goeie ding van hierdie skyfie is dat werk met sowel digitale as analoog seine, dus is dit verenigbaar met baie sensors wat op analoog en ander digitale skyfies werk, sowel as 'n menigte verskillende elektroniese elemente. Dit gee groot veelsydigheid. Daarom staan hulle ook bekend as I / O-uitbreiders of invoer- en uitvoerversterkers ...
U kan dit selfs gebruik vir kommunikasie deur die seriële poort, die I2C-bus of die SPI, waarvan ons al by ander geleenthede gepraat het.
Voordat u met hom werk, moet u natuurlik seker maak voldoen aan die spanning en strome wat hierdie stroombaan toelaat om dit nie te beskadig nie. In hierdie geval kan dit byvoorbeeld tot 20 mA lewer, sowel as 'n spanning van 2 tot 6v. As u egter met hoër strome wil werk jy kan 'n aflos gebruik of deur 'n transistor.
Integrasie met Arduino
N vorm van het meer insette op u Arduino-bord of meer uitsette, is om hierdie multiplexers en demultiplexers te gebruik. Saam met hulle sal u vermy dat u 'n bord wat goedkoper is en meer penne het, moet koop, of dat u ander truuks moet gebruik om alles wat u benodig aan te sluit.
U kan byvoorbeeld a MUX en DEMUX module beide in een element te kan hê en dit dan op 'n eenvoudige manier in u projek met Arduino te kan integreer. Met die CD74HC4067 kan u dit baie maklik verbind, dus u moet die volgende reëls volg:
- Vcc van die MUX / DEMUX-skyfie moet u dit koppel aan Vcc van Arduino of 5V.
- GND, die grond, moet jy dit koppel aan die GND van Arduino.
- Die penne gemerk S0, S1, S2, S3 is die wat die aktiewe kanaal beheer, met vier Arduino digitale I / O, soos D8, D9, D10 en D11.
- Die EN is ook in staat, sodat dit as 'n multiplexer kan werk, en dit aan die GND van Arduino kan koppel.
- En SIG is die uitsetsein wat die gekose kanaal sal bepaal. Dit kan gekoppel word aan Arduino of aan enige toestel wat die uitvoer moet lees. In hierdie geval het ek dit aan A0 gekoppel om die waardes van die Arduino self te verkry.
- Aan die ander kant van die module sal u in hierdie geval die insette hê, naamlik C0-C10 wat u aan u toestelle kan koppel.
Nadat dit gekoppel is, kan die Arduino-kode eenvoudig wees. Die Arduino IDE-skets as multiplexer Dit kan die volgende wees (hierdie kode sal net onderskeidelik uitskakel en op hul kanale, maar u kan dit verander om die projek te maak wat u wil hê):
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); } }
As u dit as DEMUX wil gebruik, moet u slegs oorweeg dat C0-C10 die uitsette is en dat SIG die inset is. As u wil gebruik dit as 'n demultiplekser, sou die kode so verander:
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); }
Onthou dat u meer inligting kan kry met behulp van ons gratis Arduino programmeringskursus.
'N Opmerking, los joune
Hallo, ek doen 'n projek, die ding soos ek doen om die 74hc4067 te gebruik vir insette van 16 infrarooi hindernisensors, en dat elke sensor my op 'n ander uitset laat draai. Wel, as ek dit met die arduino mega kan doen, maar ek moet 50 infrarooi sensors gebruik en dat elkeen 'n uitset aanskakel, dit wil sê 50 uitsette, dink ek daaraan om 744067 te gebruik vir sensor-insette en die tlc5940 vir uitsette, maar wat is die programmeringskode, ek is 'n bietjie verdwaal, by voorbaat dankie vir u hulp.