Մուլտիպլեքսեր. Ամեն ինչ, որ դուք պետք է իմանաք

մուլտիպլեքսոր չիպ

Un մուլտիպլեքսոր համակցված միացում է, որն ունի մի քանի մուտք և տվյալների մեկ ելք: Դրանով հնարավոր է ընտրել դրա մուտքերից միայն մեկի անցուղին ՝ այն դեպի իր ելքը ուղղելու համար: Այսինքն, դուք կարող եք ընտրել, թե որ մուտքից վերցնել տվյալը կամ բիտը, որը գտնվում է մուտքի մոտ և անտեսել մնացած մուտքերը: Սա շատ տարածված է էլեկտրոնիկայում, երբ անհրաժեշտ է մի քանի միացում մի գծով կամ ավտոբուսով կիսել:

Այսինքն ՝ վերահսկելով մուլտիպլեքսերը, որը կարող եք ցանկացած պահի ընտրեք համապատասխան մուտքագրումը, Ինչն է հնարավոր դարձնում, որ չնայած միայն մեկ կապ ունենալուն, միևնույն ժամանակ կարող եք աշխատել մի քանի մուտքային սարքերի հետ, առանց դրանք միմյանց միջամտելու: Բացի այդ, դուք պետք է իմանաք, որ ապամուլտիպլեքսերը սովորաբար օգտագործվում է մուլտիպլեքսերի հետ համատեղ շատ նախագծերում ...

Ի՞նչ է մուլտիպլեքսերը:

մուլտիպլեքսոր

Այս համակցական ծառայությունները կոչվում են մուլտիպլեքսատորներ դրանք սովորաբար բարդ չեն: Դրանք կազմված են մի քանի տրամաբանական դարպասներից, կախված տվյալների մուտքագրման քանակից, և վերահսկողությունը կարող է մեծացնել բարդությունը: Դրանք սովորաբար ներառում են 2n մուտքեր և մեկ ելք, ինչպես նաև կառավարման գծեր: Եվ դրանցից մի քանիսը կարող եք օգտագործել միասին ՝ ավելացնելով մատչելի տոմսերի այդ քանակը:

Դա կարելի է հասկանալ այնպես ընտրող: Օրինակ, պատկերացրեք, որ դուք ունեք շատ պարզ մեկը ՝ երկու մուտքագրմամբ, ամենապարզը, որը կարելի է կառուցել: Այդ միացումն ունենալու է մեկ հսկիչ մուտք և ելք: Եթե ​​մուտքերը A և B են, հսկիչ մուտքով հնարավոր է վերահսկել, թե արդյո՞ք A- ն է, որ իր արժեքը փոխանցում է S ելքին, թե՞ դա անում է B- ն: Դա անելու համար անհրաժեշտ է միայն փոխել հսկիչ տողի արժեքը C: Օրինակ, եթե C = 0 կլինի A, և եթե C = 1 կլինի B:

Ինչպես կհասկանաք, եթե ներդրումներն ավելի շատ լինեն, ավելին կպահանջվի հսկիչ մուտքեր ընտրության համար: Իրականում, մուլտիպլեքսատորը հատուկ տիպի ապակոդավորիչ է, որի յուրաքանչյուր ներառված AND դարպասի համար կա ազդանշանային ազդանշան և ելքի և AND դարպասների միջև OR դարպաս: Այդ կերպ այն կարելի է հեշտությամբ ընտրել:

Ինչ վերաբերում է դրա կիրառություններին, ապա այն կարող եք օգտագործել բազում իրերի համար:

  • Մուտքային ընտրիչ `մեկ ավտոբուսով կամ գծով բաժանելու համար, երբ բազմաթիվ մուտք ունեք:
  • Serializer այնպես, որ այն կարգի վերցնի իր յուրաքանչյուր մուտքի արժեքը:
  • Բազմամշակված փոխանցման համար `միևնույն կապի գծերը օգտագործելով բազմազան սարքերի տարբեր տվյալների համար: Օրինակ, պատկերացրեք, որ դուք ցանկանում եք օգտագործել միկրոկոնտրոլորի տվյալների նույն քորոցը սարքի մի քանի ելքեր միացնելու համար, բայց որ այն կարող է միանգամից տեղեկատվություն ուղարկել միայն մեկ անգամ ...
  • Կատարել տրամաբանական գործառույթներ և այլն:

Մուլտիպլեքսորների տեսակները

Կախված փոխանցման տուփի բաժանման եղանակից, կան տարբեր տեսակներ մուլտիպլեքսեր կամ մուլտիպլեքսավորում.

Ինչպես պատկերացնում եք, դրանք վերահսկվում են հաճախականությամբ, ժամանակով ժամացույցով, երկուական կոդով և ալիքի երկարությամբ: Բայց այստեղ ինձ միայն պայմանական ...

Տեսակներից բացի, ինչպես demultiplexer- ի դեպքում, այն կարող եք գտնել նաև դրանով քիչ թե շատ ալիքներ 2, 4, 8, 16 և այլն ՝ կախված նրանից, թե ինչ է անհրաժեշտ ձեր DIY նախագծերի համար:

Տարբերություններ ապամուլտիպլեքսերի հետ

ապամուլտիպլեքսեր

Թվային էլեկտրոնիկայում կա ապամուլտիպլեքսեր, համակցված միացում, որը մուլտիպլեքսերի հակառակորդն է: Այս դեպքում կլինի միայն մեկ տեղեկատվության մուտք, բայց այն կարող է փոխանցվել իր տարբեր ելքերի միջոցով: Այլ կերպ ասած, այս դեպքում կառավարման ազդանշանները կորոշեն, թե որ ելքին են փոխանցվում մուտքային տվյալները:

Si դուք միացնում եք ապամուլտիպլեքսատորին մուլտիպլեքսերի ելքին, Դուք կարող եք ունենալ շատ օգտակար համակարգ `սովորելու համար, թե ինչպես են աշխատում երկու սարքերը:

Որտեղ գնել?

մուլտիպլեքսեր demultiplexer

Այս սարքերը սովորաբար ներդրվում են ներսում ընկղմել չիպսեր Շատ պարզ. Դրանք կարող եք գտնել ապրանքանիշերի բազմազանության մեջ և ապամուլտիպլեքսատոր լինելու դեպքում մի շարք մուտքերով կամ ելքերով: Բացի այդ, դրանք հեշտությամբ կարելի է գտնել տարբեր մասնագիտացված լրատվամիջոցներում կամ առցանց խանութներում: Եթե ​​դուք շահագրգռված եք գնել այն լավ գնով, դրանք կարող են լավ օրինակներ լինել ձեր նախագծերից սկսելու համար.

Խորհուրդ եմ տալիս կարդալ տվյալների շտեմարանները իրենց արտադրողներից `իրենց մասին հստակ պատկերացում կազմելու համար pinout, քանի որ դրանք կարող են տարբեր լինել ՝ կախված արտադրողի կամ ձեր գնած տեսակից:

cd74hc4067

Բացի այդ, ինչպես տեսնում եք, կան նաև շատ լավ մոդուլներ, որոնք թույլ են տալիս ունենալ երկու սարքերը մեկում: Դա դեպքն է հայտնի CD74HC4067, TTL տեխնոլոգիայով մի փոքր մոդուլ, որը կարող է օգնել աշխատել իր 16 բազալներով երկկողմանի եղանակով ՝ ունենալով MUX / DEMUX: Այսինքն, այն կարող եք օգտագործել որպես մի տեսակ խելացի անջատիչ:

Այսպիսով, ձեր Arduino– ն կարող է կարդալ և գրել մինչև 16 տարբեր սարքեր ընդամենը 5 քորոցով, որոնցից 4-ը օգտագործվում են կառավարման համար և մեկ այլ `ազդանշանը հավաքելու համար, որը նախատեսվում է կարդալ կամ գրել ըստ ընտրված ալիքի:

Այս չիպի լավն այն է, որ աշխատում է ինչպես թվային, այնպես էլ անալոգային ազդանշաններով, այնպես որ այն համատեղելի է բազմաթիվ սենսորների հետ, որոնք աշխատում են անալոգային և այլ թվային չիպերի, ինչպես նաև տարբեր էլեկտրոնային տարրերի բազմության վրա: Այն տալիս է մեծ բազմակողմանիություն: Այդ պատճառով դրանք հայտնի են նաև որպես I / O ընդարձակողներ կամ մուտքային և ելքային ուժեղացուցիչներ ...

Դուք նույնիսկ կարող էիք այն օգտագործել դրա համար հաղորդակցությունները սերիական նավահանգստի միջոցով, I2C ավտոբուսը կամ SPI- ն, որի մասին մենք արդեն խոսել ենք այլ առիթներով:

Իհարկե, նրա հետ աշխատելուց առաջ պետք է համոզվեք, որ դա անում եք բավարարում են լարումները և հոսանքները որ ընդունում է այս շղթան ՝ այն չվնասելու համար: Օրինակ, այս դեպքում այն ​​կարող է ապահովել մինչև 20 մԱ, ինչպես նաև 2-ից 6 վ լարում: Այնուամենայնիվ, եթե ցանկանում եք աշխատել ավելի բարձր հոսանքների հետ կարող էիք օգտագործել ռելե կամ տրանզիստորի միջոցով:

Ինտեգրում Arduino- ի հետ

Arduino Bluetooth- ով

Մի ձև ավելի շատ մուտք ունենաք ձեր Arduino տախտակի վրա կամ ավելի շատ արդյունքներ, այս մուլտիպլեքսերներից և ապամուլտիպլեքսորներից օգտվելն է: Դրանց միջոցով դուք կխուսափեք ավելի բարձր գներով տախտակ գնել, որոնք ունեն ավելի շատ քորոցներ, կամ ստիպված կլինեն օգտագործել այլ հնարքներ `անհրաժեշտ ամեն ինչ միացնելու համար:

Օրինակ, կարող եք օգտագործել ա MUX և DEMUX մոդուլ որպեսզի կարողանաք ունենալ և՛ մեկ տարր, և այնուհետև այն հեշտությամբ ինտեգրել ձեր նախագծին Arduino– ի հետ: CD74HC4067- ի միջոցով դուք կարող եք միացնել այն շատ հեշտությամբ, ուստի պետք է հետևեք այս կանոններին.

  • MUX / DEMUX չիպի Vcc- ն այն պետք է միացնեք Arduino կամ 5V Vcc- ին:
  • GND, գետնին, դուք պետք է այն միացնեք Arduino- ի GND- ին:
  • S0, S1, S2, S3 նշաններով քորոցները ակտիվ ալիքը վերահսկողներն են, չորս Arduino թվային I / O- ով, ինչպիսիք են D8, D9, D10 և D11:
  • EN- ը նաև հնարավորություն է տալիս, որպեսզի այն աշխատի որպես մուլտիպլեքսատոր, որը կարող եք միացնել այն Arduino- ի GND- ին:
  • Իսկ SIG- ը ելքային ազդանշանն է, որը որոշելու է ընտրված ալիքը: Այն կարող է միացված լինել Arduino- ին կամ ցանկացած սարքի, որը պետք է կարդա արդյունքը: Այս դեպքում ես այն միացրել եմ A0- ին `արժեքները ստանալու հենց Arduino- ից:
  • Մոդուլի մյուս վերջում այս դեպքում կունենաք մուտքագրումներ, որոնք C0-C10 են, որոնք կարող եք միացնել ձեր սարքերին:

Միացնելուց հետո Arduino կոդը կարող է պարզ լինել: Ի Arduino IDE ուրվագիծը ՝ որպես մուլտիպլեքսեր Դա կարող է լինել հետևյալը (այս ծածկագիրը համապատասխանաբար կջնջվի և կմիացվի դրանց ալիքին, բայց կարող եք փոփոխել այն ՝ ձեր ուզած նախագիծը կատարելու համար).

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

Եթե ​​ուզում եք օգտագործել այն որպես DEMUX, ապա պետք է հաշվի առնել միայն, որ C0-C10- ը կլինի ելքերը, իսկ SIG- ը `մուտքը: Youանկության դեպքում օգտագործել այն որպես ապամուլտիպլեքսատոր, կոդը կփոխվեր այսպես.

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

Հիշեք, որ կարող եք ավելի շատ տեղեկություններ ստանալ մեր օգնությամբ Arduino ծրագրավորման անվճար դասընթաց.


Հոդվածի բովանդակությունը հավատարիմ է մեր սկզբունքներին խմբագրական էթիկա, Սխալի մասին հաղորդելու համար կտտացրեք այստեղ.

Մեկնաբանություն, թող ձերը

Թողեք ձեր մեկնաբանությունը

Ձեր էլ. Փոստի հասցեն չի հրապարակվելու: Պահանջվող դաշտերը նշված են *

*

*

  1. Տվյալների համար պատասխանատու ՝ Միգել Անխել Գատոն
  2. Տվյալների նպատակը. Վերահսկել SPAM, մեկնաբանությունների կառավարում:
  3. Օրինականություն. Ձեր համաձայնությունը
  4. Տվյալների հաղորդագրություն. Տվյալները չեն փոխանցվի երրորդ անձանց, բացառությամբ իրավական պարտավորության:
  5. Տվյալների պահպանում. Տվյալների շտեմարան, որը հյուրընկալվում է Occentus Networks (EU) - ում
  6. Իրավունքներ. Timeանկացած պահի կարող եք սահմանափակել, վերականգնել և ջնջել ձեր տեղեկատվությունը:

  1.   Քսավիե Օրտիս ասաց

    Ողջույն, ես կատարում եմ մի նախագիծ, այն, ինչ ես անում եմ, որպեսզի օգտագործեմ 74hc4067- ը 16 ինֆրակարմիր խոչընդոտի սենսորների մուտքի համար, և որ յուրաքանչյուր սենսոր ինձ համար տարբեր ելք է լույս տալիս: Դե, եթե ես կարողանայի դա անել arduino mega- ի միջոցով, բայց ես պետք է օգտագործեմ 50 ինֆրակարմիր տվիչներ, և որ յուրաքանչյուրը միացնի ելք, այսինքն ՝ 50 ելք, ես մտածում եմ օգտագործել մի քանի 744067 սենսորային մուտքերի համար և tlc5940 ելքերի համար, բայց ո՞րն է ծրագրավորման կոդի մեջ, որը ես մի քիչ կորել եմ ՝ նախապես շնորհակալություն ձեր օգնության համար: