מולטיפקסר: כל מה שאתה צריך לדעת

שבב מרבב

Un מרבב הוא מעגל משולב בעל מספר כניסות ופלט נתונים יחיד. בכך ניתן לבחור מעבר של כניסה אחת בלבד בכדי לתעל אותו ליציאתו. כלומר, תוכלו לבחור מאיזה קלט לקחת את הנתונים או הסיביות שנמצאים בקלט ולהתעלם משאר הקלטים. זה נפוץ מאוד באלקטרוניקה כאשר מספר חיבורים צריכים לחלוק קו או אוטובוס בודדים.

כלומר, על ידי שליטה במולטיפקס שאתה יכול בחר את הקלט המתאים בכל עת. מה שמאפשר שלמרות שיש לך חיבור אחד בלבד, אתה יכול לעבוד עם מספר התקני קלט בו זמנית מבלי שהם יפריעו זה לזה. כמו כן, עליך לדעת כי בדרך כלל נעשה שימוש בדמולטפלקס במקביל למולבב בפרויקטים רבים ...

מהו מרבב?

מרבב

שירותי שילוב אלה נקראים מרבבים הם בדרך כלל לא מורכבים. הם מורכבים מכמה שערי לוגיקה בהתאם לכמות תשומות הנתונים והשליטה שלהם יכולים להגדיל את המורכבות. הם בדרך כלל כוללים 2n כניסות ופלט יחיד, כמו גם קווי בקרה. וכמה מהם יכולים לשמש בשילוב כדי להגדיל את מספר הכרטיסים הזמינים.

אפשר להבין את זה כ בורר. לדוגמא, דמיין שיש לך פשוט מאוד עם שתי כניסות, הפשוטות ביותר שניתן לבנות. במעגל זה יהיה קלט ופלט יחיד. אם הקלטים הם A ו- B, עם קלט הבקרה ניתן לשלוט אם A הוא שמעביר את הערך שלו לפלט S או אם הוא B שעושה את זה. לשם כך, עליך לשנות רק את הערך של קו הבקרה C. לדוגמה, אם C = 0 זה יהיה A ואם C = 1 זה יהיה B.

כפי שתבין, אם יהיו יותר תשומות, יהיה צורך יותר כניסות שליטה לבחירה. למעשה, המולטיפלקס הוא סוג מיוחד של מפענח, עם אות הפעלה לכל שער AND כלול ושער OR בין הפלט לשערי AND. באופן זה ניתן לבחור בקלות.

באשר ליישומים שלה, אתה יכול להשתמש בו להרבה דברים:

  • בורר קלט לחלוק אוטובוס או קו יחיד כשיש לך מספר כניסות.
  • סידור כך שהוא לוקח את הערך של כל אחת מהתשומות שלו לפי הסדר.
  • להעברה מרובת ריבועים באמצעות אותם קווי חיבור עבור נתונים שונים ממכשירים מגוונים. לדוגמא, דמיין שאתה רוצה להשתמש באותו סיכת נתונים של מיקרו-בקר כדי לחבר כמה יציאות מכשיר, אך שהוא יכול לשלוח מידע אחד בלבד בכל פעם ...
  • בצע פונקציות לוגיות וכו '.

סוגי מרבב

תלוי באופן חלוקת השידור, יש סוגים שונים מרבבים או מרבבים:

  • לפי חלוקת תדרים
  • לפי חלוקת זמן
  • לפי חלוקת קוד
  • לפי חלוקה של אֹרֶך גַל

כפי שאתה יכול לדמיין, הם נשלטים על ידי תדר, לפי זמן על ידי שעון, על ידי קוד בינארי ועל ידי אורך גל. אבל כאן אני מתעניין רק בקונבנציונאלי ...

בנוסף לסוגים, כמו עם demultiplexer, אתה יכול למצוא את זה עם פחות או יותר ערוצים 2, 4, 8, 16 וכו ', תלוי מה אתה צריך לפרויקטים שלך בעיצוב DIY.

הבדלים עם demultiplexer

demultiplexer

באלקטרוניקה דיגיטלית יש demultiplexer, מעגל משולב שהוא האנטגוניסט של המולטיפלקס. במקרה זה יהיה קלט מידע אחד בלבד, אך ניתן להעבירו באמצעות הפלטים השונים שלו. במילים אחרות, במקרה זה, יוחלט באמצעות אותות הבקרה אליהם מועברים פלט נתוני הקלט.

Si אתה מחבר demultiplexer לפלט של multiplexer, תוכל לקבל מערכת שימושית מאוד ללמוד כיצד שני המכשירים עובדים.

איפה לקנות?

ריבוי מכפילים

התקנים אלה מיושמים בדרך כלל ב לטבול צ'יפס פשוט מאוד. אתה יכול למצוא אותם במגוון רחב של מותגים ועם מספר כניסות או יציאות במקרה של היותו דמולטפלקסר. בנוסף, ניתן למצוא אותם בקלות במדיות מתמחות שונות או בחנויות מקוונות. אם אתה מעוניין לקנות אחד במחיר טוב, אלה יכולות להיות דוגמאות טובות להתחיל עם הפרויקטים שלך:

אני ממליץ לך לקרוא גליונות הנתונים מהיצרנים שלהם כדי לקבל מושג ברור על שלהם pinout, מכיוון שהם עשויים להשתנות בהתאם ליצרן או לסוג שרכשת.

cd74hc4067

בנוסף, כפי שאתה יכול לראות, ישנם גם מודולים טובים מאוד המאפשרים לך לקבל את שני המכשירים באחד. זה המקרה של ידוע CD74HC4067, מודול קטן עם טכנולוגיית TTL שיכול לעזור לך לעבוד עם 16 הבנלים שלו בצורה דו כיוונית, באמצעות MUX / DEMUX. כלומר, אתה יכול להשתמש בו כסוג של מתג חכם.

לפיכך, הארדואינו שלך יכול לקרוא ולכתוב עד 16 מכשירים שונים עם 5 פינים בלבד, 4 מהם משמשים לשליטה ואחד נוסף לאיסוף האות המיועד לקריאה או כתיבה בהתאם לערוץ שנבחר.

הדבר הטוב בשבב הזה הוא זה עובד עם אותות דיגיטליים ואנלוגיים כאחד, כך שהוא תואם לחיישנים רבים העובדים על שבבים דיגיטליים אנלוגיים ואחרים, כמו גם שפע של אלמנטים אלקטרוניים שונים. זה נותן צדדיות רבה. זו הסיבה שהם ידועים גם כמרחיבי קלט / פלט או מגברי כניסה ופלט ...

אתה יכול אפילו להשתמש בו ל תקשורת דרך היציאה הטורית, אוטובוס ה- I2C או ה- SPI, עליו כבר דיברנו בהזדמנויות אחרות.

כמובן שלפני שתעבדו איתו עליכם לוודא זאת לענות על המתחים והזרמים שמודה במעגל הזה כדי לא לפגוע בו. לדוגמה, במקרה זה הוא יכול לספק עד 20 mA, כמו גם מתח של 2 עד 6 וולט. עם זאת, אם אתה רוצה לעבוד עם זרמים גבוהים יותר אתה יכול להשתמש בממסר או דרך טרנזיסטור.

שילוב עם ארדואינו

ארדואינו עם Bluetooth

דרך אחת יש יותר כניסות בלוח Arduino שלך או יותר יציאות, הוא להשתמש במולטיפקסרים ובדמולטפלקסרים אלה. איתם תימנעו מהצורך לקנות לוח במחיר גבוה יותר שיש בו יותר סיכות, או צורך להשתמש בטריקים אחרים כדי לחבר את כל מה שאתם צריכים.

לדוגמה, אתה יכול להשתמש ב- מודול MUX ו- DEMUX להיות מסוגל להיות שניהם באלמנט אחד, ואז לשלב את זה בקלות בפרויקט שלך עם Arduino. בעזרת CD74HC4067 תוכלו לחבר אותו בקלות רבה, לכן עליכם לעקוב אחר הכללים הבאים:

  • Vcc של שבב MUX / DEMUX עליך לחבר אותו ל- Vcc של Arduino או 5V.
  • GND, הקרקע, אתה חייב לחבר אותו ל- GND של הארדואינו.
  • הפינים המסומנים S0, S1, S2, S3 הם אלה השולטים בערוץ הפעיל, עם ארבעה קלט / פלט דיגיטלי של Arduino, כמו D8, D9, D10 ו- D11.
  • ה- EN מאפשר גם, כך שהוא יעבוד כמולטיפלקס תוכלו לחבר אותו ל- GND של Arduino.
  • ו- SIG הוא אות הפלט שיקבע את הערוץ שנבחר. ניתן לחבר אותו לארדואינו או לכל מכשיר שצריך לקרוא את הפלט. במקרה זה חיברתי אותו ל- A0 כדי להשיג את הערכים מהארדואינו עצמו.
  • בקצה השני של המודול יהיו לכם את הקלטים במקרה זה, שהם C0-C10 שתוכלו לחבר למכשירים שלכם.

לאחר החיבור, קוד הארדואינו יכול להיות פשוט. ה שרטוט IDE של Arduino כמולטיפלקס זה יכול להיות הבא (קוד זה יכבה רק ובערוצים שלהם בהתאמה, אך תוכל לשנות אותו כדי להפוך את הפרויקט הרצוי לך):

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. אחראי לנתונים: מיגל אנחל גטון
  2. מטרת הנתונים: בקרת ספאם, ניהול תגובות.
  3. לגיטימציה: הסכמתך
  4. מסירת הנתונים: הנתונים לא יועברו לצדדים שלישיים אלא בהתחייבות חוקית.
  5. אחסון נתונים: מסד נתונים המתארח על ידי Occentus Networks (EU)
  6. זכויות: בכל עת תוכל להגביל, לשחזר ולמחוק את המידע שלך.

  1.   חאווייר אורטיז דיג'ו

    שלום, אני עושה פרויקט, הדבר שאני עושה כדי להשתמש ב- 74hc4067 עבור כניסות של 16 חיישני מכשול אינפרא אדום, ושכל חיישן מדליק אותי על פלט אחר. ובכן, אם הייתי יכול לעשות את זה עם מגה הארדואינו אבל אני צריך להשתמש ב -50 חיישני אינפרא אדום ושכל אחד מהם מפעיל פלט, כלומר 50 יציאות, אני חושב להשתמש בכמה 744067 עבור כניסות חיישנים ו- tlc5940 ליציאות, אבל במה קוד התכנות אני קצת אבוד, תודה מראש על עזרתך.