Multiplexer: ทุกสิ่งที่คุณจำเป็นต้องรู้

ชิปมัลติเพล็กเซอร์

Un มัลติเพล็กเซอร์ เป็นวงจรรวมที่มีอินพุตหลายตัวและเอาต์พุตข้อมูลเดียว ด้วยวิธีนี้จึงเป็นไปได้ที่จะเลือกทางเข้าเพียงทางเดียวเพื่อส่งไปยังทางออก นั่นคือคุณสามารถเลือกจากอินพุตที่จะรับข้อมูลหรือบิตที่อยู่ที่อินพุตและละเว้นอินพุตที่เหลือ นี่เป็นเรื่องปกติมากในอุปกรณ์อิเล็กทรอนิกส์เมื่อการเชื่อมต่อหลายสายต้องใช้สายเดี่ยวหรือบัสร่วมกัน

นั่นคือโดยการควบคุมมัลติเพล็กเซอร์คุณสามารถทำได้ เลือกอินพุตที่เหมาะสมตลอดเวลา. สิ่งที่ทำให้เป็นไปได้ว่าแม้จะมีการเชื่อมต่อเพียงครั้งเดียว แต่คุณสามารถทำงานกับอุปกรณ์อินพุตหลายตัวพร้อมกันได้โดยที่อุปกรณ์เหล่านี้ไม่รบกวนกัน นอกจากนี้คุณควรทราบว่าโดยทั่วไปแล้ว demultiplexer จะใช้ร่วมกับมัลติเพล็กเซอร์ในหลาย ๆ โครงการ ...

มัลติเพล็กเซอร์คืออะไร?

มัลติเพล็กเซอร์

บริการแบบผสมผสานเหล่านี้เรียกว่า มัลติเพล็กเซอร์ พวกเขามักจะไม่ซับซ้อน พวกเขาประกอบด้วยลอจิกเกตสองสามประตูขึ้นอยู่กับจำนวนอินพุตข้อมูลและการควบคุมอาจเพิ่มความซับซ้อนได้ ซึ่งมักจะรวมถึง 2n อินพุตและเอาต์พุตเดียวเช่นเดียวกับสายควบคุม และหลายใบสามารถใช้ร่วมกันเพื่อเพิ่มจำนวนตั๋วที่มีอยู่

สามารถเข้าใจได้ว่า ตัวเลือก ตัวอย่างเช่นสมมติว่าคุณมีอินพุตที่เรียบง่ายมากที่มีอินพุตสองอินพุตแบบที่ง่ายที่สุดที่สามารถสร้าง วงจรนั้นจะมีอินพุตและเอาต์พุตควบคุมเพียงช่องเดียว ถ้าอินพุตเป็น A และ B ด้วยอินพุตควบคุมจะเป็นไปได้ที่จะควบคุมว่า A เป็นใครส่งผ่านค่าไปยังเอาต์พุต S หรือถ้าเป็น B ใครเป็นผู้ทำ ในการทำเช่นนี้คุณต้องเปลี่ยนค่าของเส้นควบคุม C เช่นถ้า C = 0 มันจะเป็น A และถ้า C = 1 มันจะเป็น B

ตามที่คุณจะเข้าใจหากมีอินพุตมากกว่านี้จำเป็นต้องมีมากขึ้น อินพุตควบคุม สำหรับการเลือก ในความเป็นจริงมัลติเพล็กเซอร์เป็นตัวถอดรหัสชนิดพิเศษที่มีสัญญาณเปิดใช้งานสำหรับประตู AND แต่ละอันที่รวมอยู่และประตูหรือประตูระหว่างเอาท์พุตและประตู AND วิธีนั้นสามารถเลือกได้อย่างง่ายดาย

สำหรับแอปพลิเคชันคุณสามารถใช้งานได้ สำหรับสิ่งต่างๆมากมาย:

  • ตัวเลือกอินพุตเพื่อแชร์บัสหรือสายเดียวเมื่อคุณมีอินพุตหลายตัว
  • Serializer เพื่อให้รับค่าของแต่ละอินพุตตามลำดับ
  • สำหรับการส่งแบบมัลติเพล็กซ์โดยใช้สายเชื่อมต่อเดียวกันสำหรับข้อมูลต่างๆจากอุปกรณ์ต่างๆ ตัวอย่างเช่นสมมติว่าคุณต้องการใช้พินข้อมูลเดียวกันของไมโครคอนโทรลเลอร์เพื่อเชื่อมต่อเอาต์พุตอุปกรณ์หลายตัว แต่สามารถส่งข้อมูลได้ทีละรายการเท่านั้น ...
  • ทำหน้าที่ทางตรรกะ ฯลฯ

ประเภทมัลติเพล็กเซอร์

ขึ้นอยู่กับวิธีการแบ่งการส่งสัญญาณมี หลากหลายชนิด มัลติเพล็กเซอร์หรือมัลติเพล็กซ์:

  • ตามการแบ่งความถี่
  • ตามการแบ่งเวลา
  • โดยการแบ่งรหัส
  • ตามการแบ่ง ความยาวคลื่น

อย่างที่คุณสามารถจินตนาการได้ว่าพวกมันถูกควบคุมโดยความถี่ตามเวลาโดยนาฬิกาโดยรหัสไบนารีและตามความยาวคลื่น แต่ที่นี่ฉันสนใจเฉพาะแบบธรรมดา ...

นอกเหนือจากประเภทเช่นเดียวกับตัวแยกสัญญาณแล้วคุณสามารถค้นหาได้ด้วย ช่องมากหรือน้อย 2, 4, 8, 16 เป็นต้นขึ้นอยู่กับสิ่งที่คุณต้องการสำหรับโครงการ DIY ของคุณ

ความแตกต่างกับ demultiplexer

demultiplexer

ในอุปกรณ์อิเล็กทรอนิกส์ดิจิทัลมี demultiplexerวงจรผสมที่เป็นตัวต่อต้านของมัลติเพล็กเซอร์ ในกรณีนี้จะมีการป้อนข้อมูลเพียงช่องเดียว แต่สามารถส่งผ่านเอาต์พุตต่างๆได้ กล่าวอีกนัยหนึ่งในกรณีนี้จะถูกตัดสินโดยใช้สัญญาณควบคุมที่ส่งออกข้อมูลอินพุตที่ส่งออก

Si คุณเชื่อมต่อตัวแยกสัญญาณเข้ากับเอาต์พุตของมัลติเพล็กเซอร์คุณสามารถมีระบบที่มีประโยชน์มากสำหรับการเรียนรู้ว่าอุปกรณ์ทั้งสองทำงานอย่างไร

ซื้อที่ไหน?

เครื่องส่งสัญญาณมัลติเพล็กเซอร์

โดยปกติอุปกรณ์เหล่านี้จะใช้งานในรูปแบบ จุ่มชิป ง่ายมาก. คุณสามารถพบได้ในแบรนด์ต่างๆมากมายและมีอินพุตหรือเอาต์พุตจำนวนมากในกรณีที่เป็นตัวแยกสัญญาณ นอกจากนี้ยังพบได้ง่ายในสื่อเฉพาะทางต่างๆหรือร้านค้าออนไลน์ หากคุณสนใจที่จะซื้อในราคาที่ดีสิ่งเหล่านี้อาจเป็นตัวอย่างที่ดีในการเริ่มต้นโครงการของคุณ:

ฉันแนะนำให้คุณอ่าน เอกสารข้อมูล จากผู้ผลิตเพื่อให้ได้แนวคิดที่ชัดเจน pinoutเนื่องจากอาจแตกต่างกันไปขึ้นอยู่กับผู้ผลิตหรือประเภทที่คุณซื้อ

cd74hc4067

นอกจากนี้อย่างที่คุณเห็นยังมีโมดูลที่ดีมากที่ช่วยให้คุณมีอุปกรณ์ทั้งสองในเครื่องเดียว มันเป็นกรณีของ รู้จัก CD74HC4067โมดูลขนาดเล็กพร้อมเทคโนโลยี TTL ที่สามารถช่วยให้คุณทำงานกับ 16 ดานัลในแบบสองทิศทางโดยมี MUX / DEMUX นั่นคือคุณสามารถใช้มันเป็นสวิตช์อัจฉริยะชนิดหนึ่ง

ดังนั้น Arduino ของคุณสามารถอ่านและเขียนได้สูงสุด 16 อุปกรณ์ที่แตกต่างกัน ด้วยพิน 5 พินโดยใช้ 4 พินสำหรับควบคุมและอีกอันเพื่อรวบรวมสัญญาณที่ตั้งใจจะอ่านหรือเขียนตามช่องสัญญาณที่เลือก

สิ่งที่ดีเกี่ยวกับชิปนี้ก็คือ ใช้งานได้กับทั้งสัญญาณดิจิตอลและอนาล็อกทำให้เข้ากันได้กับเซ็นเซอร์จำนวนมากที่ทำงานบนชิปอนาล็อกและดิจิทัลอื่น ๆ รวมถึงองค์ประกอบอิเล็กทรอนิกส์ที่แตกต่างกันมากมาย มันให้ความเก่งกาจ นั่นคือเหตุผลที่พวกเขาเรียกอีกอย่างว่าตัวขยาย I / O หรือเครื่องขยายสัญญาณอินพุตและเอาต์พุต ...

คุณยังสามารถใช้สำหรับ การสื่อสารผ่านพอร์ตอนุกรม, บัส I2C หรือ SPI ซึ่งเราได้พูดไปแล้วในโอกาสอื่น ๆ

แน่นอนก่อนที่จะทำงานกับเขาคุณต้องแน่ใจว่า ตอบสนองแรงดันไฟฟ้าและกระแส ที่ยอมรับวงจรนี้เพื่อไม่ให้เกิดความเสียหาย ตัวอย่างเช่นในกรณีนี้สามารถให้ได้ถึง 20 mA และแรงดันไฟฟ้า 2 ถึง 6v อย่างไรก็ตามหากคุณต้องการทำงานกับกระแสที่สูงขึ้น คุณสามารถใช้รีเลย์ หรือผ่านทรานซิสเตอร์

บูรณาการกับ Arduino

Arduino พร้อมบลูทู ธ

รูปแบบของ มีอินพุตเพิ่มเติมบนบอร์ด Arduino ของคุณหรือเอาต์พุตเพิ่มเติมคือการใช้มัลติเพล็กเซอร์และตัวแยกสัญญาณ ด้วยพวกเขาคุณจะหลีกเลี่ยงไม่ต้องซื้อบอร์ดราคาสูงกว่าที่มีพินมากขึ้นหรือต้องใช้เทคนิคอื่น ๆ เพื่อเชื่อมต่อทุกสิ่งที่คุณต้องการ

ตัวอย่างเช่นคุณสามารถใช้ไฟล์ โมดูล MUX และ DEMUX เพื่อให้สามารถมีทั้งสององค์ประกอบในองค์ประกอบเดียวจากนั้นรวมเข้ากับโครงการของคุณด้วย Arduino ได้ง่ายๆ ด้วย CD74HC4067 คุณสามารถเชื่อมต่อได้อย่างง่ายดายดังนั้นคุณต้องปฏิบัติตามกฎเหล่านี้:

  • Vcc ของชิป MUX / DEMUX คุณต้องเชื่อมต่อกับ Vcc ของ Arduino หรือ 5V
  • GND กราวด์คุณต้องเชื่อมต่อกับ GND ของ Arduino
  • หมุดที่มีเครื่องหมาย S0, S1, S2, S3 เป็นหมุดที่ควบคุมช่องสัญญาณที่ใช้งานอยู่โดยมี Arduino Digital I / O สี่ตัวเช่น D8, D9, D10 และ D11
  • นอกจากนี้ EN ยังเปิดใช้งานเพื่อให้ทำงานเป็นมัลติเพล็กเซอร์ที่คุณสามารถเชื่อมต่อกับ GND ของ Arduino
  • และ 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 จะเป็นอินพุต ในกรณีที่คุณต้องการ ใช้เป็นตัวแยกสัญญาณรหัสจะเปลี่ยนไปในลักษณะนี้:

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. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา

  1.   ซาเวียร์ออร์ติซ dijo

    สวัสดีฉันกำลังทำโปรเจ็กต์สิ่งที่ฉันทำในการใช้ 74hc4067 สำหรับอินพุตของเซ็นเซอร์สิ่งกีดขวางอินฟราเรด 16 ตัวและเซ็นเซอร์แต่ละตัวจะทำให้ฉันได้รับเอาต์พุตที่แตกต่างกัน ถ้าฉันสามารถทำได้กับ arduino mega แต่ฉันต้องใช้เซ็นเซอร์อินฟราเรด 50 ตัวและแต่ละตัวจะเปิดเอาต์พุตนั่นคือ 50 เอาต์พุตฉันกำลังคิดว่าจะใช้ 744067 หลายตัวสำหรับอินพุตเซ็นเซอร์และ tlc5940 สำหรับเอาต์พุต แต่รหัสการเขียนโปรแกรมคืออะไรฉันหายไปเล็กน้อยขอบคุณล่วงหน้าสำหรับความช่วยเหลือ