ویژگی های ماژول مالتی پلکسر 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) این ماژول را میتوانید در تصویر زیر مشاهده کنید.
لوازمی که به آن احتیاج دارید
قطعات مورد نیاز
نرم افزارهای مورد نیاز
راه اندازی ماژول مالتی پلکسر 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;
}
در کد بالا با دادن مقادیر مناسب به پایههای S0-2 در هر ثانیه به ترتیب پایههای Y0-7 را انتخاب کرده و ولتاژ پایه Z را که باید معادل پایه انتخاب شده باشد، در Serial Monitor نمایش میدهیم.
خروجی کد به شکل زیر است.

Comments (2)
سایت شما واقعا عالیه مهندس
امیدوارم خداوند در این راه شمارا همراهی کند
و مثل همیشه پر قدرت ادامه دهید
موفق باشید
ممنون از نظر پر از لطف شما.