아두이노 기초 : 풀업저항과 풀다운저항 (ft. 스위치)

메모/Arduino

아두이노 기초 : 풀업저항과 풀다운저항 (ft. 스위치)

해리누나 2023. 2. 28. 23:43
반응형

시작전에 함수 하나를 알고 가자.

저번에는 analogWrite 을 쓰느라 pinMode 함수를 이용하지 않았는데

이번에 digital 핀의 사용이 필요하니 pinMode 함수를 써보도록 하자.

( 디지털 핀 사용시 pinMode() 를 통해 해당 핀의 입출력을 설정하는데 analogWrite() 함수 사용시 핀모드 설정은 굳이 필요하지 않다. analogWrite() 함수 그 자체에 이미 pinMode 함수가 내장되어 있기 때문 )

 

 

PIN 모드

 

PIN 모드에서는 핀을 입력으로 쓸 것인지, 출력으로 쓸 것인지를 설정해 줄 수 있는 함수다.

PIN 모드에는 총 3가지의 모드가 존재한다.

 

pinMode(설정할 핀의 번호, 설정할 모드);
pinMode(pin, INPUT); pin을 입력으로 설정
pinMode(pin, OUTPUT); pin을 출력으로 설정
pinMode(pin, INPUT_PULLUP); 내부의 풀업저항을 활성화

 

 

푸쉬 버튼 스위치 (Push Button Switch)

스위치 구조

A 부터 D 까지의 4개의 단자는 스위치를 회로와 연결하는 일종의 다리 역할을 한다. A 단자와 D 단자, B 단자와 C 단자는 서로 연결이 되어있으니 단자연결은 대각성 방향으로 해야한다. 스위치의 버튼을 누르면  저 중앙에 있는 회로도가 연결이 되서 전류가 흐르게 되고 버튼을 누르지 않는 상태에선 회로도 연결이 띠어진다.

 

 

플로팅(Floating) 상태

 

13번 핀과 5V를 스위치를 통해 연결한다면, 스위치를 눌렀을 때는 전류가 13펀 핀으로 흘러 1을 출력하고, 스위치를 누르지 않았을 때에는 전류가 흐르지 않아 0의 값이 출력될 것이라 생각할 것이다. 하지만 그렇지 않다.

 

 

 

오른쪽 처럼 스위치가 닫혀있을 경우 5V의 전압이 입력되겠지만 왼쪽처럼 스위치가 열려있는 경우, 입력값이 0V 인지 1V인지 뭔지 알수 없는 애매한 상태가 되어버리는데 이를 연결되지 않아 떠있다는 의미로 플로팅 (Floating) 이라 부른다고 한다. 실제  스위치가 열려있을 때와 출력값들을 보면, 전류가 정말 흐르지 않고 있는지, 흐르고 있는지 예측할 수 없음이 확인된다. ( 확인은 이곳에서..=> https://m.blog.naver.com/sisosw/221668811609 )

 

이 플로팅 현상을 해결하기 위해 전압값이 왔다갔다 하지 않도록 LOW 또는 HIGH 값으로 고정을 시켜줘야 하는데, 여기엔 두가지 방법이 있다.

 

 

 

1. 풀업(Pull Up) 저항

 

Pull_Up

PULL UP저항은 전압을 HIGH에 고정시켜주는 저항으로, 위 그림처럼 저항이 VCC와 입력단 사이에 위치해있으며, 입력단과 GND 사이 회로 결선 상태에 따라 그 값이 달라진다. 스위치가 열려있는 상태인 평소에는 INPUT에 5V (HIGH) 가 입력되지만 스위치를 누르고 있는 상태에선 전류가 전부 GND로 흐르게 되어 0V (LOW) 가 입력된다.  (풀업 저항에는 보통 10kΩ 이 사용된다고 한다.)

 

 

2. 풀다운(Pull Down) 저항

 

Pull_Down

PULL DOWN저항은 전압을 LOW에 고정시켜주는 저항으로, 위 그림처럼 저항이 GND와 입력단 사이에 위치해있으며, 입력단과 VCC 사이 회로 결선 상태에 따라 그 값이 달라진다. 스위치가 열려있는 상태인 평소에는 입력이 VCC가 아닌 GND와 연결이 되어있어 0V지만 스위치를 누르면 VCC에서 나오던 전류가 GND로 가려다 저항으로 인하여 일부 전류가 입력단으로 입력되 HIGH 값을 가지게 된다.

 

 

 

정리하자면 요런 느낌...

 

 

 

 

 

 

 

 

출처

스위치 구도 사진 : https://kocoafab.cc/tutorial/view/753

버튼 눌림 닫힘 사진 : https://alwayswakeup.tistory.com/23

 

 

 

공부에 도움 준 곳들:

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=nkkh159&logNo=220509863314 

https://blog.naver.com/jamduino/220820935325

https://alwayswakeup.tistory.com/23

https://m.blog.naver.com/sisosw/221668811609

 

 

 

 

 

728x90
반응형