آموزش راه اندازی ماژول مالتی پلکسر 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
*/ //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; }

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

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

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

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

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