آموزش راه اندازی ماژول مالتی پلکسر 8 کاناله 74HC4051 با آردوینو

ویژگی های ماژول مالتی پلکسر 8 کاناله 74HC4051

زمانی که تعداد زیادی ورودی­ در یک مدار وجود دارد، می‌توان برای انتخاب یک ورودی در هر زمان از ماژول­‌های مالتی پلکسر استفاده کرد. ماژول مالتی پلکسر آنالوگ 8 کاناله 74HC4051 می‌­تواند برای انتخاب از بین 8 ورودی آنالوگ استفاده شود. برای این منظور 3 پایه S0-2 تعبیه شده‌اند که با دادن مقادیر مناسب به آن­ها، یکی از ورودی­‌های آنالوگ انتخاب شده و در پایه Z به عنوان خروجی قرار می­‌گیرد.

معرفی پایه ها (Pinout) ماژول مالتی پلکسر 8 کاناله 74HC4051

ماژول مالتی پلکسر 8 کاناله 74HC4051 دارای 19 پایه به شرح زیر است:

سمت چپ ماژول:

  • VEE: تغذیه منفی ماژول (می‌­توان آن را وصل نکرد.)
  • VCC: تغذیه ماژول – 5 ولت
  • GND: زمین
  • Z: سیگنال خروجی
  • S0-2: انتخاب یکی از 8 پایه­ ورودی آنالوگ به عنوان سیگنال خروجی نهایی
  • E: پایه Enable (این پایه اصطلاحا Active Low است.)

سمت راست ماژول:

  • VEE: تغذیه منفی ماژول (می‌­توان آن را وصل نکرد.)
  • VCC: تغذیه ماژول – 5 ولت
  • GND: زمین
  • Y0-7: ورودی­‌های آنالوگ
Note

پایه­‌های VEE، VCC و GND در هر دو سمت ماژول به هم دیگر متصلند و نیازی به دادن تغذیه از هر دو طرف مدار نیست.

پین اوت (Pinout) این ماژول را می‌توانید در تصویر زیر مشاهده کنید.

لوازمی که به آن احتیاج دارید

قطعات مورد نیاز

آردوینو UNO R3 × 1
ماژول مالتی پلکسر آنالوگ 8 کاناله 74HC4051 تولید CJMCU × 1
سیم جامپر × 1

نرم افزارهای مورد نیاز

آردوینو IDE

راه اندازی ماژول مالتی پلکسر 8 کاناله 74HC4051

گام اول: سیم بندی

برای کار کردن با این ماژول باید مطابق مدار زیر، ماژول را به آردوینو وصل کنید.

سپس ورودی­‌های آنالوگ دلخواه را باید به پایه‌­های Y0-7 متصل کنید.

برای تست عملکرد مدار و کد، می­‌توان از تقسیم مقاومتی مطابق سیم­بندی زیر استفاده کرد.

گام دوم: کد

کد زیر را روی برد آردوینو آپلود کنید. پس از آپلود کد، پنجره ی Serial Monitor را باز کنید.

 /* 
Modified on Dec 1, 2020
Modified by MehranMaleki from Arduino Examples
https://electropeak.com/learn/
*/


//Mux control pins
int s0 = 4;
int s1 = 5;
int s2 = 6;

//Mux in "Z" pin
int Z_pin = 0;


void setup(){
  pinMode(s0, OUTPUT); 
  pinMode(s1, OUTPUT); 
  pinMode(s2, OUTPUT); 

  digitalWrite(s0, LOW);
  digitalWrite(s1, LOW);
  digitalWrite(s2, LOW);

  Serial.begin(9600);
}


void loop(){

  //Loop through and read all 8 values
  for(int i = 0; i < 8; i ++){
    Serial.print("Value at channel ");
    Serial.print(i);
    Serial.print("is : ");
    Serial.println(readMux(i));
    delay(1000);
  }

}




float readMux(int channel){
  int controlPin[] = {s0, s1, s2};

  int muxChannel[8][3]={
    {0,0,0}, //channel 0
    {1,0,0}, //channel 1
    {0,1,0}, //channel 2
    {1,1,0}, //channel 3
    {0,0,1}, //channel 4
    {1,0,1}, //channel 5
    {0,1,1}, //channel 6
    {1,1,1}, //channel 7
  };

  //loop through the 3 sig
  for(int i = 0; i < 3; i ++){
    digitalWrite(controlPin[i], muxChannel[channel][i]);
  }

  //read the value at the Z pin
  int val = analogRead(Z_pin);

  //return the value
  float voltage = (val * 5.0) / 1024.0;
  return voltage;
}
Arduino

در کد بالا با دادن مقادیر مناسب به پایه­‌های S0-2 در هر ثانیه به ترتیب پایه‌­های Y0-7 را انتخاب کرده و ولتاژ پایه Z را که باید معادل پایه انتخاب شده باشد، در Serial Monitor نمایش می­‌دهیم.

خروجی کد به شکل زیر است.

آموزش های مشابه

Comments (2)

  • حسین اکبری Reply

    سایت شما واقعا عالیه مهندس
    امیدوارم خداوند در این راه شمارا همراهی کند
    و مثل همیشه پر قدرت ادامه دهید
    موفق باشید

    سپتامبر 15, 2022 at 11:04 ب.ظ
    • مهران ملکی Reply

      ممنون از نظر پر از لطف شما.

      اکتبر 28, 2022 at 5:13 ب.ظ

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.