آموزش راه اندازی ماژول مالتی پلکسر 16 کاناله CD74HC4067 با آردوینو

ویژگی های ماژول مالتی پلکسر 16 کاناله CD74HC4067

از ماژول مالتی پلکسر 16 کاناله CD74HC4067 می­‌توان برای زمانی که تعداد زیادی ورودی­ آنالوگ در یک مدار وجود دارد، استفاده کرد. در این حالت نیاز است در هر زمان یکی از آن ورودی­‌ها انتخاب شده و پردازش شوند. از این مالتی پلکسر می‌­توان برای انتخاب از بین 16 ورودی آنالوگ استفاده کرد. برای این منظور 4 پایه S0-3 تعبیه شده‌اند که با دادن مقادیر مناسب به آن­‌ها یکی از ورودی­‌های آنالوگ انتخاب شده و در پایه SIG به عنوان خروجی قرار می‌­گیرد.

معرفی پایه ها (Pinout) ماژول مالتی پلکسر 16 کاناله CD74HC4067

ماژول مالتی پلکسر 16 کاناله CD74HC4067 دارای 24 پایه به شرح زیر است:

  • VCC: تغذیه ماژول –5 ولت
  • GND: زمین
  • EN: پایه Enable (این پایه اصطلاحا Active Low است.)
  • S0-3: انتخاب یکی از 16 پایه­ ورودی آنالوگ به عنوان سیگنال خروجی نهایی
  • C0-15: ورودی­‌های آنالوگ
  • SIG: سیگنال خروجی

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

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

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

آردوینو UNO R3 × 1
ماژول مالتی پلکسر 16 کاناله CD74HC4067 آنالوگ/دیجیتال × 1
سیم جامپر × 1

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

آردوینو IDE

راه اندازی ماژول مالتی پلکسر 16 کاناله CD74HC4067

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

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

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

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

گام دوم: کد

مدار تقسیم مقاومتی را مطابق تصویر فوق ببندید. کد زیر را روی برد آردوینو آپلود کنید. پس از آپلود کد، پنجره ی Serial Monitor را باز کنید.

 /* 
Modified on Nov 28, 2020
Modified by MehranMaleki from Arduino Examples
Home<iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted" style="position: absolute; clip: rect(1px, 1px, 1px, 1px);" title="&#8220;Home&#8221; &#8212; Electropeak" src="https://electropeak.com/learn/embed/#?secret=W8I209VfY6" data-secret="W8I209VfY6" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
*/


//Mux control pins
int s0 = 8;
int s1 = 9;
int s2 = 10;
int s3 = 11;

//Mux in "SIG" pin
int SIG_pin = 0;


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

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

  Serial.begin(9600);
}


void loop(){

  //Loop through and read all 16 values
  for(int i = 0; i < 16; 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, s3};

  int muxChannel[16][4]={
    {0,0,0,0}, //channel 0
    {1,0,0,0}, //channel 1
    {0,1,0,0}, //channel 2
    {1,1,0,0}, //channel 3
    {0,0,1,0}, //channel 4
    {1,0,1,0}, //channel 5
    {0,1,1,0}, //channel 6
    {1,1,1,0}, //channel 7
    {0,0,0,1}, //channel 8
    {1,0,0,1}, //channel 9
    {0,1,0,1}, //channel 10
    {1,1,0,1}, //channel 11
    {0,0,1,1}, //channel 12
    {1,0,1,1}, //channel 13
    {0,1,1,1}, //channel 14
    {1,1,1,1}  //channel 15
  };

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

  //read the value at the SIG pin
  int val = analogRead(SIG_pin);

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

در کد بالا با دادن مقادیر مناسب به پایه­‌های S0-3 در هر ثانیه به ترتیب پایه‌­های C0-15 را انتخاب کرده و ولتاژ پایه SIG را که باید معادل پایه انتخاب شده باشد، در Serial Monitor نمایش می‌­دهیم.

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

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

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

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