Un multipleksor on kombineeritud vooluahel, millel on mitu sisendit ja üks andmete väljund. Selle abil on võimalik valida ainult ühe selle sissepääsu kanal, et suunata see väljapääsule. See tähendab, et saate valida, millisest sisendist võtta sisendis olevad andmed või bitt, ja ignoreerida ülejäänud sisendeid. See on elektroonikas väga levinud, kui ühe liini või siini jagamiseks on vaja mitut ühendust.
See tähendab, et multiplekserit juhtides saate valige alati sobiv sisend. Mis teeb võimalikuks, et hoolimata sellest, et teil on ainult üks ühendus, saate töötada korraga mitme sisendseadmega, ilma et need üksteist segaksid. Samuti peaksite teadma, et paljudes projektides kasutatakse demultiplekserit tavaliselt koos multiplekseriga ...
Mis on multiplekser?
Need kombineeritud teenused helistasid multiplekserid need pole tavaliselt keerukad. Need koosnevad mõnest loogikaväravast sõltuvalt nende sisestatud andmete arvust ja juhtimine võib keerukust suurendada. Need sisaldavad tavaliselt 2n sisendid ja üks väljund, samuti juhtimisliinid. Ja nende arvu suurendamiseks võite kasutada mitut neist koos.
Sellest võib aru saada kui valija. Näiteks kujutage ette, et teil on väga lihtne kahe sisendiga, kõige lihtsam, mida saab ehitada. Sellel vooluringil on üks juhtimissisend ja -väljund. Kui sisenditeks on A ja B, saate juhtimissisendiga juhtida, kas A edastab oma väärtuse väljundile S või kas see on B, kes seda teeb. Selleks peate muutma ainult juhtjoone C väärtust. Näiteks kui C = 0 on A ja kui C = 1 on B.
Nagu te aru saate, on rohkem sisendeid vaja, kui neid on rohkem juhtimissisendid valikuks. Tegelikult on multiplekser eritüüpi dekooder, millel on lubatud signaal iga kaasatud AND-värava jaoks ja OR-värav väljundi ja AND-väravate vahel. Nii saab seda hõlpsasti valida.
Mis puutub selle rakendustesse, siis saate seda kasutada paljude asjade jaoks:
- Sisendivalija ühe siini või liini jagamiseks, kui teil on mitu sisendit.
- Serialiseerija nii, et see võtaks iga sisendi väärtuse järjekorras.
- Multipleksitud edastamiseks, kasutades erinevaid ühendusi erinevatest seadmetest samade ühendusliinide abil. Kujutage näiteks ette, et soovite mitme mikroväljuri ühendamiseks kasutada ühte mikrokontrolleri andmesidet, kuid see võib teavet saata ainult ükshaaval ...
- Loogiliste funktsioonide täitmine jne.
Multiplekseri tüübid
Sõltuvalt ülekande jaotamise viisist on erinevat tüüpi multiplekserid või multiplekserid:
- Sagedusjaotuse järgi
- Ajajaotuse järgi
- Koodijaotuse järgi
- Jagamise teel lainepikkus
Nagu võite ette kujutada, kontrollib neid sagedus, aja kell, binaarkood ja lainepikkus. Kuid siin huvitavad mind ainult tavapärased ...
Lisaks tüüpidele, nagu ka demultiplekseri puhul, leiate selle ka enam-vähem kanaleid 2, 4, 8, 16 jne, sõltuvalt sellest, mida vajate oma isetegemise projektide jaoks.
Erinevused demultiplekseriga
Digitaalelektroonikas on demultiplekser, kombineeritud vooluahel, mis on multiplekseri antagonist. Sel juhul on ainult üks infosisend, kuid seda saab edastada selle erinevate väljundite kaudu. Teisisõnu, sel juhul otsustavad juhtsignaalid, millisesse väljundisse sisendandmed edastatakse.
Si ühendate multiplekseri väljundiga demultiplekseri, teil võib olla mõlema seadme töö õppimiseks väga kasulik süsteem.
Kust osta?
Need seadmed on tavaliselt rakendatud kasta kiipe väga lihtne. Neid võib leida paljudest erinevatest kaubamärkidest ja paljude sisendite või väljunditega, kui olete demultiplekser. Lisaks leidub neid hõlpsasti erinevates spetsialiseeritud meediumides või veebipoodides. Kui olete huvitatud ühe ostmisest hea hinnaga, võivad need olla head näited oma projektide alustamiseks:
- IT 8-kanaliline multiplekser
- 8-kanaliline multiplekser perel
- Tooteid ei leitud.
- CD74HC4067 16-kanaliline multiplekser / demultiplekser
Soovitan teil lugeda teabelehed tootjatel saada selge ettekujutus nende kohta pinout, kuna need võivad erineda sõltuvalt teie ostetud tootjast või tüübist.
cd74hc4067
Lisaks, nagu näete, on olemas ka väga häid mooduleid, mis võimaldavad teil mõlemad seadmed ühes. See on juhtum tuntud CD74HC4067, väike TTL-tehnoloogiaga moodul, mis aitab teil oma 16 banaaliga kahesuunaliselt töötada, omades MUX / DEMUX-i. See tähendab, et saate seda kasutada omamoodi nutika lülitina.
Seega suudab teie Arduino lugeda ja kirjutada kuni 16 erinevat seadet ainult 5 tihvtiga, neist 4 kasutati juhtimiseks ja veel üks signaali kogumiseks, mis on ette nähtud valitud kanali järgi lugemiseks või kirjutamiseks.
Selle kiibi hea külg on see töötab nii digitaalsete kui ka analoogsignaalidega, nii et see ühildub paljude anduritega, mis töötavad analoog- ja muudel digitaalsetel kiipidel, samuti paljude erinevate elektrooniliste elementidega. See annab suure mitmekülgsuse. Sellepärast on nad tuntud ka kui I / O-laiendajad või sisend- ja väljundvõimendid ...
Sa võid seda isegi kasutada side jadapordi kaudu, I2C siini või SPI, millest oleme juba teistel kordadel rääkinud.
Enne temaga töötamist peate muidugi selles veenduma vastavad pingetele ja vooludele mis tunnistab seda vooluringi, et seda mitte kahjustada. Näiteks võib see sel juhul pakkuda kuni 20 mA pinget 2 kuni 6 v. Kui aga soovite töötada suurema vooluga võiks kasutada relee või läbi transistori.
Integreerimine Arduinoga
Vorm teie Arduino plaadil on rohkem sisendeid või rohkem väljundeid, on kasutada neid multipleksereid ja demultipleksereid. Nendega väldite vajadust osta kallima hinnaga plaati, millel on rohkem tihvte, või peate kasutama muid trikke, et kõik vajalik ühendada.
Näiteks võite kasutada a MUX ja DEMUX moodul et mõlemad saaksid olla ühes elemendis, ja seejärel integreerida see oma projektiga Arduinoga lihtsal viisil. CD74HC4067 abil saate selle väga lihtsalt ühendada, seega peate järgima neid reegleid:
- MUX / DEMUX kiibi Vcc peate selle ühendama Arduino või 5V Vcc-ga.
- GND, maa, peate selle ühendama Arduino GND-ga.
- Sõrmed, mis on tähistatud S0, S1, S2, S3, reguleerivad aktiivset kanalit nelja Arduino digitaalse sisend- / väljundühendusega, näiteks D8, D9, D10 ja D11.
- EN lubab ka seda, nii et see töötab multiplekserina, saate selle ühendada Arduino GND-ga.
- Ja SIG on väljundsignaal, mis määrab valitud kanali. Seda saab ühendada Arduinoga või mis tahes seadmega, mis peab väljundit lugema. Sel juhul olen selle ühendanud A0-ga, et saada väärtused Arduinost endast.
- Mooduli teises otsas on sel juhul sisendid, milleks on C0-C10, mille saate oma seadmetega ühendada.
Pärast ühenduse loomist võib Arduino kood olla lihtne. The Arduino IDE visand multiplekserina See võib olla järgmine (see kood lülitatakse vastavalt välja ja nende kanalitel, kuid saate seda muuta, et teha soovitud 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); } }
Kui soovite seda kasutada DEMUX-iga, peaksite arvestama ainult sellega, et C0-C10 oleks väljundid ja SIG oleks sisend. Juhul kui soovite kasutage seda demultiplekserina, kood muutuks järgmiselt:
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); }
Pidage meeles, et lisateavet saate meie abiga tasuta Arduino programmeerimiskursus.
Tere, teen projekti, mida ma teen 74hc4067 16 infrapunase takistusanduri sisendiks ja et iga andur lülitab mind erinevale väljundile. Noh, kui ma saaksin seda teha arduino mega abil, kuid mul on vaja kasutada 50 infrapunaandurit ja et igaüks lülitaks välja väljundi, st 50 väljundit, mõtlen ma kasutada andurite sisendite jaoks mitut 744067 ja väljundite jaoks tlc5940, aga milles on programmeerimiskood, olen natuke eksinud, tänan teid juba ette abi eest.