Un multipleksorius yra kombinuota grandinė, turinti kelis įėjimus ir vieną duomenų išvestį. Tokiu būdu galima pasirinkti tik vieno iš jo įėjimų praėjimą, nukreipiantį jį į jo išėjimą. Tai yra, jūs galite pasirinkti, iš kurios įvesties imti duomenis arba bitą, kuris yra įvestyje, ir nepaisyti likusių įėjimų. Tai labai būdinga elektronikoje, kai kelioms jungtims reikia dalytis viena linija ar magistrale.
Tai yra, valdydami multiplekserį galite visada pasirinkite reikiamą įvestį. Tai leidžia, kad nepaisant to, kad turite tik vieną ryšį, galite dirbti su keliais įvesties įrenginiais tuo pačiu metu, netrukdydami vieni kitiems. Be to, turėtumėte žinoti, kad demultiplekseris dažniausiai naudojamas kartu su multiplekseriu daugelyje projektų ...
Kas yra multiplekseris?
Šios kombinuotos tarnybos paskambino multipleksoriai jie paprastai nėra sudėtingi. Jie susideda iš kelių loginių vartų, atsižvelgiant į jų įvestų duomenų skaičių, o valdymas gali padidinti sudėtingumą. Paprastai jie apima 2n įėjimai ir viena išvestis, taip pat valdymo linijos. Norėdami padidinti galimų bilietų skaičių, galite naudoti kelis iš jų kartu.
Tai galima suprasti kaip selektorius. Pavyzdžiui, įsivaizduokite, kad turite labai paprastą, su dviem įvestimis, paprasčiausias, kurį galima sukurti. Ši grandinė turės vieną valdymo įėjimą ir išėjimą. Jei įėjimai yra A ir B, su valdymo įėjimu galima valdyti, ar būtent A perduoda savo vertę išėjimui S, ar tai daro B. Norėdami tai padaryti, tiesiog turite pakeisti valdymo linijos C vertę. Pavyzdžiui, jei C = 0, tai bus A, o jei C = 1, tai bus B.
Kaip suprasite, jei bus daugiau įvesties, jų reikės daugiau valdymo įėjimai atrankai. Tiesą sakant, multiplekseris yra specialus dekoderio tipas, turintis įjungimo signalą kiekvienam įtrauktam AND vartui ir ARBA vartus tarp išėjimo ir AND vartų. Tokiu būdu jį galima lengvai pasirinkti.
Kalbant apie jo programas, galite jį naudoti daugybei dalykų:
- Įvesties parinkiklis, jei norite naudoti vieną magistralę ar liniją, kai turite kelis įėjimus.
- Serializatorius, kad jis paimtų kiekvieno jo įvesties vertę.
- Daugkartiniam perdavimui naudojant tas pačias ryšio linijas įvairiems duomenims iš įvairių įrenginių. Pvz., Įsivaizduokite, kad norite naudoti tą patį mikrovaldiklio duomenų kaištį, kad sujungtumėte kelis įrenginio išėjimus, bet kad jis gali siųsti informaciją tik po vieną ...
- Atlikite logines funkcijas ir kt.
Multiplekserio tipai
Priklausomai nuo perdavimo pasidalijimo būdo, yra įvairių tipų tankintuvai arba tankintuvai:
- Pagal dažnio padalijimą
- Pagal laiko padalijimą
- Pagal kodo padalijimą
- Dalijant bangos ilgis
Kaip galite įsivaizduoti, juos valdo dažnis, laikas - laikrodis, dvejetainis kodas ir bangos ilgis. Bet čia mane domina tik įprasti ...
Be tipų, kaip ir su demultiplexer, galite rasti su daugiau ar mažiau kanalų 2, 4, 8, 16 ir kt., Atsižvelgiant į tai, ko jums reikia jūsų „pasidaryk pats“ projektams.
Skirtumai su demultiplekseriu
Skaitmeninėje elektronikoje yra demultiplekseris, kombinuota grandinė, kuri yra multiplekserio antagonistas. Šiuo atveju bus tik viena informacijos įvestis, tačiau ją galima perduoti per įvairius išėjimus. Kitaip tariant, šiuo atveju valdymo signalai nuspręs, į kurią išvestį perduodami įvesties duomenys.
Si prie multiplekserio išvesties prijungiate demultiplekserį, galite turėti labai naudingą sistemą, kad sužinotumėte, kaip veikia abu įrenginiai.
Kur nusipirkti?
Šie įrenginiai paprastai įdiegiami panardinti traškučius labai paprasta. Jų galite rasti įvairių prekių ženklų ir su daugybe įėjimų ar išėjimų, jei esate demultiplekseris. Be to, jie lengvai randami įvairiose specializuotose žiniasklaidos priemonėse ar internetinėse parduotuvėse. Jei norite įsigyti gerą kainą, tai gali būti geri pavyzdžiai pradedant savo projektus:
- IT 8 kanalų multiplekseris
- 8 kanalų multiplekserio perelis
- Nerasta jokių produktų.
- CD74HC4067 16 kanalų multiplekseris / demultiplekseris
Patariu perskaityti duomenų lapus iš savo gamintojų, kad gautų aiškią jų idėją pinout, nes jie gali skirtis priklausomai nuo įsigyto gamintojo ar tipo.
cd74hc4067
Be to, kaip matote, yra ir labai gerų modulių, leidžiančių turėti abu įrenginius viename. Tai yra žinomas CD74HC4067, nedidelis modulis su TTL technologija, kuris gali padėti jums dirbti su 16 banalų dvikrypčiu būdu, turėdamas MUX / DEMUX. Tai yra, galite jį naudoti kaip tam tikrą išmanųjį jungiklį.
Taigi jūsų „Arduino“ gali skaityti ir rašyti iki 16 skirtingi įrenginiai turint tik 5 kaiščius, 4 iš jų naudojami valdymui, o papildomai - signalui, kurį ketinama skaityti ar rašyti pagal pasirinktą kanalą, rinkti.
Geras dalykas šiame luste yra tas veikia tiek skaitmeniniais, tiek analoginiais signalais, todėl suderinamas su daugeliu jutiklių, veikiančių analoginėse ir kitose skaitmeninėse mikroschemose, taip pat su daugybe skirtingų elektroninių elementų. Tai suteikia didelį universalumą. Štai kodėl jie taip pat žinomi kaip įvesties / išvesties plėtikliai arba įvesties ir išvesties stiprintuvai ...
Jūs netgi galėtumėte jį naudoti ryšius per nuoseklųjį prievadą, I2C magistralę arba SPI, apie kuriuos jau kalbėjome kitomis progomis.
Žinoma, prieš pradėdami dirbti su juo, turite tai įsitikinti atitiktų įtampas ir sroves kad ši grandinė pripažįsta, kad jos nepažeistų. Pavyzdžiui, šiuo atveju jis gali tiekti iki 20 mA, taip pat nuo 2 iki 6v įtampą. Tačiau jei norite dirbti su didesnėmis srovėmis galėtum naudoti relę arba per tranzistorių.
Integracija su „Arduino“
Vienas iš būdų turėkite daugiau įėjimų savo „Arduino“ plokštėje arba daugiau išėjimų, yra naudoti šiuos multiplekserius ir demultiplekserius. Su jais išvengsite pirkimo brangesnės lentos, turinčios daugiau kaiščių, ar kitų gudrybių, kad sujungtumėte viską, ko jums reikia.
Pavyzdžiui, galite naudoti a MUX ir DEMUX moduliai kad galėtumėte turėti abu elementus viename elemente, tada paprasčiau jį integruoti į savo projektą su „Arduino“. Su CD74HC4067 galite jį labai lengvai prijungti, todėl turite laikytis šių taisyklių:
- „MUX / DEMUX“ lusto „Vcc“ turite prijungti jį prie „Arduino“ arba „5V“ Vcc.
- GND, žemė, turite prijungti jį prie „Arduino“ GND.
- Kaiščiai pažymėti S0, S1, S2, S3 yra tie, kurie valdo aktyvų kanalą, turėdami keturis „Arduino“ skaitmeninius įvestis / išvestis, tokius kaip D8, D9, D10 ir D11.
- EN taip pat įgalina, kad veiktų kaip multiplekseris, galite jį prijungti prie „Arduino“ GND.
- O SIG yra išvesties signalas, kuris nustatys pasirinktą kanalą. Jį galima prijungti prie „Arduino“ arba prie bet kurio įrenginio, kuriam reikia skaityti išvestį. Šiuo atveju aš jį prijungiau prie A0, kad gautų reikšmes iš paties „Arduino“.
- Kitame modulio gale šiuo atveju turėsite įvestis, kurios yra C0-C10, kurias galite prijungti prie savo įrenginių.
Prijungus „Arduino“ kodas gali būti paprastas. The „Arduino IDE“ eskizas kaip multiplekseris Tai gali būti toks (šis kodas bus atitinkamai išjungtas ir atitinkamai jų kanaluose, tačiau jį galite modifikuoti, kad padarytumėte norimą 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); } }
Jei norite jį naudoti kaip DEMUX, turėtumėte atsižvelgti tik į tai, kad C0-C10 būtų išvestys, o SIG būtų įvestis. Jei norite naudoti jį kaip demultiplexer, kodas pasikeistų taip:
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); }
Atminkite, kad daugiau informacijos galite gauti naudodamiesi mūsų paslaugomis nemokamas „Arduino“ programavimo kursas.
Sveiki, aš darau projektą, kurį darau naudodamas 74hc4067 16 infraraudonųjų spindulių kliūčių jutiklių įėjimams ir kad kiekvienas jutiklis įjungia skirtingą išvestį. Na, jei aš galėčiau tai padaryti su „arduino“ mega, bet man reikia naudoti 50 infraraudonųjų spindulių jutiklių ir kad kiekvienas iš jų įjungtų išvestį, ty 50 išėjimų, aš galvoju naudoti kelis 744067 jutiklių įėjimams ir tlc5940 išėjimams, bet kokiame programavimo kode esu šiek tiek pasimetęs, ačiū iš anksto už jūsų pagalbą.