본문 바로가기

이론/AVR

무이메이커스_[arduino] 아두이노 핀 부족! 멀티플렉서를 이용해 하나의 핀으로 여러개의 센서값 받기 - (4051BE, MUX)

안녕하세요 헬스케어 제품 개발회사 허니컴의 무이메이커스 입니다.

오늘은 멀티플렉서를 이용해 아두이노 하나의 핀으로 여러개의 센서값을 받아와 보도록 하겠습니다.

< 문제점 >

아두이노 UNO에는 14개의 디지털 I/O핀과, 6개의 아날로그 I/O핀이 있습니다.

아두이노에 많은 부품과 센서를 사용할 때에는 핀이 부족할 수 있습니다. 이런경우 아두이노 MEGA보드를 사용하는 방법도 있지만 여러개의 센서를 아두이노 하나의 핀을 이용하여 센서값을 받아올 수도 있습니다.

그러므로 때 멀티플랙서(CD4051BE)를 사용하여 가변저항 3개의 값을 아두이노 하나의 핀을 사용해 받아오겠습니다.

 

 

< 멀티플렉서(4051BE) - multiplexer, mux >

멀티플렉서(mux)는 여러개의 아날로그/디지털 입력 신호 중 하나를 선택하여 선택된 하나의 신호만을 출력하는 장치입니다.

<CD4051BE pinouts>

 

VDD : 전원(3~15V)

Vss : GND

INH : HIGH일 때 모든 핀 사용 불가능 / LOW일 때 모든 핀 사용가능 => GND에 연결

COM OUT/IN : 출력핀 => 아두이노에 연결

CHANNELS IN/OUT (0~7) : 입력핀 => 센서연결

ABC : 입력 0~7중에 어떤 신호를 받을것인가를 선택 (아래사진 참고)

 

< 입력신호 선택을 위한 진리표 - ABC값을 지정해 0~7입력핀중 선택 >

 

< 아두이노 멀티플렉서 회로도 - 아두이노 핀부족 대처법 >

사용부품 : 가변저항 3개, 멀티플렉서(CD4051BE) 1개)

 

 

 

 

< 아두이노 멀티플렉서 연결방법 - 아두이노 핀부족 대처법 >

아두이노

가변저항

멀티플렉서(MUX, 4051BE)

5V

각 가변저항의 한쪽 끝 핀

VDD

GND

각 가변저항의 나머니 끝 핀

INH, VEE, Vss

A0

COM OUT/IN

각 가변저항의 가운데 핀

CHANNELS IN/OUT 중 0,1,2

D8

A

D9

B

D10

C

 

 

 

< 아두이노 멀티플렉서 소스코드 - 아두이노 핀부족 대처법 >

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

int sig=A0; //출력핀

int A=8, B=9, C=10//입력신호중 하나를 선택할 때 사용

int sensor1, sensor2, snesor3;

 

void setup() {

 

pinMode(sig,INPUT);

pinMode(A,OUTPUT);

pinMode(B,OUTPUT);

pinMode(C, OUTPUT);

Serial.begin(9600);

 

}

 

void loop() {

 

digitalWrite(C,LOW); digitalWrite(B,LOW); digitalWrite(A,LOW); //채널 0 선택

sensor1=analogRead(sig);

Serial.print("sensor1 : "); Serial.print(sensor1);

 

digitalWrite(C,LOW); digitalWrite(B,LOW); digitalWrite(A,HIGH); //채널 1 선택

sensor2=analogRead(sig);

Serial.print("   "); Serial.print("sensor2 : "); Serial.print(sensor2);

 

digitalWrite(C,LOW); digitalWrite(B,HIGH); digitalWrite(A,LOW); //채널 2 선택

snesor3=analogRead(sig);

Serial.print("   "); Serial.print("sensor3 : "); Serial.println(snesor3);

 

delay(200);

}

Colored by Color Scripter

 

 

 

< 아두이노 멀티플렉서 동작영상&설명 - 아두이노 핀부족 대처법 >

 

0번채널 선택 시

: 가장왼쪽의 가변저항의 출력이 sensor1에 출력됩니다.

(왼쪽 가변저항 동작 시 시리얼모니터 sensor1 값변화 확인)

1번채널 선택 시

: 가운데의 가변저항의 출력이 sensor2에 출력됩니다.

(가운데 가변저항 동작 시 시리얼모니터 sensor2 값변화 확인)

2번채널 선택 시

: 가장오른쪽의 가변저항의 출력이 sensor3에 출력됩니다.

(오른쪽 가변저항 동작 시 시리얼모니터 sensor3 값변화 확인)

 

 

 

 

 

 

 

.....................................................................................................................................................

시제품 제작 문의